[ Nemanja Avramović @ 05.03.2005. 18:53 ] @
1) Pravim unit kojim cu kontrolisati Winamp. Ovo ce mi trebati za pluginove koje planiram da pravim za Winamp...
U NSDN-u sam procitao kako pronaci handle od winampa i slati neke komande, sto radi... ali drugi deo, koji je SAMO ZA PLUGINE, ne kapiram....

pogledajte
Code:

211      Retrieves (and returns a pointer in 'ret') a string that contains the filename of a playlist entry (indexed by 'data'). Returns NULL if error, or if 'data' is out of range.


Kako moze da mi vrati string kad SendMessage vraca integer?

Evo prikacio sam ceo taj HTML, cisto da vidite kako to ide...

2) Kako da napravim da moja aplikacija moze da primi poruku i na osnovu ona 2 parametra, koji idu pri slanju poruke, da uradi nesto?
[ vlaiv @ 05.03.2005. 22:15 ] @
MessageStruct ili kako god da se vec zove ima WParam, LParam i return ...

E taj Return je integer (odnosno 32bit-a) pa mozes u njega da smestis i pointer na char odnosno wchar i kad odradis slanje poruke sa sendmessage odredjenom handle-u i on obradi poruku onda u toj poruci (odnosno stukturi poruke) upise odgovoarajuce vrednosti ...

U kom alatu radis? pisanje message handlera zavisi od alata ...

Ako je delphi onda u datom formu/komponenti odradis sledece ...


Code:

protected
  procedure MyMessageHandler(var message:TMessage);message WM_BLABLA;

....

procedure TMyThing.MyMessageHandler(var message:TMessage);

begin
 // var je zato da bi mogao da menjas sadrzaj message-a i da vratis vrednost ...

.....
end;


pogledaj dokumentaciju, pored standardnog TMessage ima definisanih i jos booljok razlicitih tipova za razlicite poruke ...
[ Nemanja Avramović @ 05.03.2005. 23:07 ] @
evo nasao sam kako vratiti string:
Code:

function SendMessageRetStr(wnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): String;
var
  dwProcessId: DWORD;
  phandle: THandle;
  P: Pointer;
  C: Cardinal;
  PB: Pointer;
  B: Byte;
begin
  Result := '';
  GetWindowThreadProcessID(wnd,dwProcessId);
  phandle := OpenProcess(PROCESS_VM_READ, False, dwProcessId);
  if phandle = 0 then exit;
  P := Pointer(SendMessage(wnd, uMsg, wParam, lParam));
  PB := nil;
  B := 0;
  repeat
    if not ReadProcessMemory(phandle,P,@PB,1,C) then break;
    B := Byte(PB);
    if B <> 0 then begin
      Result := Result + Chr(B);
    end;
    P := Pointer(DWord(P)+1);
  until (B=0);

  CloseHandle(phandle);
end;


radim u delphiju... pogledacu ovaj tvoj kod...

hvala!
[ dogriz @ 25.03.2006. 22:15 ] @
Nisam hteo da otvaram novu temu, a pitanje ionako ima veze sa ovim.

Ne znam kako se puni playlista u winamp-u preko delphi aplikacije. Pogledao sam malo help - SendMessage i Winamp SDK, ali ne kontam kako se piše kod. Pokušavao sam sa WM_COMMAND, WM_COPYDATA..., ali nešto ne znam.

Potrebno mi je da iz liste pesama koju imam u delphi programu, dodam željeni izbor u winamp. Može li mi neko pomoći (primer koda)?
[ obucina @ 26.03.2006. 00:47 ] @
Ima gotovih komponenti na www.torry.ru za upravljanje WinAmp-om, a mislim da ima i jedna u JVCL-u.
[ obucina @ 26.03.2006. 00:51 ] @
Ima gotovih komponenti na www.torry.ru za upravljanje WinAmp-om, a mislim da ima i jedna u JVCL-u.
[ obucina @ 26.03.2006. 00:53 ] @
Ima gotovih komponenti na www.torry.ru za upravljanje WinAmp-om, a mislim da ima i jedna u JVCL-u.