![]() |
daten zw dll und programm via sendmessage verschicken
hy!
ich versuche daten(genauer gesagt einen handle oder string) zu verschicken. Ich habe es wie in enem der beispiele hier im Forum mit hilfe von WM_COPYDATA versucht, aber ich kriege immer wieder Acces Violation. Dabei ist was ich verschicken will schon Teil meiner Shared Memeory. Ich schaffe es nicht einmal eine einfache zahl zu senden. was tue ich falsch?? kann es daran liegen das mein sendmessage nach einem anderen postmessage aufgerufen wird?? danke gabitzi |
Re: daten zw dll und programm via sendmessage verschicken
Wenn du hier im Forum suchst, dürftest du einige Beispiele finden. Wenn du diese nicht auf dein Programm übertragen kannst, dann poste am besten mal etwas Code.
|
Re: daten zw dll und programm via sendmessage verschicken
Es ist Unsinn mit einer in eigene Programm geladenen DLL per Message zu kommunizieren.
Wie waere es dennn mit einer simplen Funktion, die einen Puffer und eine Pufferlaenge uebergibt? Alle Win32-Funktionen arbeiten auf diese Weise. |
Re: daten zw dll und programm via sendmessage verschicken
@Robert Marquardt: die Dll muss ja nicht zwangsläufig im eigenen Programm geladen sein, es kann sich durchaus auch um eine Hook-Dll handeln die in einem fremden Prozessraum liegt...
@gabitzi: aber ohne Code und weitere Informationen wird das höchstens ein Ratespielchen... :? |
Re: daten zw dll und programm via sendmessage verschicken
Eine Hook-Dll ist in ALLE Programme geladen.
Poste doch mal den WM_COPYDATA-Code der DLL. |
Re: daten zw dll und programm via sendmessage verschicken
Zitat:
Delphi-Quellcode:
HHOOK SetWindowsHookEx( int idHook,
HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId ); Zitat:
|
Re: daten zw dll und programm via sendmessage verschicken
hallo
inzwischen schaffe ich es die daten (das heisst, den handle zu verschicken) aber leider nicht richtig. Es handelt sich tatsachlich um eine hook dll, und ich versuche den handle des activen(egtforeground window) zu verschicken. Im programm zeige ich dann woher es kam. ich bekomme den richtigen handle aber nur wenn ich in meinem eigen Fenster binn. Ansonsten scheinen die zahlen nicht zu stimmen. dll procedure function KbdHook(hCode,wParam:LongInt;lParam:LongInt):Longi nt;stdcall; var wc:PChar; Hw:HWND; CDS: TCopyDataStruct; begin if (MyData^.Msg<>0) and (hCode=HC_ACTION) then begin PostMessage(MyData^.Handle,MyData^.Msg,wParam,lPar am); hw:= GetForegroundWindow(); MyData^.st:=hw; ; with CDS do begin dwData := 0; cbData := SizeOf(integer); lpData := Pointer(MyData^.st); end; SendMessage(MyData^.Handle, WM_COPYDATA, 0, LongInt(@CDS)); end; if (MyData^.hHook <> 0) then begin Result:=CallNextHookEx(MyData^.hHook,hCode,wParam, lParam) end else Result:=0 end; main program: procedure TfrmHook.WndMsg(var msg: TWMCopyData); var copyData:PCopyDataStruct; y:HWND; x:integer; writeData:PAnsiChar; begin copyData:=msg.CopyDataStruct; x:= Integer(copyData.lpData); y:=hwnd(x); showmessage('übergebene Zahl:' + #13 + IntToStr(x)); GetWindowText(y,writedata,254); showmessage('window' + #13 + string(writedata)); end; irgendetwas gehe ich bestimmt falsch an ..danke gabi |
Re: daten zw dll und programm via sendmessage verschicken
hy ...
hab von euch leider keine Antwort mehr gekriegt, und nach langerem Uberlegen kam ich zur Schlussfolgerung, dass ich so nie das richtige Handle ubertragen werde, weil ich schon von Anganf an nicht richtig durch mein KetboardHook empfange. Ich dachte noch ein Shellhook dafur hinzuzufugen. Ware das gut so? Ich probiers mal ... viele gruesse :D gabitzi |
Re: daten zw dll und programm via sendmessage verschicken
Kuck mal in der OpenSource Sparte, da findest du den keyLogger von mir und Aya. In der DLL habgen wir genau das auch realisiert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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