我有一个可以从不同的exe应用程序调用的dll(dll和exe用Delphi 5编写)。 是否有可能在dll中知道从哪个应用程序调用它? 换句话说,我们说我有App1.exe,App2.exe和MyDll.dll。 App1.exe称为MyDll.exe。我想在dll里面知道它是从App1调用的,而不是从App2调用的。
答案 0 :(得分:2)
如果您调用Windows API函数GetModuleFileName()传递NULL
(0)作为模块句柄(第一个参数),那么这将返回进程的文件名,即可执行文件:
function GetProcessFileName: String;
var
buf: array[0..MAX_PATH-1] of Char;
begin
GetModuleFileName(0, @buf, Length(buf));
result := buf;
end;
注意:正如Raymond Chen总是说的那样,示例程序很少或没有错误检查! :)
有关使用此API的更多信息,请参阅文档并相应地使用。