Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   "Сумасшедший" ProcessExists (http://forum.oszone.net/showthread.php?t=177657)

sashadeg 08-06-2010 13:49 1429951

"Сумасшедший" ProcessExists
 
Написал себе очередную "лентяйку-скрипт" для уничтожения процесса программы файлобменника при запуске он-лайн игры... Всем надеюсь понятен смысл этих действий.
Код:

While 1
        $process_hl=ProcessExists ("hl2.exe")
if  $process_hl = 1 Then
        ProcessClose ("Shareman.exe")
Else
          $process_sh=ProcessExists ("Shareman.exe")
        If $process_sh = 0 Then
                Run("C:\Program Files\Shareman\Shareman.exe")
        EndIf
EndIf
Sleep(3000)
WEnd

Но программы УПОРНО не хотела работать!!! Проверил всё, что только можно!!!
Пока дело не дошло до проверки функции "ProcessExists": оказывается эта функция "решила" возвращать не "1" при наличии процесса, а рандомное четырехзначное значение...
Все скрипты ранее мной писавшиеся тоже перестали работать.... Компилированые работают.

Хоть я и переписал прогу, чтобы она работала даже и при возвращении "$$$$" но все равно интересно почему так... и как это исправить?

Iska 08-06-2010 14:18 1429969

sashadeg, с какого перепуга сия функция должна возвращать единицу? В документации ясно сказано: при отсутствии процесса возвращается «0», при наличии процесса — его PID.

sashadeg 08-06-2010 14:25 1429973

Значит наши документации писали разные люди:

Взято из справки "любимого" Валерия Иванова:
ProcessExists
--------------------------------------------------------------------------------
Проверка наличия указанного процесса.

Возвращаемое значение:
Значение 1 означает наличие процесса, иначе 0.

Iska 08-06-2010 14:31 1429979

Мне сложно сказать, почему там переведено именно так. Не знаю, как было в версии 2.xx, но в AutoIt 3.xx изначально было именно так (можете сами пройтись поиском ключевой фразы «ProcessExists» по странице Сhangelog). Так что — загадка.

kaster 08-06-2010 15:57 1430018

В очередной раз убеждаюсь, что русская справка от г-на Иванова, в свете последних версий, приносит больше вреда нежели пользы

FlatX007 08-06-2010 19:11 1430141

Код:

; Кстати эксперименты приносят не плохие результаты =)
ConsoleWrite(ProcessExists("hl2.exe") & @CRLF)

; А если не уверен делается так:
If ProcessExists("hl2.exe") Then MsgBox(0, "", "ProcessExists")
If Not ProcessExists ("hl2.exe") Then MsgBox(0, "", "Not ProcessExists")


sashadeg 09-06-2010 07:39 1430484

Цитата:

Цитата FlatX007
; А если не уверен делается так: If ProcessExists("hl2.exe") Then MsgBox(0, "", "ProcessExists")
If Not ProcessExists ("hl2.exe") Then MsgBox(0, "", "Not ProcessExists") »

Всё время забываю что в Autoit можно писать такие "упращенные фразы". А то пишу всегда как в QBASIC...


Время: 16:46.

Время: 16:46.
© OSzone.net 2001-