![]() |
HWND_Broadcast abfangen
Hi,
bin seit mehr als 1 Woche am grübel bekomms, aber einfach net gebacken... In der DLL:
Delphi-Quellcode:
In meinem Programm:
lpView: TDLLData;
CopyMemory(@lpView^.mouse, PMOUSEHOOKSTRUCT(lParam), sizeof(TMOUSEHOOKSTRUCT)); SendMessage(HWND_BROADCAST, lpView^.WM_MOUSEHOOKMSG, wParam, lParam);
Delphi-Quellcode:
Scheint irgendwas an der Verarbeitung von lpView zu hängen...?
function InstallHooks(Hwnd: HWND): Boolean; stdcall; external 'hooks.dll' name 'InstallHooks';
function UninstallHooks: Boolean; stdcall; external 'hooks.dll' name 'UninstallHooks'; var WM_MOUSEHOOKMSG:cardinal; InstallHooks(Application.Handle); procedure TFormMain.GetHWNDBroadcast(var Msg: TMsg); begin if Msg.message = WM_MOUSEHOOKMSG then begin Memo1.Lines.Add(IntToStr(Msg.hwnd)); (Self.Refresh;) end; (inherited;) end; procedure TformMain.FormCreate(Sender: TObject); begin WM_MOUSEHOOKMSG := RegisterWindowMessage('WM_MOUSEHOOKMSG'); end; Vielen Dank für alle Tipps :) |
Re: HWND_Broadcast abfangen
habe immer noch keine funktionierende möglichkeit gefunden, trotz viel suchen und probieren
|
Re: HWND_Broadcast abfangen
Wird GetHWNDBroadcast überhaupt aufgerufen? Hast du auch die Message bei der Definition mit dazugeschrieben?
Delphi-Quellcode:
procedure GetHWNDMessage(Msg : TMsg); Message WM_MOUSEHOOKMSG;
|
Re: HWND_Broadcast abfangen
[Fehler] runmiddlebutton.pas(18): Undefinierter Bezeichner: 'WM_MOUSEHOOKMSG'
[Fehler] runmiddlebutton.pas(18): Ungültiger Botschaftsmethoden-Index Wenn ich das mit dem message dahinter mache |
Re: HWND_Broadcast abfangen
Deine eigene Message muss natürlich auch Deklariert sein..
|
Re: HWND_Broadcast abfangen
Liste der Anhänge anzeigen (Anzahl: 1)
So bekomme keinen Fehler mehr, aber woher weiß ich welchen Wert ich hinter WM_USER brauche?
Kann meine TMSG auch behandeln und im Memo ausgeben, aber alle Werte sind 0, d.h. irgendwie empfang ich die Message nicht richtig. |
Re: HWND_Broadcast abfangen
Habe jetzt WM_USER = 400, da =1 fehler produzieren könnte.
Habe ein bisschen mit dem Pointer experimentiert und direkt ein Debugging Exeption ausgelöst, d.h. es ging gar nix mehr... Taskmanager ist zwar noch aufgegangen konnte aber mit der Tastur und Maus nicht bedient werden. Diese Sachen sind nicht in der ZIP-Datei drin. Die Version läuft stabil, aber es kommen halt keine Daten an :( |
Re: HWND_Broadcast abfangen
Ich persönlich teste Sachen, die zB im winlogon mitgeladen werden in einer Virtual Machine. Dann sind solche Abstürze kein Problem und in 20 Sekunden ist dass Betriebsystem neu geladen.
|
Re: HWND_Broadcast abfangen
okay, magst du dir mal die ZIP angucken. 100% lauffähig, aber die Message ist halt einfach leer :/
|
Re: HWND_Broadcast abfangen
Habe es jetzt einfach so gemacht (ich möchte im Moment ja eh nur registrieren, ob Mausklick und dann die Position)
GetCursorPos und dann ne WM_COPYDATA Message mit den Koordinaten. Aber das Problem is GetCursorPos, da es nur die Position auf der Form anzeigt. Wie kann ich aus lpView: PDLLData (PDLLData^=TDLLData) diese Information (Mauspunkt) holen?
Delphi-Quellcode:
Ich weiß einfach nich wie ich aus dem FileMapping, diese Infos herausbekomme, habe schon sehr viel versucht und gesucht... (wollt gar nich wissen, wie mein Desktop aussieht... :/)
const
MMFName = 'HookingSampleDLL_Data'; type TDLLData = packed record wnd:HWND; ProcessID, ThreadID:DWORD; nCode: Integer; WM_MOUSEHOOKMSG, WM_KEYBHOOKMSG: UINT; mouse: TMOUSEHOOKSTRUCT; end; PDLLData = ^TDLLData; var lpView: PDLLData; hMap: THandle; Gruß Malte |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 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