![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| theHelg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 23.6.2009 Репутация: нет Всего: нет |
Добрый день!
не могу разобраться! Пытаюсь найти хэндл на суб-окно в клиенте. Вижу через InqSoft Window Scanner, что в чужом клиенте у главного окна есть под-окно с классом Internet Explorer_Server. И что-то у меня не получается правильно все прописать... В чем ошибка?
|
|||
|
||||
| LamerTM |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 Репутация: нет Всего: 0 |
Попробуй этот код изменить на такой:
Ну и соответственно во всех вызовах этих функций сделать то же самое. У меня аналогичный код работает. |
||||
|
|||||
| LamerTM |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 Репутация: нет Всего: 0 |
Хотя нет, это не причина.
Имя класса по-моему не может содержать пробел. А у тебя оно с пробелом. |
|||
|
||||
| theHelg |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 23.6.2009 Репутация: нет Всего: нет |
А что мне даст ref?
Если я этот третий параметр тупо игнорю... А имя класса я взял из шпиона... это он такой класс видит у внутреннего окна IE например... Но мне кажется, что эта процеда вообще не отрабатывает... Так как даже если я вне проверки на класс делаю - то есть:
То не меняется содержимое статичной переменной статичного класса... И туда даже дебагер не заходит, и как отладить - без понятия... Ничего не пишет, ничего не происходит :( Как это все выглядит. У меня есть сторонний клиент, в котором мне нужно выполнить набор авто-тестов. К сожалению, требуется именно C#... У меня есть handle главного окна.
для данного окна не работает — видимо не реагирует на команды. То есть, как я думаю — нужно сюда поставлять уже непосредственно handle окна с нужным классом ("Internet Explorer_Server"). Или я не прав? Данным кодом пытаюсь найти все дочерние окна и запомнить нужный хандл. Но вот не получается... :( |
||||
|
|||||
| LamerTM |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 Репутация: нет Всего: 0 |
Посмотрел в Spy. Имя класса всё таки может содержать пробел.
Запустил твой код. Он работает. Находит хэндл окна по имени класса. Так что в коде что ты привёл всё правильно. Значит ошибка у тебя в чём-то другом. На всякий случай скопипасчу код что у меня заработал в студии: На форме должен быть RichTextBox и кнопка.
И код кнопки на форме:
Работает так. Запускаешь IE. Нажимаешь кнопку на форме. В ричтекстбоксе пишется хэндл его подокна с именем класса "Internet Explorer_Server". |
||||
|
|||||
| theHelg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 23.6.2009 Репутация: нет Всего: нет |
Хм...
действительно работает... Видимо все дело было в том, что я handle окна искал через:
И это, судя по всему, явно не правильно - так он не отрабатывает... Вечером буду тестировать, но судя по всему - то, что мне нужно |
|||
|
||||
| LamerTM |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 Репутация: нет Всего: 0 |
Если тебе надо найти конкретное окно и ты точно знаешь его место в иерархии, то незачем использовать EnumChildWindows. Всё можно сделать через FindWindowEx.
Код получится вроде такого:
PS 3 строчки вместо того, что у тебя в первом посте. Это сообщение отредактировал(а) LamerTM - 19.10.2009, 14:19 |
|||
|
||||
| theHelg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 23.6.2009 Репутация: нет Всего: нет |
Да, спасибо!
как говорит один мой знакомый охотник - Вот она почему не стреляла! не заряжена была!! С этим намного проще, так как действительно я знаю и главное окно, и место в иерархии... Хотя еще не понятно, почему теперь уже по правильному хандлу окна не могу послать клики мышки... это окно не реагирует :( Это сообщение отредактировал(а) theHelg - 21.10.2009, 12:05 |
|||
|
||||
| LamerTM |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 Репутация: нет Всего: 0 |
Нацель Spy на окно и кликни мышкой вручную. Посмотри какие сообщения получало окно при клике. Пошли такие же (обычно достаточно только какого-то одного из них, надо только узнать какого). Как правило, это работает. Но не всегда. Иногда может не работать. Я, правда, уже забыл почему.
Я когда посылал клики мыши, то (сейчас глянул в свой код) у меня wParam был равен единице. А у тебя там ноль. Может в этом причина. А может и нет. |
|||
|
||||
| theHelg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 23.6.2009 Репутация: нет Всего: нет |
хм,
да, спасибо! хорошая мысль, попробую в ручном режиме слать сообщения через указателя... хотя я и не знал, что можно спаем выяснить, какие сообщения шлются окну при клике... Я шщлю клик вот так:
в этот handle и подставляю полученные хандлы.... |
|||
|
||||
| LamerTM |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 Репутация: нет Всего: 0 |
А ты по вэб-станице кликать собираешься? Я читал что это дело сложное, и сам такого не делал. Вернее делал, но ламерским образом (правда в опере).
|
|||
|
||||
| theHelg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 23.6.2009 Репутация: нет Всего: нет |
Угу, судя по всему да...
Есть сторонний клиент, внутри которого что-то похожее на WebBrowser. Очень похоже на это, так как действительно клики мыши не принимает, а класс у него как у IE... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |