Thema: Delphi DLL EntryPoint

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

DLL EntryPoint

  Alt 21. Mär 2007, 16:48
Hi,

Wenn ich meine DLL mit der rundll32.exe starten will dann bekomm ich immer Ärger wegen dem EntryPoint weil ich nicht genau weiß was ich da angeben soll...

Im Moment mach ich das mit ner .bat und zwar so:

Zitat:
rundll32.exe Meine.dll,_DllMainCRTStartup
_DllMainCRTStartup hab ich in MSDN unter DllMain gefunden...

Dll-Code:
Delphi-Quellcode:
library Meine;

// [...]

procedure DllMain(Reason: Integer);
begin
  case Reason of
    DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hInstance);
    DLL_THREAD_ATTACH : ;
    DLL_THREAD_DETACH : Running:= false;
    DLL_PROCESS_DETACH: Running:= false;
  end;
  if Assigned(DLLProcNext) then DLLProcNext(Reason);
end;

// [...]

begin
  DllProc := @DllMain;
  ShowMessage('hey!'); <-- zum debuggen nur
  DLLProcNext := Pointer(InterlockedExchange(Integer(@DLLProc), Integer(@DLLMain)));
  DLLMain(DLL_PROCESS_ATTACH);

  Thread:= CreateThread(nil, 0, TFNThreadStartRoutine(@ThreadProc),nil, 0, ThreadID); // unwichtig für das Problem
  if Thread <> 0 then CloseHandle(Thread); // dito
end.
Ohne die erste Zeile gibts immer ne Fehlermeldung das der EntryPoint <ZweiterParameter> nicht existiert und es passiert NIX. Mit dieser Zeile bekomm ich die ShowMessage angezeigt aber danach verabschiedet sich das ganze mit ner AV und nem Overflow....
Ich verzweifel noch bald an dem ganzen DLL-Kram-.-

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat