No Music, No Life.にGETリクエストでsubscribeするWinampのgeneral purpose plug-inを書いてみる。Winampのplug-inは初めて作ったのでかなり混乱したけど、一応動くようだ。

なんだか、使い道が限られたショボイツールばっか作ってる気がする。

まぁいいけど。

Apolloでは動かない罠。quitのところでエラるな。Apolloのせいかプラグインのせいかわからん・・・。

てか、

function GetWinampFilename: String;
var
  hWinamp: THandle;
  iPos: Integer;
  cFileName: Cardinal;
  hTemp: THandle;
  buf: array[0..500] of Char;
  cTemp: Cardinal;
  sFileName: String;
begin
  Result := '';
  hWinamp := FindWindow('Winamp v1.x', nil);

  if hWinamp <> 0 then
  begin
    iPos := SendMessage(hWinamp, WM_USER, 0, 125);
    cFileName := SendMessage(hWinamp, WM_USER, iPos, 211);
    GetWindowThreadProcessId(hWinamp, hTemp);
    hWinamp := OpenProcess(PROCESS_ALL_ACCESS, False, hTemp);
    ReadProcessMemory(hWinamp, Pointer(cFileName), @buf, 500, cTemp);
    CloseHandle(hWinamp);
    sFileName := buf;
    Result := sFileName;
  end;
end;

こんなコードでWinampやApolloで再生中の曲のフルパスは取得できるということをForumで見つけたので、単体EXEとかでも良さげとか。

別に何か作ろうとか言う訳ではないのですがね。なんとなく作り始めたら面白かった。