|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » как взаимодействовать с окном при помощи его заголовка |
|
|
как взаимодействовать с окном при помощи его заголовка
|
|
Новый участник Сообщения: 2 |
Привет!
Ни одна из функций, параметром которой явлется заголовок окна ("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 |
|
Старожил Сообщения: 265
|
Профиль | Отправить 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 | |
|