Desværre understøtter Winamp's SDK ikke at kunne hente playlist-filnavne fra eksterne applikationer. Derfor lavede jeg et Winamp-plugin som kunne hente disse, men hvordan får jeg den nu til at sende filnavnene videre til mit program, eller får mit program til at hente filnavnet gennem min Winamp-dll?
Ekstra spørgsmål: Kan nogen gennemgå opsætningen af en hook, da jeg godt kunne tænke mig at holde øje med hvornår Winamp skifter til næste track?
Jeg er ikke sikker på om de to metoder er så relevante for mit projekt. Tror desværre jeg skal gøre brug af Winamp's API (måske har jeg misforstået noget ?).
Jeg har dog fundet en metode til at sende strenge fra mit plugin, til hovedprogrammet: http://delphi.about.com/od/windowsshellapi/a/wm_copydata.htm Dermed er første problem løst, men jeg mangler stadig at finde ud af hvordan jeg holder øje med track-skifte i Winamp.
Jeg kan også have misforstået det. Jeg troede du ville sende beskeder fra Winamp (loaded dll eller lignende som du selv har skrevet) til en anden process/applikation (som du også selv har skrevet). Til det formål burde named pipes virke fint.
Ja, det er i hvert fald hen i den rigtige retning...
Jeg har fundet ud af jeg skal bruge IPC_CB_MISC og IPC_CB_MISC_STATUS for at få at vide at status har ændret sig, men hvordan er det nu lige man laver det som callback i Delphi.
For neden har jeg noget C-kode der skulle være egnet til funktionen. Hvis bare du kan give mig metode-hovedet (som den skal stå under interface), samt opsætningen der skal til for at Winamp bruger callback'en, så kan jeg selv klare resten! :) Så vidt jeg husker er det noget med GetWindowLong, SetWindowLong og CallWindowProc. Noget du kan hjælpe med?
function HookWinampWnd(Handle: HWND; Msg: Integer; wParam, lParam: Longint): LRESULT; var Status: Integer; S: String; if (lParam = IPC_CB_MISC) and (wParam = IPC_CB_MISC_STATUS) then begin Status := SendMessage(WinAMP_WND, WM_WA_IPC, 0, IPC_ISPLAYING); case Status of 0: S := 'Stopped'; 1: S := 'Playing'; 3: S := 'Paused'; else S := 'Unknown'; end; MessageBox(WinAMP_WND, PChar(S), 'caption', MB_ICONINFORMATION + MB_OK); end;
Result := CallWindowProc(Pointer(WinampProc), Handle, Msg, wParam, lParam); end;
Godt nok får jeg vist min MessageBox to gange, men det vil jeg så rode lidt videre med... :)
Smid lige et svar hvis du vil have en del i pointene.
Det er helt fint! 30 pt står fint mål med min indsats. 30/200 virker også som den helt rigtige vægt af min indsats ifht din.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.