Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit Nachricht aus DLL (https://www.delphipraxis.net/25474-problem-mit-nachricht-aus-dll.html)

Chris P 7. Jul 2004 11:15


Problem mit Nachricht aus DLL
 
HI Leute,

ich schreibe grade einen Maushook.

Ich lasse mir die Mauskoordinaten aus einer DLL schicken.

In meinem Hauptprogramm habe ich eine Prozedur die die Nachricht verarbeitet.

Aber wie kann ich die x und y Koordinaten anzeigen lassen?

Wo liegt hier der Fehler??

Delphi-Quellcode:
procedure TForm1.DllMessage(var Msg: TMessage);
begin
   case Msg.wParam of
     WM_MOUSEMOVE: begin  Label1.Caption := InttoStr(LOWORD(Msg.lparam));
                           Label2.Caption := InttoStr(HIWORD(Msg.lParam));
                   end;
 end;
end;

Luckie 7. Jul 2004 11:19

Re: Problem mit Nachricht aus DLL
 
Zitat:

Zitat von Chris P
Wo liegt hier der Fehler??

Der Fehler liegt in Zeile 153, da muss es ">" statt "<" heißen. :roll:

Woher sollen wir wissen, wo der Fehler liegt, wenn du uns nicht sagst, wie er sich manifestiert? Irgendwelche Fehlermeldungen, Exceptions oder einfach nur ein ungewünschtes Ergebnis???

Chris P 7. Jul 2004 11:23

Re: Problem mit Nachricht aus DLL
 
Es kommt kein direkter Fehler,

aber in Label1 steht 65244 und in Label2 die Zahl 18.

Die Zahlen verändern sich auch nicht!

Ich bekomme nicht die aktuellen Mauskoordinaten angezeigt.

Christian Seehase 7. Jul 2004 11:27

Re: Problem mit Nachricht aus DLL
 
Moin Chris,

daraus würde ich mal schliessen, dass der Fehler in der DLL liegt.

Chris P 7. Jul 2004 11:29

Re: Problem mit Nachricht aus DLL
 
Hier ist ein Ausschnitt aus der DLL:
Delphi-Quellcode:
function MouseHookFunc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  { Nachricht an Fenster weiterleiten }
  Result := CallNextHookEx(hKeyHook, Code, wParam, lParam);

  { Nachricht auswerten }
  if Code >= 0 then
  begin

        hMap := OpenFileMapping(FILE_MAP_WRITE, False, 'MMF');
        HookRec := MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0);
        if HookRec <> nil then
           hApp := HookRec.AppHnd;

           SendMessage(hApp, WM_MOUSEHOOK, wparam, lParam);

  end
  else
     Exit;
end;

Christian Seehase 7. Jul 2004 11:34

Re: Problem mit Nachricht aus DLL
 
Moin Chris,

bist Du sicher, dass Du die richtige Stelle erwischt hast?

Code:
WM_MOUSE[color=red][b]MOVE[/b][/color]: begin  Label1.Caption := InttoStr(LOWORD(Msg.lparam));
Code:
SendMessage(hApp, WM_MOUSE[color=red][b]HOOK[/b][/color], wparam, lParam);

Chris P 7. Jul 2004 11:38

Re: Problem mit Nachricht aus DLL
 
Ich denke schon.

Die Prozedur DLLMessage ist ja in meinem Hauptprog. und das andere ist in der DLL.

Chris P 7. Jul 2004 11:41

Re: Problem mit Nachricht aus DLL
 
Die DLLMessage ist wie folgt deklariert:
Delphi-Quellcode:
procedure DllMessage(var Msg: TMessage); message WM_MOUSEHOOK;
In Msg.wParam könnte ja zB: WM_MOUSEMOVE drin stehen.

Christian Seehase 7. Jul 2004 11:41

Re: Problem mit Nachricht aus DLL
 
Moin Chris,

es wäre nur ganz praktisch wenn die Messages auch die gleichen wären.

Christian Seehase 7. Jul 2004 11:43

Re: Problem mit Nachricht aus DLL
 
Moin Chris,

sorry, da hab' ich nicht aufgepasst.
Das WM_MOUSEMOVE als wParam übergeben wird, und nicht als Message hatte ich übersehen :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.
Seite 1 von 4  1 23     Letzte »    

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