![]() |
Re: Problem mit Nachricht aus DLL
Ich schicke meine eigene Message namens WM_MOUSEHOOK an mein Prog.
In dem wParam dieser Message steht dann wiederum zB. WM_MOUSEMOVE. |
Re: Problem mit Nachricht aus DLL
Aber wo könnte nun der Fehler liegen?
|
Re: Problem mit Nachricht aus DLL
Moin Chris,
schreib' doch mal, zum Testen, einen festen Wert in lParam, wenn WM_MOUSEMOVE von der DLL gesendet werden soll. |
Re: Problem mit Nachricht aus DLL
Ich hab jetzt mal als lParam die Konstante 20 geschickt und die wird ohne Fehler übergeben und angezeigt.
Aber wie funktioniert das jetzt mit den Mousekoords? Muss lParam da nicht irgendwas mit PMOUSEHOOKSTRUCT sein oder? |
Re: Problem mit Nachricht aus DLL
Ersten:
Schließe in der Hook das Filemapping-Object sauber. Zweitens: lParam bei einer MouseHook ist vom Typ PMouseHookStruct.
Delphi-Quellcode:
procedure TForm1.DllMessage(var Msg: TMessage);
begin case Msg.wParam of WM_MOUSEMOVE: with PMouseHookStruct(Msg.lParam)^ do begin Label1.Caption := InttoStr(pt.x); Label2.Caption := InttoStr(pt.y); end; end; end; |
Re: Problem mit Nachricht aus DLL
Moin Chris,
wenn lParam die Adresse einer Datenstruktur ist, musst Du diese natürlich auch als Adresse verwenden:
Delphi-Quellcode:
var
MouseHook : PMOUSEHOOKSTRUCT; begin MouseHook := PMOUSEHOOKSTRUCT(msg.lParam); case Msg.wParam of WM_MOUSEMOVE: begin Label1.Caption := InttoStr(MouseHook^.pt.x); Label2.Caption := InttoStr(MouseHook^.pt.y); end; end; |
Re: Problem mit Nachricht aus DLL
Deine Lösung sieht gut aus, aber hat meinen PC zweimal abschmieren lassen sodass ich einen Neustart machen musste. Wodran liegt dass?
|
Re: Problem mit Nachricht aus DLL
Moin Chris,
ich hab' mir das mal, auf die Schnelle, so gefakt:
Delphi-Quellcode:
Funktioniert allerbest.
procedure TForm1.DllMessage(var Msg: TMessage);
var MouseHook : PMOUSEHOOKSTRUCT; begin MouseHook := PMOUSEHOOKSTRUCT(msg.lParam); case Msg.wParam of WM_MOUSEMOVE: begin Label1.Caption := InttoStr(MouseHook^.pt.x); Label2.Caption := InttoStr(MouseHook^.pt.y); end; end; end; procedure TForm1.Button2Click(Sender: TObject); var msg : TMessage; MouseHook : MOUSEHOOKSTRUCT; begin MouseHook.pt.x := 100; MouseHook.pt.y := 200; msg.WParam := WM_MOUSEMOVE; msg.LParam := lParam(@MouseHook); DLLMessage(msg); end; Hast Du lParam in der DLL auch wieder korrigiert, so dass es die Adresse enthält? |
Re: Problem mit Nachricht aus DLL
Ist das korrekt so?
Delphi-Quellcode:
Der PC stürzt immer noch ab :cry:
SendMessage(hApp, WM_MOUSEHOOK, wparam, lParam);
|
Re: Problem mit Nachricht aus DLL
Nein das ganze geht so nicht!
Grund: Der Speicher auf, die die Adresse zeigt gibt es in deinem Process nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 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 by Thomas Breitkreuz