AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi daten zw dll und programm via sendmessage verschicken
Thema durchsuchen
Ansicht
Themen-Optionen

daten zw dll und programm via sendmessage verschicken

Ein Thema von gabitzi · begonnen am 21. Sep 2003 · letzter Beitrag vom 25. Sep 2003
Antwort Antwort
gabitzi

Registriert seit: 20. Sep 2003
5 Beiträge
 
Delphi 7 Professional
 
#1

daten zw dll und programm via sendmessage verschicken

  Alt 21. Sep 2003, 22:08
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
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: daten zw dll und programm via sendmessage verschicken

  Alt 21. Sep 2003, 23:19
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: daten zw dll und programm via sendmessage verschicken

  Alt 22. Sep 2003, 06:25
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.
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#4

Re: daten zw dll und programm via sendmessage verschicken

  Alt 22. Sep 2003, 08:13
@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...
Manuel Pöter
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: daten zw dll und programm via sendmessage verschicken

  Alt 22. Sep 2003, 08:36
Eine Hook-Dll ist in ALLE Programme geladen.
Poste doch mal den WM_COPYDATA-Code der DLL.
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#6

Re: daten zw dll und programm via sendmessage verschicken

  Alt 22. Sep 2003, 08:52
Zitat von Robert Marquardt:
Eine Hook-Dll ist in ALLE Programme geladen.
Auch nicht zwangsläufig..!

Delphi-Quellcode:
HHOOK SetWindowsHookEx( int idHook,
    HOOKPROC lpfn,
    HINSTANCE hMod,
    DWORD dwThreadId
);
Zitat von MSDN:
dwThreadId
[in] Specifies the identifier of the thread with which the hook procedure is to be associated. If this parameter is zero, the hook procedure is associated with all existing threads running in the same desktop as the calling thread.
Dadurch kann man eine Dll gezielt in einen bestimmten Prozessraum injizieren... (hängt aber auch davon ab welche Art von Hook verwendet wird...)
Manuel Pöter
  Mit Zitat antworten Zitat
gabitzi

Registriert seit: 20. Sep 2003
5 Beiträge
 
Delphi 7 Professional
 
#7

Re: daten zw dll und programm via sendmessage verschicken

  Alt 22. Sep 2003, 18:25
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
wcChar;
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
copyDataCopyDataStruct;
y:HWND;
x:integer;
writeDataAnsiChar;
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
  Mit Zitat antworten Zitat
gabitzi

Registriert seit: 20. Sep 2003
5 Beiträge
 
Delphi 7 Professional
 
#8

Re: daten zw dll und programm via sendmessage verschicken

  Alt 25. Sep 2003, 16:28
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
gabitzi
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: daten zw dll und programm via sendmessage verschicken

  Alt 25. Sep 2003, 20:13
Kuck mal in der OpenSource Sparte, da findest du den keyLogger von mir und Aya. In der DLL habgen wir genau das auch realisiert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz