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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Можно ли получить список окон, открытых процессом?

Ответить
Настройки темы
[решено] Можно ли получить список окон, открытых процессом?

Старожил


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

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


Добрый день! Допустим, есть процесс NotePad.exe. Как получить массив из одного элемента, который будет являться хэндлом окна блокнота?

Отправлено: 13:18, 25-12-2009

 

Аватара для Creat0R

Must AutoIt


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

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


Цитата evg64:
Как получить массив из одного элемента, который будет являться хэндлом окна блокнота? »
А зачем нужен массив?

Вот пример получения хендла окна «Сохранить как» у блокнота:

Код: Выделить весь код
$iPID = Run(@WindowsDir & "\Notepad.exe")
ProcessWait("Notepad.exe")

Sleep(500)
Send("^s")
Sleep(1000)

$hSaveAs = _WinGetHandleEx($iPID, "#32770", "", "FolderView")

MsgBox(64, "Result", "hWnd: " & $hSaveAs & ", Title: " & WinGetTitle($hSaveAs))

Func _WinGetHandleEx($iPID, $sClassNN="", $sPartTitle="", $sText="", $iVisibleOnly=1)
    If IsString($iPID) Then $iPID = ProcessExists($iPID)

    Local $aWList = WinList("[CLASS:" & $sClassNN & ";REGEXPTITLE:(?i).*" & $sPartTitle & ".*]", $sText)
    If @error Then Return SetError(1, 0, "")

    For $i = 1 To $aWList[0][0]
        If WinGetProcess($aWList[$i][1]) = $iPID Then
            If Not $iVisibleOnly Or ($iVisibleOnly And BitAND(WinGetState($aWList[$i][1]), 2)) Then Return $aWList[$i][1]
        EndIf
    Next

    Return SetError(2, 0, "")
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

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:31, 25-12-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Yashied

Старожил


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

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


Так можно получить список всех окон для процесса.

Код: Выделить весь код
#Include <Array.au3>
#Include <WinAPIEx.au3>

Global $Data = _WinAPI_EnumProcessWindows(ProcessExists('Notepad.exe'))

If IsArray($Data) Then
	_ArrayDisplay($Data)
EndIf
WinAPIEx.au3
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:48, 26-12-2009 | #3


Старожил


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

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


Цитата Creat0R:
А зачем нужен массив? »
Некоторые процессы, например IExplore.exe зачастую запускают по несколько окон, поэтому нужен массив.
Цитата Yashied:
Так можно получить список всех окон для процесса. »
Спасибо! Ровно то, что надо!

Последний раз редактировалось evg64, 26-12-2009 в 20:33.


Отправлено: 20:22, 26-12-2009 | #4


Аватара для Creat0R

Must AutoIt


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

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


Цитата evg64:
Некоторые процессы, например IExplore.exe зачастую запускают по несколько окон, поэтому нужен массив. »
Я это спросил в качестве коментария на цитату:
Цитата evg64:
Как получить массив из одного элемента, который будет являться хэндлом окна блокнота? »
Т.ч совет на будущее - желательно чтобы содержимое темы совпадало с её заголовком

P.S
Тема решена?

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

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

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


Отправлено: 23:35, 26-12-2009 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Можно ли получить список окон, открытых процессом?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как получить список пользователей Vagac AutoIt 2 06-11-2009 12:24
Разное - [решено] Как получить список локальных пользователей ZlojMyX Microsoft Windows 2000/XP 1 16-03-2009 11:16
Загрузка - [решено] Как настроить восстановление открытых окон при загрузке Romik2 Microsoft Windows 2000/XP 1 07-12-2007 13:30
Какой программой можно получить список ссылок всего сайта SimSim Хочу все знать 4 20-04-2006 10:40
Список компов в сети? Список открытых папок на компе? DANTIST Программирование и базы данных 3 12-06-2003 10:05




 
Переход