|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » как взаимодействовать с окном при помощи его заголовка |
|
как взаимодействовать с окном при помощи его заголовка
|
Новый участник Сообщения: 2 |
Профиль | Отправить PM | Цитировать Привет!
Ни одна из функций, параметром которой явлется заголовок окна ("title"), не работает. Во всех работающих примерах, где используются подобные функции, в качестве параметра заголовка используется конструкция вида ("[CLASS:classname]"). Функция, которая позволяет определить classname окна приложения так же обращается к этому окну посредством параметра title, т. е. не работает. Я запускаю окно браузера firefox. Окно с загруженной страницей имеет заголовок "VidMind CMS|Login - Mozilla Firefox". Когда указываешь это в качестве заголовка окна, окно не находится. То же самое я пробовал проделать с блокнотом, указывая в качестве заголовка "Untitled - Notepad". Выход я вижу в использовании classname'а firefox, но его я не знаю и нигде не могу найти. В чём здесь проблема? Нужно что-то прописать в начале скрипта для инициализации этих функций или в чём проблема может быть? #Include <WinAPI.au3> Opt("WinTitleMatchMode", 2) Global $firefox, $chrome, $ie, $url1, $userName $firefox = @ProgramFilesDir & "\Mozilla Firefox\firefox.exe" $url1 = "https://79.125.49.183/?locale=en" Run($firefox & " " & $url1, "", @SW_MAXIMIZE) sleep(1000) $hwnd=WinExists("VidMind CMS|Login - Mozilla Firefox", "") sleep(5000) $cname=_WinAPI_GetClassName($hwnd) MsgBox(0, "Output", $cname) |
|
Отправлено: 15:37, 17-08-2011 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:28, 17-08-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать проблема не в том, чтобы обращаться к firefox
я не могу обратиться ни к одному окну любого приложения(блокнот, google chrome, image viewer) как обращаться к окнам, используя title или как узнать classname окна любого приложения найденные примеры не работают... |
Отправлено: 17:37, 17-08-2011 | #3 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать impa,
#include <WinAPI.au3> #include <Array.au3> $sFileExe = @WindowsDir & '\notepad.exe' $sProcess = StringRegExpReplace($sFileExe, '^.*\\', '') $iCount = 0 ;If Not ProcessExists($sProcess) Then Run($sFileExe) ;EndIf $iPID = ProcessWait($sProcess, 5) If Not $iPID Then MsgBox(16, 'Error', 'Error') Exit EndIf $aList = WinList() If Not $aList[0][0] Then MsgBox(16, 'Error', 'Error') Exit EndIf Dim $aResult[$aList[0][0] + 1][4] For $i = 1 To $aList[0][0] If WinGetProcess($aList[$i][1]) = $iPID Then $iCount += 1 $aResult[$iCount][0] = $aList[$i][0] ;Title $aResult[$iCount][1] = $aList[$i][1] ;Handle $aResult[$iCount][2] = _WinAPI_GetClassName($aList[$i][1]);ClassName If BitAND(WinGetState($aList[$i][1]), 2) Then $aResult[$iCount][3] = 'visible' Else $aResult[$iCount][3] = 'hide' EndIf EndIf Next If $iCount Then ReDim $aResult[$iCount + 1][4] $aResult[0][0] = $iCount _ArrayDisplay($aResult, 'Все окна процесса ' & $sProcess) Else MsgBox(16, 'Error', 'Error') EndIf |
Последний раз редактировалось madmasles, 17-08-2011 в 18:58. Отправлено: 18:52, 17-08-2011 | #4 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать Цитата impa:
$Class='SciCalc' If ProcessExists('calc.exe') Then ProcessClose('calc.exe') ; закрываем калькулятор если он существует Run('Calc') WinWaitActive('[CLASS:'&$Class&']', '', 5) ; ждём появления $see=WinGetTitle('[CLASS:'&$Class&']') If Not WinExists($see) Then MsgBox(0, 'Message', 'Окно не найдено, завершаме работу скрипта') Exit EndIf MsgBox(0, 'Имя окна', $see) MsgBox(0, 'Сообшение', 'Сворачиваем') WinSetState('[CLASS:'&$Class&']', '', @SW_MINIMIZE) MsgBox(0, 'Сообшение', 'Разворачиваем') WinSetState('[CLASS:'&$Class&']', '', @SW_RESTORE) MsgBox(0, 'Сообшение', 'Изменяем координаты') WinMove('[CLASS:'&$Class&']', '', 0, Default, 800, Default) ; перемещаем калькулятор вправо, делаем его выше MsgBox(0, 'Сообшение', 'Перемещаем кнопку') ControlMove('[CLASS:'&$Class&']', '', '[CLASS:Button; INSTANCE:24]', 385, 38, 62, 34) MsgBox(0, 'Сообшение', 'Вставляем текст 345') ControlSetText('[CLASS:'&$Class&']', '', '[CLASS:Edit; INSTANCE:1]', '345') MsgBox(0, 'Сообшение', 'Деактивируем кнопки') For $i = 1 to 27 ControlDisable('[CLASS:SciCalc]', '', '[CLASS:Button; INSTANCE:'&$i&']') Next MsgBox(0, 'Сообшение', 'Изменяем заголовок') WinSetTitle('[CLASS:'&$Class&']', '', 'Новый заголовок окна') MsgBox(0, 'Сообшение', 'Изменяем прозрачность') WinSetTrans('[CLASS:'&$Class&']', '', 170) MsgBox(0, 'Сообшение', 'Помигаем в панели задач') WinFlash('[CLASS:'&$Class&']', '', 9, 200) ; ControlEnable('[CLASS:SciCalc]', '', '[CLASS:Button; INSTANCE:24]') $Class='Notepad' If ProcessExists('Notepad.exe') Then ProcessClose('Notepad.exe') Run('Notepad') WinWaitActive('[CLASS:'&$Class&']', '', 5) ; ждём появления $see=WinGetTitle('[CLASS:'&$Class&']') If Not WinExists($see) Then MsgBox(0, 'Message', 'Окно не найдено, завершаме работу скрипта') Exit EndIf MsgBox(0, 'Имя окна', $see) MsgBox(0, 'Сообшение', 'Сворачиваем') WinSetState('[CLASS:'&$Class&']', '', @SW_MINIMIZE) MsgBox(0, 'Сообшение', 'Разворачиваем') WinSetState('[CLASS:'&$Class&']', '', @SW_RESTORE) MsgBox(0, 'Сообшение', 'Изменяем координаты') WinMove('[CLASS:'&$Class&']', '', 0, Default, 800, Default) MsgBox(0, 'Сообшение', 'Вставляем текст') ControlSetText('[CLASS:'&$Class&']', '', '[CLASS:Edit; INSTANCE:1]', 'Ну работает же') MsgBox(0, 'Сообшение', 'Деактивируем') ControlDisable('[CLASS:'&$Class&']', '', '[CLASS:Edit; INSTANCE:1]') MsgBox(0, 'Сообшение', 'Изменяем заголовок') WinSetTitle('[CLASS:'&$Class&']', '', 'Новый заголовок окна') MsgBox(0, 'Сообшение', 'Изменяем прозрачность') WinSetTrans('[CLASS:'&$Class&']', '', 170) MsgBox(0, 'Сообшение', 'Помигаем в панели задач') WinFlash('[CLASS:'&$Class&']', '', 9, 200) |
||
Отправлено: 03:02, 18-08-2011 | #5 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать impa,
Эта строка у Вас неправильная: $hwnd = WinExists("VidMind CMS|Login - Mozilla Firefox", "") $hwnd = WinWait("VidMind CMS|Login - Mozilla Firefox") ;или на $hwnd = WinWaitActive("VidMind CMS|Login - Mozilla Firefox") |
Отправлено: 10:13, 18-08-2011 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Как скрыть меню заголовка в .vbs? | Deep2007 | Скриптовые языки администрирования Windows | 3 | 31-03-2011 14:44 | |
Разное - смещение заголовка и элементов управления окном | ruslan-k | Оформление Windows XP | 1 | 08-03-2011 06:46 | |
[решено] Как просматривать ресурсы при помощи AutoIt | Pavluha | AutoIt | 27 | 05-03-2011 16:20 | |
Интерфейс - Затемнение панели задач и заголовка окна, при развертывании на весь экран. | amzir | Microsoft Windows 7 | 5 | 01-10-2009 18:16 | |
как записать звуковой файл при помощи микрофона. | peskov | Хочу все знать | 10 | 10-04-2003 19:29 |
|