プログラムから exe ファイルを動的にロードし、その動的にロードされた exe から SomeProcedure を実行しようとしています。これが、ロードされたexeで行っていることです-library.exe
interface
procedure SomeProcedure; stdcall;
implementation
procedure SomeProcedure;
begin
ShowMessage('Ala has a cat');
end;
そして、これがlibrary.exeをロードし、そこからSomeProcedureを実行しようとする私のexeです。
type
THandle = Integer;
TProc = procedure();
var
AHandle: THandle;
Proc: TProc;
procedure TForm1.Button1Click(Sender: TObject);
begin
AHandle := LoadLibrary('library.exe');
if AHandle <> 0 then begin
@Proc := GetProcAddress(AHandle, 'SomeProcedure');
if @Proc <> nil then
try
Proc;
finally
FreeLibrary(AHandle);
end;
end;
end;
end;
残念ながら、それは機能していません。AHandle にはアドレスがありますが、GetProcAddress は常に nil を返します。私は何を間違っていますか?