![]() |
Problem mit SendMessage
Hallo Zusammen,
mit folgender Prozedur möchte ich die Abspielposition von Winamp abfragen:
Delphi-Quellcode:
Das funktioniert soweit auch, nur das Programmfenster "friert" ein. Ich kannprocedure TForm1.Button1Click(Sender: TObject); begin WindowHandle := FindWindow( 'Winamp v1.x', nil); Edit1.Text:=IntToStr( SendMessage( WindowHandle, WM_WA_IPC, 0 , PC_GETOUTPUTTIME ) ); end; zwar noch den Button anklicken und der Wert im Edit-Feld wird akualisiert, aber das Fenster lässt sich nicht mehr verscieben und auch nicht über den x-Button beenden. Wenn ich zu einem anderen Fenster wechsle und zu meinem Programm zurückwechsle wird es nicht mehr angezeigt. Wenn ich es dann über Rechtsklick auf das Taskleisten Symbol beende erhalte ich folgenden Fehler: "Im Projekt Projekt1.exe ist eine Exception der Klasse EOSError aufgetreten. Meldung: 'Systemfehler. Code: 5. Zugriff verweigert' [...] " MfG Schneider-Huetter |
Re: Problem mit SendMessage
Moin Schneider-Huetter,
probier's doch mal mit PostMessage. SendMessage kehrt erst zurück wenn die Message verarbeitet wurde. Ausserdem könntest Du Dir mal mit
Delphi-Quellcode:
wie das Ergebnis von Send bzw. PostMessage ist.
ShowMessage(SysErrorMessage(GetLastError));
|
Re: Problem mit SendMessage
Ich werds mal mit PostMessage versuchen aber im Winamp-SDK ist komischerweise SendMessage angegeben :gruebel:
MfG Schneider-Huetter |
Re: Problem mit SendMessage
Moin!
PostMessage() ist in dem Falle auch totaler Müll, weil der Rückgabewert wichtig ist und PostMessage() nunmal keinen Rückgabewert liefert (und deshalb sofort zurückkehren kann). Grundlegend vermute ich den Fehler woanders, weil das reine SendMessage() funktioniert ja (Edit1 wird aktualisiert), es muss was anderes in deinem Programm sein was dieses Verhalten auslöst. /EDIT: Ich weiss auch schon was: Du weist das gefundene Fensterhandle WindowHandle zu, aber WindowHandle ist eine Property deiner Form, somit setzt du das Fensterhandle deiner Form auf die von Winamp und das ist tödlich. Ergo: Definiere dir eine Variable für das Fensterhandle von Winamp!
Delphi-Quellcode:
MfG
procedure TForm1.Button1Click(Sender: TObject);
Var lWndHandle : HWND; begin lWndHandle := FindWindow( 'Winamp v1.x', nil); Edit1.Text:=IntToStr( SendMessage( lWndHandle , WM_WA_IPC, 0 , PC_GETOUTPUTTIME ) ); end; Muetze1 |
Re: Problem mit SendMessage
Alles klar, vielen Dank !!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz