Сделай сам на Delphi: Визуализационный плагин к Winamp
30.03.2008 от Иван Ширкоprocedure SetLock(N: Byte; State: Boolean);
var
KeyState: TKeyboardState;
c: Byte;
begin
case N of
0: c := VK_NUMLOCK;
1: c := VK_CAPITAL;
2: c := VK_SCROLL;
end;
GetKeyboardState(KeyState);
if (State and (not((KeyState[c] and 1) = 1)) or ((not State) and ((KeyState[c] and 1) = 1))) then
//key press
keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0);
//key release
keybd_event( c, $45, (KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP), 0);
end;
//возвращает указатель на нужный модуль
function getModule(which: integer): PwinampVisModule; cdecl;
begin
case which of
0: result := @mod1;
else result := nil
end;
end;
//передача заголовка плагина Winamp'у
function winampVisGetHeader: PwinampVisHeader; cdecl;
begin
result := @hdr;
end;
//эта процедура вызывается при нажатии на кнопку "Конфигурация"
procedure config( this_mod: PwinampVisModule ); cdecl;
begin
MessageBox(this_mod.hwndParent, 'Автор Иван Ширко (ishyrko@gmail.com)'+#13+' http://delphiblog.ru', 'Лампочки на клавиатуре', MB_OK)
end;
//инициализация плагина, если всё нормально, то должны вернуть 0
function init( this_mod: PwinampVisModule ): integer; cdecl;
begin
result:=0;
end;
//именно эта функция заставляет лампочки мигать
function render(this_mod: PwinampVisModule): integer; cdecl;
begin
//в зависимости от уровня звука гасим\зажигаем
//соответствующие лампочки
if (this_mod.spectrumData[0,1] > 40) then
SetLock(0, True)
else
SetLock(0, False);
if (this_mod.spectrumData[0,5] > 40) then
Рубрики: Delphi, Winamp, Сделай сам |
02.04.2008 в 05:02
kRUTO!!! aftoru respeKt!!! DAVNO ISkaL TAKoE
06.06.2008 в 12:13
Спасибо за модули. В выходные попробую разобраться подробнее
16.07.2008 в 09:25
Отлично написано
14.08.2008 в 20:56
Статья очень пригодилась, все просто и понятно.
Огромное спасибо автору!:)
21.08.2008 в 13:06
Люблю когда по сути, мне понравилось.
10.09.2008 в 11:04
Благодарю, очень полезная вещь
13.09.2008 в 14:58
У меня коряво получается, но все равно спасибо.
14.09.2008 в 06:34
У меня не вышло(((
19.10.2008 в 07:15
Спасибо попробую.
22.10.2008 в 10:24
Спасибо большое!!! Одно но : в 2 плагине в коде нужно заменить “*********
keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0);
//key release
*****”
на
“*********
keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0) else
//key release
*****”. Иначе просто все лампочки всегда выключаються.
22.10.2008 в 10:48
>>Виталий
Спасибо!
28.09.2009 в 08:03
хм…интересно..спасибо за идею, давненько хотел что-либо подобное попробовать…
16.10.2009 в 01:02
Отлично я нашла что искала:)
28.07.2010 в 06:38
Класс, получилось
спасибо.