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."