Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Endr,
Можно попробовать указать рабочую папку:

Код: Выделить весь код
ShellExecute($MyScript, "", "C:\")



amel27

Такой вопрос - накалякал функцию (на основе других подобных) для проверки пути, не является ли он запущенным процессом, всё вроде работает (возвращает PID процесса), но вопрос в том, насколько надёжно использовать Psapi.dll? - в справке по этому поводу вот что сказанно:

Цитата http://www.autoitscript.com/autoit3/docs/intro/installdir.htm:
psapi.dll - Process...() function helper DLL - used under Windows NT 4 only (Microsoft redistributable file)
Т.е получается на других системах работать не будет?

Вот функция:

Код: Выделить весь код
$PathIsProcess = _PathIsProcess("C:\Program Files\qip\qip.exe")
MsgBox(0, '', $PathIsProcess & @LF & @extended)

Func _PathIsProcess($sPath)
    If Not FileExists($sPath) Then Return SetError(1, 0, False)

    Local $sPathName = StringRegExpReplace($sPath, "^.*\\", "")
    Local $aProcList = ProcessList($sPathName)

    If Not ProcessExists($sPathName) Then Return SetError(2, 0, False)
    Local $iUbound = UBound($aProcList)-1

    Local $aProc, $aPath
    Local $vStruct = DllStructCreate('int[1024]')

    For $i = 1 To $iUbound
        $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $aProcList[$i][1])
        If Not IsArray($aProc) Or Not $aProc[0] Then Return SetError(3, 0, False)

        DllCall('Psapi.dll', 'int', 'EnumProcessModules', _
            'hwnd', $aProc[0], _
            'ptr', DllStructGetPtr($vStruct), _
            'int', DllStructGetSize($vStruct), _
            'int_ptr', 0)

        $aPath = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', _
            'hwnd', $aProc[0], _
            'int', DllStructGetData($vStruct, 1), _
            'str', '', _
            'int', 2048)
        If IsArray($aPath) And $aPath[3] = $sPath Then Return SetExtended($iUbound, $aProcList[$i][1])
    Next

    Return SetExtended($iUbound, False)
EndFunc
Может есть альтернативы?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 08:19, 26-12-2007 | #910