Что нового

[Окна, Диалоги] Как закрыть дочерние окна имея название только основного

Yegorich_555

Новичок
Сообщения
20
Репутация
0
Всем привет. Часто возникает задача закрыть все дочерние окна и оставить только основное.... и задача - закрыть все окна дочерние окна вместе с основным. Есть задача написать такой скрипт. Из исходных данных мы имеем только название основного окна! Как это реализовать. Интересует пример на диспетчере задач. Там пока не закроешь дочерние, не закроется и основное. Определенно функции
Код:
WinClose("Диспетчер устройств")
будет недостаточно. Нужно как-то найти все дочерние окна... Как быть?
 

InnI

AutoIT Гуру
Сообщения
4 505
Репутация
1 225
Yegorich_555 [?]
Интересует пример на диспетчере задач
Может, всё-таки, на диспетчере устройств? ;)
Код:
#RequireAdmin

; запускаем диспетчер устройств
$PID = ShellExecute("devmgmt.msc")

; работаем с окнами свойств
MsgBox(0, "", "Откройте несколько окон свойств")

; закрываем окна
$Wins = WinList()
For $i = 1 To $Wins[0][0]
  If WinGetProcess($Wins[$i][1]) = $PID And StringInStr($Wins[$i][0], "Свойства:") Then WinClose($Wins[$i][1])
Next
WinClose("Диспетчер устройств")
 
Автор
Yegorich_555

Yegorich_555

Новичок
Сообщения
20
Репутация
0
Именно этот вариант не работает:
ошибка
Код:
>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "E:\Install\Moxa_Open_Setting by Yegor\Moxa_CloseSet v1.1.au3"    
E:\Install\Moxa_Open_Setting by Yegor\Moxa_CloseSet v1.1.au3 (3) : ==> Variable used without being declared.:
If WinGetProcess($Wins[$i][1]) = $PID And StringInStr($Wins[$i][0], "????????:") Then WinClose($Wins[$i][1])
If WinGetProcess($Wins[$i][1]) = ^ ERROR
>Exit code: 1    Time: 0.078

Но смысл ясен)
 

InnI

AutoIT Гуру
Сообщения
4 505
Репутация
1 225
Ошибка говорит о том, что у вас не объявлена переменная $PID.
Если запускать мой пример, как есть, то ошибка не возникает. Вывод - проблема на вашей стороне :smile:
 
Автор
Yegorich_555

Yegorich_555

Новичок
Сообщения
20
Репутация
0
Да вижу) заработался я однако) внимание падает на ноль) Спасибо!)
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Может использовать ? :
Код:
#Include 'WinAPIEx.au3'
_WinAPI_EnumChildProcess
_WinAPI_EnumChildWindows
 
Верх