AIMP Forum

AIMP для Windows => Дополнения (Plugins / Skins) => Разработка => Тема начата: gr1m от Марта 12, 2010, 16:13:34

Название: Текущая тема в статусе Вконтакте
Отправлено: gr1m от Марта 12, 2010, 16:13:34
Плагин пишется мной под Winamp на Delphi. Но подходит и для AIMP. Версия пока тестовая. Будет много переписанного кода ибо мой основной язык программирования php и за дельфой я не работал уже так года 1,5...
Ссылка на ресурс: http://vkstat.gr1m.ru
и собственно ссылка на скачивание: http://www.gr1m.ru/uploads/gen_vkstatus_012.rar

Собственно имеется проблема. В последней версии AIMP 2.6.551, название трэка просто не отправляется в статус. Для поиска проигрывателя используется findwindow('Winamp v1.x', nil); и собственно оттуда выдирается название трэка.
А теперь момент: со старыми версиями - все работает на ура... В новой версии работает если только параллельно запустить окно Winamp'а...
Может быть кто-то поможет с этой проблемой?
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: bescheidener от Марта 12, 2010, 16:29:49
Ну... надо искать не 'Winamp v1.x', а 'AIMP2' наверное.
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: gr1m от Марта 12, 2010, 16:51:30
Подсмотрел в WinSpy... Там оставлен Winamp v1.x, похоже для совместимости с плагинами Winamp
Прилагаю скриншот:
(http://www.gr1m.ru/uploads/thumbs/thumb_spyview.jpg) (http://www.gr1m.ru/uploads/spyview.jpg)

Лично мне кажется что сломали что-то в самом AIMP'е этой версии... Потому что в предыдущих все работает.
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: bescheidener от Марта 12, 2010, 17:13:00
У меня вот это работает:
HWND h=FindWindow("Winamp v1.x",NULL);
char s[256];
int slength;
slength = GetWindowText(h, s, 256);
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: gr1m от Марта 12, 2010, 17:26:06
Вот собственно говоря что у меня написано на дельфе...
function tread:boolean;
  var
    buff:string;
    amp:HWND;
  begin
    amp:=findwindow('Winamp v1.x', nil);
    while true do begin
      sleep(updateTime*1000);
      if buff <> GetText(amp) then
        begin
          buff:=GetText(amp);
          update(UTF8Encode(parse(prefix+buff)));
        end;
    end;
  end;
prefix - префикс статуса, указывается в морде плагина, updateTime - время задержки обновления статуса тоже в морде статуса...
Вот что тут не так?
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: bescheidener от Марта 12, 2010, 17:40:55
А что это за GetText. По-моему в WinAPI GetWindowText

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Название: Re: Текущая тема в статусе Вконтакте
Отправлено: gr1m от Марта 12, 2010, 17:51:16
Вот функция GetText

function GetText(hEdit: HWND): String;
  var
    buffer: array[0..1024] of Char;
    buf1:string;
  begin
    SendMessage(hEdit, WM_GETTEXT, SizeOf(buffer), Integer(@buffer));
    buf1:=copy(buffer,pos('.',buffer)+1,pos(' - Winamp',buffer)-(pos('.',buffer)+1));
    Result := buf1;
  end;
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: bescheidener от Марта 12, 2010, 18:16:53
А в Delphi "Nil" или "nil" или без разницы?
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: Artem от Марта 12, 2010, 18:22:06
Без разницы.
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: bescheidener от Марта 12, 2010, 18:25:25
А при запущенном Winamp работаeт? Может агент винампа мешает (если он есть)...
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: Artem от Марта 12, 2010, 18:28:14
Ошибочку нашел, если это можно назвать так.
Хотя такого рода ошибки сразу показывают, у кого какое качество кода =)

Формат заголовка немного отличается от той, что возвращает последняя версия винампа.
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: gr1m от Марта 12, 2010, 18:35:11
При запущенном винампе работает... Агент был вынесен сразу же )
Artem - ошибочку где? :)
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: Artem от Марта 12, 2010, 18:42:47
*** 06. Title - Winamp
6. Title - Winamp

В принципе, Ваш код _должен_ поидее обе ситуации обработать правильно, однако первую он не берет
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: gr1m от Марта 13, 2010, 13:36:52
Проблема решена ))) И проблема была не в том, о чем писалось выше... Старый AIMP искал ini-файл с настройками в корне с Exe-файлом. Новый AIMP - в своей рабочей папке - System...
Собственно проблема решилась написанием простенькой функции
function GetModuleFileNameString(Instance: THandle): string;
  var
    buffer: array [0..MAX_PATH] of Char;
  begin
    GetModuleFileName(Instance, buffer, MAX_PATH);
    Result := buffer;
  end;
и использованием ее по назначению при поиске ини-файла :)
IniPath := ExtractFileDir(GetModuleFileNameString(0));
IniFile := TIniFile.Create(IniPath + 'Plugins\gen_vkstatus'+'.ini');
таким образом ищется exe-файл, и в каталоге Plugins создается gen_vkstatus.ini
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: bescheidener от Марта 13, 2010, 15:33:47
Так плагин просто не мог найти путь к своему ини-шнику? Тогда можно было проще:
//C++
IniFile = new TIniFile(ExtractFilePath(Application->FileName())+"PlugIns\\gen_vkstatus.ini");
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: gr1m от Марта 13, 2010, 21:25:30
Плагин находил ini-файл только в том случае, если AIMP запускался из каталога, а не через ярлык...
Собственно уже все исправил и даже прикрутил инсталлер на NSIS к нему :)
Если можно, скачайте, потестите что ли, как он себя ведет... З.Ы. Нещадно захламляет раздел "Мои Новости" в контакте. В следующей версии сделаю примочку от этой беды... Ссылка на скачивание под катом...
http://www.gr1m.ru/uploads/WA_VK_Plugin_v0_1_2.zip
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: kifak от Ноября 06, 2010, 04:34:12
привет всем
не работает. выдаёт ошибку. и аимп не запускается.
пооооооомоооооооогииииииииитееееееееее
пожалуйста
На все выдаёт одно сообщение ФАИЛ ПОВРЕЖДЁН. :'( :'( :'( :'( :'( :'( :'( :'( :'(
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: Vadike от Декабря 22, 2010, 12:00:31
Не работает
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: VovanMS от Марта 08, 2012, 23:38:45
...
Автор, проект еще жив?? хотелось бы попробовать, ато ссылочки то нерабочие))
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: denseacat от Марта 29, 2012, 11:26:31
Автор, вернись и оживи свое детище, народ требует! ;)
Предложение.
Обеъдиниться с Озоном, вот тред его плагина
https://www.aimp.ru/forum/index.php?topic=20461.0
Было бы круто. слушаю музыку с о своей странички в контакте, статус транслируется в контакт.
Название: Re: Текущая тема в статусе Вконтакте
Отправлено: pg648 от Апреля 29, 2012, 12:34:50
Года через 3 может что-то разумно объяснят.