本文主要是介绍Innosetup 安装包 在安装前判断是否有其他安装程序正在安装...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
方法有:
1.使用系统服务WinMgmts 系统信息
通过 "winmgmts:\\.\root\CIMV2" 遍历进程列表。
var
FSWbemLocator: Variant;
FWMIService : Variant;
FWbemObjectSet: Variant;
begin
Result := false;
FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');
FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');
FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName]));
Result := (FWbemObjectSet.Count > 0);
FWbemObjectSet := Unassigned;
FWMIService := Unassigned;
FSWbemLocator := Unassigned;
end;
注意:使用wim遍历进程必须开启wim服务
2.使用插件ISTask.dll,psvince.dll 发现有问题,没成功.
3.使用插innosetup自带的
function FindWindowByWindowName(const WindowName: String): HWND;函数
var appWnd: HWND;
begin
Result := false;
appWnd := FindWindowByWindowName('窗口名');
if (appWnd <> 0) then
begin
MsgBox('已有安装程序正在安装', mbConfirmation, MB_YESNO);
end;
end;
这篇关于Innosetup 安装包 在安装前判断是否有其他安装程序正在安装...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!