Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: Насчёт hWnd Добавлено: 20.01.06 22:57  

Автор вопроса:  Xrum
Получить hWnd контрола чужого окна вообще возможно?

Ответить

  Ответы Всего ответов: 34  

Номер ответа: 1
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #1
Добавлено: 20.01.06 23:27
http://www.mentalis.org/apilist/EnumChildWindows.shtml

Ответить

Номер ответа: 2
Автор ответа:
 VerhoLom



Вопросов: 20
Ответов: 285
 Профиль | | #2 Добавлено: 21.01.06 16:38
Есть такия функция WindowFromPoint(x,y). Первая даст хэндл окна по координатам (x,y).
Могу еще дать ссылочку (в добавок к вышеприведенной): http://www.vb.kiev.ua/ref/w32api/showdoc.php?f=enumchildwindows

Ответить

Номер ответа: 3
Автор ответа:
 BUG(O)R



ICQ: 827887 

Вопросов: 13
Ответов: 142
 Web-сайт: hunger.ru
 Профиль | | #3
Добавлено: 21.01.06 17:35
FindWindow - хендл родительского окна по классу/имени
FindWindowEx - хендл дочерник окон.

А причём здесь EnumChildWindows? Нужно узнать хендл ОКНА, а не перечислить все объекты.

Ответить

Номер ответа: 4
Автор ответа:
 VerhoLom



Вопросов: 20
Ответов: 285
 Профиль | | #4 Добавлено: 21.01.06 18:00
Вот так поперечисляете и авось и найдете что надо. Поданные Вами 2 функции находят хендлы, но если вы знаете имя класса. А если нет - то спользуйте EnumChildWindows. Вариаций много: можно найти дочернее окно (тот же контрол) по заголовку, можно узнать имя класса, его размеры, положение и т. д. Есть еще функция EnumWindows, которая перечисляет окна верхнего уровня, с которыми можно сделать то же самое.

Ответить

Номер ответа: 5
Автор ответа:
 BUG(O)R



ICQ: 827887 

Вопросов: 13
Ответов: 142
 Web-сайт: hunger.ru
 Профиль | | #5
Добавлено: 21.01.06 19:39
Уважаемый vbman, данные мною 2 функции находят не только по классу, но и по заголовку, предложения вами функция может быть полезна только в случае, когда нужно отсеить/найти контролы по их свойствам.

Ответить

Номер ответа: 6
Автор ответа:
 Xrum



Вопросов: 14
Ответов: 14
 Профиль | | #6 Добавлено: 21.01.06 20:08
Не понял. Имея хендл окна и используя EnumChildWindows я получу перечень хендлов его контролов?

Ответить

Номер ответа: 7
Автор ответа:
 Xrum



Вопросов: 14
Ответов: 14
 Профиль | | #7 Добавлено: 21.01.06 20:43
Исследуемое окно дочерних не имеет

Ответить

Номер ответа: 8
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #8 Добавлено: 21.01.06 21:05
Уважаемый vbman, данные мною 2 функции находят не только по классу, но и по заголовку
не путай людям голову...
Получить hWnd контрола чужого окна вообще возможно?
Какой нах заголовок у контрола?

2 Антон
Да, Enumить надо, vbman прав...
Держи ф-цию перечесления всех контролов, зная хендел окна
Private Function EnumElement_(ByVal hWnd As Long, ByVal lParam As Long) As Long 'CALLBACK !
'Перечесляет все элементы в указанном окне

Dim c As Byte, t As Integer
Dim sText As String
Dim sClass As String

        sClass = Space$(128)
        c = GetClassName(hWnd, sClass, 128)
        If c > 0 Then
            sClass = Left$(sClass, c)
                sText = Space$(128)
                t = GetWindowText(hWnd, sText, 128)
                ReDim Preserve TextBoxTxt(Counter)
                    TextBoxTxt(Counter) = "[" & sClass & "] = " & Chr(34) & Left$(sText, t) & Chr(34) & " (" & hWnd & ";)"
                    Counter = Counter + 1
            
        End If

EnumElement_ = 1
End Function

Public Sub EnumElement(hWndParent As Long)
'Перечесляет все элементы в указанном окне
    EnumChildWindows hWndParent, AddressOf EnumElement_, 0&
End Sub

Нужные API найди плиз сам, у меня в модуле там всё перемешано, все API насыпом... Используй для этого API Text Viewer, он вместе с VB идёт...

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 21.01.06 21:06
P.S.
Вызывать та шо паблик ессно :)

Ответить

Номер ответа: 10
Автор ответа:
 Xrum



Вопросов: 14
Ответов: 14
 Профиль | | #10 Добавлено: 21.01.06 22:56
ВОТ!!!! СПАСИБО!!!!!

Ответить

Номер ответа: 11
Автор ответа:
 BUG(O)R



ICQ: 827887 

Вопросов: 13
Ответов: 142
 Web-сайт: hunger.ru
 Профиль | | #11
Добавлено: 21.01.06 23:30

не путай людям голову...


А кто путает людям голову? Ты хочешь сказать в связке FindWindow & FindWindowEx я не смогу узнать заголовок кнопки или лабела? Смогу, на ВБ такое не писал, зато писал на ассемблере, поэтому могу точно сказать!!! Другое дело, что конечно не все контролы имеют заголовок, тут мой метод обламывается...

Ответить

Номер ответа: 12
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #12 Добавлено: 22.01.06 00:56
Что ты имеешь ввиду под "заголовком кнопки" или "заколовком лабела"?

Ответить

Номер ответа: 13
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #13
Добавлено: 22.01.06 09:11
2HACKER:
        На счет Caption наверное? ...

Ответить

Номер ответа: 14
Автор ответа:
 BUG(O)R



ICQ: 827887 

Вопросов: 13
Ответов: 142
 Web-сайт: hunger.ru
 Профиль | | #14
Добавлено: 22.01.06 12:33
Короче, я запутался:)
Попытаюсь объяснить... Я писал когда-то лоадер для программ защищённых Armadillo(кто не в курсе, это довольно хороший протектор исполняемых файлов со своим, встроенным, диалогом и алгоритмом регистрации, которая могла навешиваться на защищаемые этим протектором программы), который должен был брать данные из лабела, искать их в памяти, менять на валидные и "нажимать" на кнопку OK... так вот был диалог, на нём кнопоки OK и Cancel, находил я хендл этого диалога с помощью FindWindow по классу и заголовку, потом передавая этот хендл в FindWindowEx по классу(Button) и заголовку(OK) я находил хендл кнопки, ну а после SendMessage с параметром BM_CLICK... Почти так же находил хендлы текстовых полей и меток...

Ответить

Номер ответа: 15
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #15 Добавлено: 22.01.06 21:44
Ну так заголовок окна то, что если на форме (диалоге) было бы
несколько кнопок с Caption "ОК" (А не заголовком как ты говоришь, а то это
понять по разному можно...) х.з. какой хендел тебе вернула бы
FindWindowEx, скорее тот который меньше, а х.з. какой тебе нужен был
бы на самом деле... Аналогичная ситуация когда кнопка вообще без
Caption... Вот для таких целей и перечесляют все дочерние хенеделы
окна...

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам