$sPath = 'C:\WinXP\system32\notepad.exe'
$iMax = 4
If Not FileExists($sPath) Then
MsgBox(16, 'Ошибка', 'Файл не найден' & @CRLF & $sPath)
Exit
EndIf
Local $sProcessName = StringTrimLeft($sPath, StringInStr($sPath, '\', 0, -1))
Local $aProcessList = ProcessList($sProcessName)
If Not @error Then
If Int($aProcessList[0][0]) >= $iMax Then
Local $hPsAPI = DllOpen('Psapi.dll')
Local $hKernel = DllOpen('Kernel32.dll')
Local $Counter = 0
For $i = 1 To $aProcessList[0][0] Step +1
If _ProcessGetPath($aProcessList[$i][1], $hKernel, $hPsAPI) = $sPath Then $Counter += 1
Next
DllClose($hKernel)
DllClose($hPsAPI)
If $Counter >= $iMax Then Exit
EndIf
EndIf
Run($sPath & ' ' & $CmdLineRaw)
Func _ProcessGetPath($hPID, $hKernel, $hPsAPI)
Local $sPath = DllStructCreate('char[1000]')
Local $hProcess = DllCall($hKernel, 'int', 'OpenProcess', 'dword', 0x0400 + 0x0010, 'int', 0, 'dword', $hPID)
DllCall($hPsAPI, 'long', 'GetModuleFileNameEx', 'long', $hProcess[0], 'int', 0, 'ptr', DllStructGetPtr($sPath), 'long', DllStructGetSize($sPath))
DllCall($hKernel, 'int', 'CloseHandle', 'hwnd', $hProcess[0])
Local $ret = DllStructGetData($sPath, 1)
Return $ret
EndFunc