1 (изменено: Indomito, 2014-04-17 12:00:57)

Тема: AHK: Завершение процесса без скрытого окна

Передо мной встала задача завершить процессы пред запуском другого.

+ И я написал скрипт.
; Завершаем процессы 

; pidgin.exe
  DetectHiddenWindows, On
  vWin := "pidgin.exe"
  SetTitleMatchMode, 2
  IfWinExist, %vWin%
    {
    Process, Close, %vWin%
    Sleep 1500 ; Чуть подождём = 1,5 сек
    }
    
; uTorrent.exe
  DetectHiddenWindows, On
  vWin := "uTorrent.exe"
  SetTitleMatchMode, 2
  IfWinExist, %vWin%
    {
    ;Process, Close, %vWin%
    WinClose
    Sleep 1500 ; Чуть подождём = 1,5 сек
    }
  
; thunderbird.exe
  DetectHiddenWindows, On
  vWin := "thunderbird.exe"
  SetTitleMatchMode, 2
  IfWinExist, %vWin%
    {
    Process, Close, %vWin%
    Sleep 1500 ; Чуть подождём = 1,5 сек
    }
    
; И запусаем "C:\Program Files (x86)\Skype\Phone\Skype.exe"  
  SetTitleMatchMode, 2
  Run, C:\Program Files (x86)\Skype\Phone\Skype.exe
  Sleep 10000 ;10 секунд на отработку старта 
  
  ExitApp

Вопрос.

Он отказывался работать и я стал выяснять почему и запустил AnVir Task Manager и оказалось ни одно из закрываемых приложений не имело скрытых окон, а только служебные, т.е. детектива DetectHiddenWindows, On оказалось бессмысленной.

Как определить служебные я не знаю, а PID я не пользовался

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

2

Re: AHK: Завершение процесса без скрытого окна

А зачем окно? Process, Close работает с именем процесса или его PID.

3

Re: AHK: Завершение процесса без скрытого окна

for i, processName in ["pidgin.exe", "uTorrent.exe", "thunderbird.exe"]
        Process close, %processName%

4

Re: AHK: Завершение процесса без скрытого окна

YMP т.е. я перебрал с условиями?

Тогда фрагмент

; pidgin.exe
  DetectHiddenWindows, On
  vWin := "pidgin.exe"
  SetTitleMatchMode, 2
  IfWinExist, %vWin%
    {
    Process, Close, %vWin%
    Sleep 1500 ; Чуть подождём = 1,5 сек
    }

Упрощается до

; pidgin.exe
  vWin := "pidgin.exe"
  Process, Close, %vWin%
  Sleep 1500 ; Чуть подождём = 1,5 сек

Верно?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

5

Re: AHK: Завершение процесса без скрытого окна

Вот подсказка:


Procname = notepad.exe 
Loop 3
    run %Procname%
Sleep 1001 
Process, Exist, %Procname%
pid := ErrorLevel
WinClose ahk_pid %pid%
Sleep 1001 
WinClose ahk_exe %Procname%
Sleep 1001 
Process, Close, %Procname%

Так как ProcessClose штука не самая кошерная, я бы так сделал:


Procname = notepad.exe 
Loop 11
    run %Procname%
Sleep 1001 
While WinExist("ahk_exe" Procname)
    WinClose ahk_exe %Procname%
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Завершение процесса без скрытого окна

bWRmeA у меня не всё так просто, я на форум выложил приблизительный скрипт, но спасибо за пример.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

7

Re: AHK: Завершение процесса без скрытого окна

Ещё не забудьте, что одинаковые процессы могут быть. Да и после выполнения Process, Close всё равно желательно проверить его выполнение, иногда процессы зависают именно из за того что их уничтожают а данные не сохранены, WМ_Close гуманнее.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: Завершение процесса без скрытого окна

serzh82saratov т.е. ждать закрытия процесса? А если он не запущен, то надо не использовать While, а в тупую крутить Loop

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

