方法有:
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;