Сделай сам на Delphi: Визуализационный плагин к Winamp | Программирование на Delphi и не только

Реклама на сайте

Душевые кабины jacuzzi. Душевые кабины jacuzzi.
Предлагаем производство теплиц для цветов в Москве от Glass-House.

Почитайте!

Нас читают

Статьи о программировании и не только

Mail.Ru

Rambler's Top100

Programming Blogs - BlogCatalog Blog Directory

Реклама на сайте

Качественный вариант купить квартиру в москве через агентство недвижимости.

Сделай сам на Delphi: Визуализационный плагин к Winamp

30.03.2008 от Иван Ширко

Страница: 1 2 3 4 5 6

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

Страница: 1 2 3 4 5 6

Рубрики: Delphi, Winamp, Сделай сам |

Комментарии (14)

  1. IVAn sCm пишет:

    kRUTO!!! aftoru respeKt!!! DAVNO ISkaL TAKoE

  2. Dosha пишет:

    Спасибо за модули. В выходные попробую разобраться подробнее

  3. Фанат пишет:

    Отлично написано

  4. Иван пишет:

    Статья очень пригодилась, все просто и понятно.

    Огромное спасибо автору!:)

  5. Zveryoga пишет:

    Люблю когда по сути, мне понравилось.

  6. hitzinger пишет:

    Благодарю, очень полезная вещь

  7. help пишет:

    У меня коряво получается, но все равно спасибо.

  8. Коля пишет:

    У меня не вышло(((

  9. Гриша пишет:

    Спасибо попробую.

  10. Виталий пишет:

    Спасибо большое!!! Одно но : в 2 плагине в коде нужно заменить “*********
    keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0);
    //key release
    *****”
    на
    “*********
    keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0) else
    //key release
    *****”. Иначе просто все лампочки всегда выключаються.

  11. Иван Ширко пишет:

    >>Виталий

    Спасибо!

  12. dfm пишет:

    хм…интересно..спасибо за идею, давненько хотел что-либо подобное попробовать…

  13. uniforgot пишет:

    Отлично я нашла что искала:)

  14. dpath пишет:

    Класс, получилось :) спасибо.

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.