Ich habe folgendes Problem.
Wenn ein User mit einem meiner Programme arbeitet , dann muß er meistens gleichzeitig noch mit anderen Programmen wie Word etc arbeiten. Deshalb habe ich versucht einen Hook zu programmieren, der dem User zb. über Messageboxen während er in dem anderen Programm arbeitet Hinweise gibt. Hier erstmal der Code in meinem Programm, das die
DLL aufruft:
Delphi-Quellcode:
CreateProcessA(nil,'C:\Programme\Microsoft Office\Word.exe',nil,nil,False,CREATE_SUSPENDED,nil,nil,StartupInfo,ProcessInfo);
ResumeThread(ProcessInfo.hThread);
Sleep(5000);
Lib:=LoadLibrary(ServerName);
Proc:=GetProcAddress(Lib,'pseduo');
SetWindowsHookEx(WH_GETMESSAGE,Proc,Lib,ProcessInfo.dwThreadId);
Sleep(1000);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
ExitProcess(0);
In diesem Fall wird Word neu gestartet, weil ich das ganze erstmal testen will...später suche ich mir dann das richtige Process-
Handle...
Der Code in der
DLL sieht so aus:
Delphi-Quellcode:
procedure EntryPoint(Reason:Integer);
var
IP:PChar;
TID:DWORD;
begin
case Reason
of
DLL_THREAD_ATTACH:
begin
Showmessage (extractfilename(paramstr(0)));
end;
DLL_THREAD_DETACH:
begin
end;
end;
end;
procedure pseduo;
begin
end;
exports pseduo;
begin
DLLProc:=@EntryPoint;
EntryPoint(DLL_THREAD_ATTACH);
end.
In diesem Fall soll lediglich in Word eine Messagebox angezeigt werden in der der Name des aktuellen Process angezeigt wird, damit ich sehe ob die Messagebox im Kontext von Word oder von meinem Programm läuft. Das Ergebnis sieht so aus das die Messagebox zuerst im Kontext von meinem Programm angezeigt wird (zb. Text: MeinProgramm.exe) und wenn ich mit Ok bestätigt habe dann sofort im Kontext von Word (Text: Word.exe). Was mache ich falsch, ich möchte natürlich nicht das alle Aktionen 2 mal durchgeführt werden sondern immer nur im kontext des Programms in das ich die
DLL lade (also in diesem Fall Word). Kann mir jemand weiterhelfen?
PS: Das
DLL und Hook-Tut habe ich mir schon durchgelesen aber bei der Sache hier komm ich irgendwie nicht weiter...