Показать полную графическую версию : Выловить дескриптор окна с помощью REGEXPCLASS и регулярных выражений
Доброго времени суток! Помогите, пожалуйста, разобраться (или хотя бы составить) с регулярными выражениями.
Дано:
1).Существует окно, имеющее класс: Afx:0000000000400000:0:0000000000000000:0000000001900015:000000001234CDEF
2).Первая часть неизменна: Afx:0000000000400000:0:0000000000000000:0000000001900015:00000000
3).Вторая часть состоит из 8 шестнадцатиричных символов.
Задача: Выловить дескриптор окна.
$sHandle = WinGetHandle("[REGEXPCLASS:(Afx:0000000000400000:0:0000000000000000:0000000001900015:00000000\x)")
MsgBox(4096, "", $sHandle)
Какие только варианты не пробовал, но... ни лыжи... и я...
$sHandle = WinGetHandle("[REGEXPCLASS:Afx:0000000000400000:0:0000000000000000:0000000001900015:000000000[0-9a-fA-F]{8}]")
MsgBox(4096, "", $sHandle)
или:
$sHandle = WinGetHandle("[REGEXPCLASS:Afx:0000000000400000:0:0000000000000000:0000000001900015:000000000(?i)[\da-f]{8}]")
MsgBox(4096, "", $sHandle)
Спасибо за ответ. Однако, я пробовал оба эти варианта.
При таком раскладе:
$sHandle = WinGetHandle("[CLASS:Afx:0000000000400000:0:0000000000000000:0000000001900015:0000000004A80869]")
MsgBox(4096, "", $sHandle)
Выдает результат: 0x00A30670
А при
$sHandle = WinGetHandle("[REGEXPCLASS:Afx:0000000000400000:0:0000000000000000:0000000001900015:00000000[0-9a-fA-F]{8}]")
MsgBox(4096, "", $sHandle)
или
$sHandle = WinGetHandle("[REGEXPCLASS:Afx:0000000000400000:0:0000000000000000:0000000001900015:000000000(?i)[\da-f]{8}]")
MsgBox(4096, "", $sHandle)
МесенжБокс пустой.
Может забыл что-то подключить
#include ???
не пойму...
Упростил эксперимент: взял калькулятор
CLASS:CalcFrame
$Hand = WinGetHandle("[CLASS:CalcFrame]")
MsgBox(4096, "", $Hand)
Результат: 0х01DB086E
$Hand = WinGetHandle("[REGEXPCLASS:CalcFrame]")
MsgBox(4096, "", $Hand)
;либо
$Hand = WinGetHandle("[REGEXPCLASS:[A-Za-z]{9}]")
MsgBox(4096, "", $Hand)
Результат: пустой месенджбокс
Cem,
Предупреждение за нарушение правил форума, пункт 2.7 (http://forum.oszone.net/rules.html#2.7) и пункт 3.19 (http://forum.oszone.net/rules.html#3.19):
2.7: В заголовке темы обязательно обозначайте название предмета, которого касается вопрос, а в теле сообщения максимально подробно опишите проблему (приведите аппаратную/программную конфигурацию, а также изложите ситуацию, в которой возникает проблема)...
Подробнее о принципах создания тем читайте в этом документе (http://forum.oszone.net/faq.php?faq=vb_read_and_post#faq_thread) и Правилах форумов.
3.19: Запрещается... Создавать темы, имеющие неинформативные или состоящие из заглавных букв заголовки (например, "Помогите!", "HELP!", "У меня проблема"). Такие темы будут закрыты или перенесены в Тест-форум. Если вы хотите вернуть перенесенную тему обратно, пока ее не закрыли в Тест-форуме, измените ее заголовок на осмысленный (http://forum.oszone.net/faq.php?faq=vb_board_usage#faq_rename_thread) и напишите об этом в теме.
Переименуйте пожалуйста тему (Как переименовать свою тему? (http://forum.oszone.net/faq.php?faq=vb_board_usage#faq_rename_thread)).
Результат: пустой месенджбокс »
Смотрите:
http://i.imgur.com/QJ62CCO.png
разве что у меня в Windows XP иной класс окна «calc.exe». Второй код тоже работает, другое дело, что совпадёт не только с «SciCalc», но и с любым другим подходящим окном.
Давайте уточним, о каком именно приложении и о каком его окне идёт речь?
Совсем неважно какое приложение, это не единичный случай.
Картина такая вот:
http://i.imgur.com/1R9B9CF.png
http://imgur.com/eDMBpRR.png
При всём этом REGEXPTITLE работает прекрасно
???
Cem, вижу.
В порядке бреда: разницы нет, собираете Вы x86 или x64 итоговое приложение?! У меня x86 ОС — потому проверить не могу.
Стоит Семёрка 64-битная. Может действительно, что-то ей не нравится в определении классов?... В целом с REGEXPTITLE все регулярные выражения работают на "Ура!".
Стоит Семёрка 64-битная. »
Я это понял по длине хэндла.
Может действительно, что-то ей не нравится в определении классов?... »
Шут его знает. Я потому и говорю: попробуйте скомпилировать исполняемый файл сначала в x86 и проверить именно посредством запуска этого скомпилированного исполняемого файла, а затем аналогично скомпилировать в x64 и так же проверить.
Коллеги с сообщества вон нашли некий баг в WinGetHandle: [Баг] Дескриптор окна с цифровым заголовком (http://autoit-script.ru/index.php?topic=17374.0).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.