论坛风格切换切换到宽版
  • 3474阅读
  • 1回复

请问老虎版主,如何检测并结束64位进程 [复制链接]

上一主题 下一主题
离线axlswd
 

发帖
95
金钱
910
威望
91
只看楼主 倒序阅读 0 发表于: 2015-03-16


我使用了ISTask.dll,但是好像只能检测32位进程,64位的没效果,请问老虎版主有没有好方法。
下面是测试代码:


[Setup]
AppName=abc
AppVersion=1.5
DefaultDirName={pf}\abc
OutputBaseFilename=abc
DefaultGroupName=abc
OutputDir=.

[Files]
Source: "ISTask.dll"; Flags: dontcopy solidbreak;

[Code]
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';

function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';


function InitializeSetup(): Boolean;
var
ErrorCode:integer;
begin
  Result := True;
if iswin64 then //64位进程检测不到,会直接出现安装界面
begin
ShellExec ('', ExpandConstant('{src}\MyProg-x64.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode);
   if RunTask('MyProg-x64.exe', false) then
    if MsgBox('检测到程序正在运行,要关闭吗?', mbConfirmation, MB_YESNO) = IDYES then
      KillTask('MyProg-x64.exe')
    else
      Result := False;
  end else
  begin
    ShellExec ('', ExpandConstant('{src}\MyProg.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode);
  if RunTask('MyProg.exe', false) then
    if MsgBox('检测到程序正在运行,要关闭吗?', mbConfirmation, MB_YESNO) = IDYES then
      KillTask('MyProg.exe')
    else
      Result := False;
  end
end;

测试脚本.rar (36 K) 下载次数:0
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2015-03-16
我没有试过 64位 的软件,所以还没有经验。