Hi,
ich fast am verzweifeln, ich habe eine
DLL Funktion der ein Integer wert übergeben wird bei der
DLL kommt aber immer 1243288 an. egal welchen wert am einstzt.
DLL:
Delphi-Quellcode:
...
function init(
const ah, fh: integer;
const pa:TPointerArray;
const sendmsg: Pointer): integer;
stdcall;
begin
showmessage(inttostr(fh));
// immer immer 1243288
feditor:= Tfeditor.Create(application);
Windows.SetParent(feditor.Handle, fh);
// ungültiges handle da immer 1243288
feditor.Show;
end;
exports
init;
...
Programm:
Delphi-Quellcode:
...
type TTaskInit =
function (
const ah, fh: integer;
const pa:TPointerArray;
const sendmsg: Pointer): integer;
...
procedure Tfmain.loadtask(
name:
string);
var
h: integer;
ti: TTaskInit;
begin
// Überprüfen ob task vorhanden ist wenn nicht abbrechen
if not fileexists(pfad+
name+DLLEXT)
then begin
exit;
showmessage('
Task "'+
name+'
" konnte nicht geladen werden.'+BR+BR+'
Datei "'+pfad+
name+DLLEXT+'
" konnte nicht gefunden werden.');
end;
h:= LoadLibrary(pchar(pfad+
name+DLLEXT));
if h<>0
then begin
@ti := GetProcAddress(h, '
init');
if @ti <>
nil then begin
showmessage(inttostr(fmain.Handle));
// hier ist der wert richtig
ti(application.Handle, fmain.Handle, [
nil],
nil);
// was läuft da falsch
end else begin
showmessage('
Task "'+
name+'
" konnte nicht geladen werden.'+BR+BR+'
Function "init" wurde in der DLL nicht gefunden')
end;
end else begin
showmessage('
Task "'+
name+'
" konnte nicht geladen werden.'+BR+BR+'
DLL-Handle ist 0');
end;
FreeLibrary(h);
end;
...
Leider habe ich keine erklärung für den Fehler ich hoffe ihr könnt mir helfen.
thx, arbu