Supongo que el resultado es similar al que finalmente has utilizado, pero otra cosa que podrías hacer aprovechando que tu programa (por ahora) no utiliza DLL's diseñadas por ti, es lo siguiente:
Código Delphi
[-]
var
Handle: THandle;
ModuleEntry: TModuleEntry32;
Str1, Str2, Str3:String;
begin
Handle := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, 0);
Win32Check(Handle <> INVALID_HANDLE_VALUE);
try
ModuleEntry.dwSize := Sizeof(ModuleEntry);
Win32Check(Module32First(Handle, ModuleEntry));
repeat
Memo1.Lines.Add(ModuleEntry.szExePath);
if (UpperCase(ExtractFileExt(ModuleEntry.szExePath)) = '.DLL') then begin
if ExtractFilePath(ModuleEntry.szExePath) = ExtractFilePath(Application.ExeName) then begin
Str1 := ExtractFilePath(ModuleEntry.szExePath);
Str2 := ExtractFilePath(Application.ExeName);
Str3 := ModuleEntry.szExePath;
ShowMessage('Halt!!' + sLineBreak +
Str1 + sLineBreak +
Str2 + sLineBreak +
Str3);
Halt;
end;
end;
until not Module32Next(Handle, ModuleEntry);
finally
CloseHandle(Handle);
end;
end;