9

Re: AHK: Завершение процесса без скрытого окна

serzh82saratov пишет:

Ещё не забудьте, что одинаковые процессы могут быть. Да и после выполнения Process, Close всё равно желательно проверить его выполнение, иногда процессы зависают именно из за того что их уничтожают а данные не сохранены, WМ_Close гуманнее.

можно один пример, но используя название EXE файла и не запущенного из скрипта.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

10

Re: AHK: Завершение процесса без скрытого окна

Ничего не понял, зачем что то крутить, если процесс не запущен?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Завершение процесса без скрытого окна


Procname = notepad.exe 

While WinExist("ahk_exe" Procname)
    WinClose ahk_exe %Procname%
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Завершение процесса без скрытого окна

Кстати хорошо ещё и тем что ahk_exe поддерживает полные пути. То есть, есть например 2 процесса Test.exe. А запущен один из D:\Test.exe второй из D:\Test\Test.exe, и мы можем закрыть только тот что находится в нужной папке.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Завершение процесса без скрытого окна

Спасибо, сейчас попробую и отпишусь.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

14

Re: AHK: Завершение процесса без скрытого окна

Indomito, перечитайте внимательно заголовок темы, исправьте ошибку.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Завершение процесса без скрытого окна

Сорри, 2 раза менял название и опечатался... Исправлено.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

16

Re: AHK: Завершение процесса без скрытого окна

Ещё раз очепятался

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: Завершение процесса без скрытого окна

Поправил... нет, нельзя сидеть одновременно на 3-х форумах

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

18

Re: AHK: Завершение процесса без скрытого окна

serzh82saratov написал

Procname = pidgin.exe
While WinExist("ahk_exe" Procname)
    WinClose ahk_exe %Procname% 

Увы не срабатывает, что не так?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

19

Re: AHK: Завершение процесса без скрытого окна


DetectHiddenWindows, On
Procname = pidgin.exe
While WinExist("ahk_exe" Procname)
    WinClose ahk_exe %Procname% 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: Завершение процесса без скрытого окна

WinExist("ahk_exe" Procname)
WinClose ahk_exe %Procname% 

зачем искать окно дважды?

21

Re: AHK: Завершение процесса без скрытого окна

Правильно, достаточно и:


While WinExist("ahk_exe" Procname)
    WinClose 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

22

Re: AHK: Завершение процесса без скрытого окна

Вариант не помогает

DetectHiddenWindows, On
Procname = pidgin.exe
While WinExist("ahk_exe" Procname)
    WinClose ahk_exe %Procname% 

Идёт бесконечная попытка закрытия, вот часть лога

---- C:\AHK\AllSystemOS\LA2_start.ahk
013: DetectHiddenWindows,On
014: Procname = pidgin.exe
015: While,WinExist("ahk_exe" Procname)
016: WinClose,ahk_exe %Procname% (0.13)
015: While,WinExist("ahk_exe" Procname)
016: WinClose,ahk_exe %Procname% (0.13)
015: While,WinExist("ahk_exe" Procname)
016: WinClose,ahk_exe %Procname% (0.12)
015: While,WinExist("ahk_exe" Procname)
016: WinClose,ahk_exe %Procname% (0.13)
015: While,WinExist("ahk_exe" Procname)
016: WinClose,ahk_exe %Procname% (0.13)
015: While,WinExist("ahk_exe" Procname)
016: WinClose,ahk_exe %Procname% (0.13)
015: While,WinExist("ahk_exe" Procname)
016: WinClose,ahk_exe %Procname% (0.13)
015: While,WinExist("ahk_exe" Procname)
016: WinClose,ahk_exe %Procname% (0.12)
015: While,WinExist("ahk_exe" Procname)

Что теперь не так?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

23

Re: AHK: Завершение процесса без скрытого окна

Значит закрывать процесс, и проверять что выполнено.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

24

