我已阅读了以下帖子,我的代码与其完全相同,但不起作用:
Inno Setup 检查正在运行的进程 我复制了来自http://www.vincenzo.net/isxkb/index.php?title=PSVince 的示例,但即使我像这样更改代码,示例仍然无法工作:
Inno Setup 检查正在运行的进程 我复制了来自http://www.vincenzo.net/isxkb/index.php?title=PSVince 的示例,但即使我像这样更改代码,示例仍然无法工作:
[Code]
function IsModuleLoaded(modulename: AnsiString): Boolean;
external 'IsModuleLoaded@files:psvince.dll stdcall';
无论程序是否运行,该代码始终返回false
(即程序未运行)。
在Windows 2008 R2和Windows 7上进行过测试。
实际上,我想检查tomcat5.exe
是否正在运行。所以我认为我不能使用AppMutex
。
我也看到过https://code.google.com/p/psvince/source/detail?r=5
但是我找不到有关该DLL兼容性的任何事实。
完整的代码:
[Files]
Source: psvince.dll; Flags: dontcopy
[Code]
function IsModuleLoaded(modulename: AnsiString ): Boolean;
external 'IsModuleLoaded@files:psvince.dll stdcall';
function InitializeSetup(): Boolean;
begin
if(IsModuleLoaded( 'notepad.exe' )) then
begin
MsgBox('Running', mbInformation, MB_OK);
Result := false;
end
else
begin
MsgBox('Not running', mbInformation, MB_OK);
Result := true;
end
end;