gen_nmnl

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とかでも良さげとか。

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