Re: AHK: Завершение процесса без скрытого окна

serzh82saratov да, так поступил

Написал

C:\Users\SASA>taskkill /IM pidgin.exe
Успех: Отправлен сигнал завершения процессу "pidgin.exe" с идентификатором 3776.

фигушки, т.е. он разрывает соединение с интернетом и переустанавливает его и спокойно продолжает работать.



Написал

C:\Users\SASA>taskkill /F /IM pidgin.exe
Успешно: Процесс "pidgin.exe", с идентификатором 3424, был завершен.

помогло


Как вариант, у меня написана функция реализации StdIn для AHK - могу ей воспользоваться,  а может что есть более простое?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

25 (изменено: Indomito, 2014-04-18 06:42:09)

Re: AHK: Завершение процесса без скрытого окна

Вот конечный вариант - рабочий, но он без модуля обработки консоли... это очень много строк

; Запрет повторного запуска
#SingleInstance
#Include C:\AHK\AllSystemOS\              ; Устанавливаем путь к файлам скрипта
#Include RunCon.ahk                       ; Запуск с консоли

 сMsg_OkTaskModalInfo  := 4+8192+64 ;Function Yes/No button  + Task Modal + Icon Asterisk(info)

 ; Завершаем процессы
  titul := "Результат закрытия процессов" 
  arMain := [["taskkill /F /IM pidgin.exe",""]
            ,["taskkill /F /IM uTorrent.exe",""]
            ,["taskkill /F /IM thunderbird.exe",""]
            ,["",""]]            
  res := "`n`n"
  i := 1
  While (arMain[i,1])
    {
      CmdLine := arMain[i,1]
      RunCon(CmdLine, 0, Output)
      arMain[i,2] := Output  "`n"
      res := res  arMain[i,2]
      i++
    }
  res := res "`n Запускаем SKYPE - ДА / НЕТ ?"
  MsgBox, % сMsg_OkTaskModalInfo, % titul, % res, 20
  IfMsgBox, No
    goto lExt
; Запусаем "C:\Program Files (x86)\Skype\Phone\Skype.exe"  
  SetTitleMatchMode, 2
  Run, C:\Program Files (x86)\Skype\Phone\Skype.exe
  Sleep 5000 ;5 секунд на отработку старта 
lExt:  
  ExitApp
Post's attachments

RunCon.ahk 4.99 kb, 5 downloads since 2014-04-18 

You don't have the permssions to download the attachments of this post.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

26 (изменено: Indomito, 2014-04-19 19:52:27)

Re: AHK: Завершение процесса без скрытого окна

Для справки
Функция StdIn для AHK понимает и работает в  ANSI-32, UTF-32 и UTF-64, но я проверял её только в UTF-64

P.S. Опции языка/компилятора - AHK_L ANSI-32 и UTF-32/64 (Unicode)

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

27

Re: AHK: Завершение процесса без скрытого окна

Братишка, отсыпь и мне немного UTF-64 символов.

28 (изменено: Indomito, 2014-04-19 13:30:10)

Re: AHK: Завершение процесса без скрытого окна

bWRmeA сорри... опять опечатался

Исправлено - Дополнено

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

29

Re: AHK: Завершение процесса без скрытого окна

UTF-** это кодировка текста. Есть AutoHotkey Unicode, 64 bit.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

30

Re: AHK: Завершение процесса без скрытого окна

While WinExist("ahk_exe" Procname)
    WinClose 

А если окно не закроется - получается вечный цикл и затык.
Поэтому правильней так:

winGet, winHwnd, List, % Procname
loop % winHwnd
  winClose, % "ahk_id " winHwnd%a_index%

31

Re: AHK: Завершение процесса без скрытого окна

Я написал

taskkill /F /IM pidgin.exe

не просто так, ключ /F потребовался т.к. дигностика говорила что задача запущена извне и это всё относилось к сетевым ПО, а обычные закрываются просто и без проблем.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro