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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Class вместо Title

Ответить
Настройки темы
Class вместо Title

Аватара для DmitryOlenin

Ветеран


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


Конфигурация

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


Вроде поиском не нашёл решения вопроса.

Ситуация такая:
Есть окно, название которого я, условно говоря, не знаю (система может быть на разных языках).
В мануале написано, что при Opt("WinTitleMatchMode",4) можно использовать вместо Title окна его Class.

Например так:
Код: Выделить весь код
Opt("WinTitleMatchMode",4)
Run ("RUNDLL32.EXE shell32.dll,Control_RunDLL sysdm.cpl,,2")
Sleep(2000)
WinActivate("[CLASS:#32770]", "")
Sleep(2000)
WinClose("[CLASS:#32770]", "")
Не работает... При этом по Title всё без проблем активируется.
Класс этот я достал при помощи WindowInfo. Пробовал без знака # - не помогло.

Подскажите, в чём собака порылась?

Отправлено: 17:43, 25-02-2009

 

Аватара для beve

Старожил


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

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


Как я понимаю этот класс не указывает напрямую на это системное окно, если запущены другие системные окна. Вот после этого твоего кода, но с MsgBoxом о названии окна по классе, я сначала выключил одно окно стороннее, потом другое, а на третий раз msgBox выдал название Свойства системы и соответственно только тогда окно закрылось.
Код: Выделить весь код
Opt("WinTitleMatchMode",4)
Run ("RUNDLL32.EXE shell32.dll,Control_RunDLL sysdm.cpl,,2")
Sleep(2000)
$a=WinGetTitle("[CLASS:#32770]", "")
MsgBox(0,"",$a)
WinActivate("[CLASS:#32770]", "")
Sleep(200)
WinClose("[CLASS:#32770]", "")
Если бы в других окнах, каких то программ, то наверно прокатило бы...

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 18:37, 25-02-2009 | #2



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

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


Аватара для DmitryOlenin

Ветеран


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

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


Удивлён Хитрая штука эти окна виндовых свойств...
А есть ли всё же способ найти именно то самое, искомое окно в данном случае?

Отправлено: 19:52, 25-02-2009 | #3


Аватара для beve

Старожил


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

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


Вот нашел на сайте здешнего гуру по Autoit библиотеку WinGetTitleEx.au3 и вот ссылка, по которой можна скачать http://creator-lab.ucoz.ru/load/3-1-0-19
и вод код с использованием этой библиотеки:
Код: Выделить весь код
#Include <WinGetTitleEx.au3> 
$Pid_okna=Run ("RUNDLL32.EXE shell32.dll,Control_RunDLL sysdm.cpl,,2")
Sleep(2000)
$title_okna=_WinGetTitleByPID($Pid_okna)
;MsgBox(0,"проба",$title_okna)
WinActivate($title_okna, "")
Sleep(2000)
WinClose($title_okna, "")

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Последний раз редактировалось beve, 25-02-2009 в 23:34.

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

Отправлено: 20:38, 25-02-2009 | #4


Аватара для Creat0R

Must AutoIt


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

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


Цитата DmitryOlenin:
В мануале написано, что при Opt("WinTitleMatchMode",4) можно использовать вместо Title окна его Class »
Во-первых манул старый, эта опция уже не нужна.
А во-вторых, «#32770» это класс многих системных диалогов, они могут быть скрыты, и функция обратиться к ним. Нужно использовать ещё и параметр $Text для более точного поиска окна.

И ещё, попробуй так (перед использованием «WinGetTitleEx.au3»):

Код: Выделить весь код
Run("RUNDLL32.EXE shell32.dll,Control_RunDLL sysdm.cpl,,2")

WinWait("[CLASS:#32770]", "Update")
WinActivate("[CLASS:#32770]", "Update")
WinWaitActive("[CLASS:#32770]", "Update")

WinClose("[CLASS:#32770]", "Update")

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

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

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:59, 25-02-2009 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Class вместо Title

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как установить свой class окна? proxy AutoIt 4 14-07-2009 01:07
Разное - Не определяется на компе карта Transcend SDHC-class 6-- 4Гб Zolter Накопители (SSD, HDD, USB Flash) 6 11-03-2008 00:19
изменения в Title oIo_DeN_oIo Вебмастеру 1 05-02-2008 02:58
Mc и Window title anger Общий по Linux 13 20-05-2004 10:46
title Belomor О сайте и форуме 5 22-07-2002 19:47




 
Переход