Thema: Delphi DLL - Problem

Einzelnen Beitrag anzeigen

seddto1977

Registriert seit: 15. Apr 2004
69 Beiträge
 
#1

DLL - Problem

  Alt 27. Jul 2004, 21:17
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...
  Mit Zitat antworten Zitat