HWND hwndDlg = ::FindWindow("#32770", NULL);
HWND hwndCtrl = GetDlgItem(hwndDlg, 1103);
Как получить HWND edit'a в окне
Есть стандартный дозвонщик до инета в винде. Нужно получить HWND edit'a, в который вводится пароль. Кто нить знает???
Проенумеровать виндовсы, а потом контроллы.
ни чё не понял. Давай пример
EnumChildWindows
и мсдн + поиск тебе в руки.
вот пример. перечисляет все окна в системе и контролы в них.
Хм... Если тебе нужно будет выдрать пароль оттуда(;)), то обычным GetWindowText ты ничего не получишь ;-)))))
НЕ обязательно. Вот что я имел ввиду:
h=::FindWindow(NULL,"Подключение к UTK"); // utk - провайдер
if (h) st.SetWindowTextA("Окно найденo"); // st - имя переменной CStatic
h1=::FindWindowEx(h, HWND(0),"edit",NULL);
if (h1) {
st.SetWindowTextA("Edit найден");
::SendMessage(h1, em_setreadonly, 1,1);
После всего этого edit c именем пользователя становится недоступным. А МНЕ НУЖЕН ДЕСКРИПТОР С ПАРОЛЕМ - ТО БИШЬ 2-ОЙ ПО СЧЕТУ. EnumWindows EnumChildWindows применяется к окнам а не к контролам.
[QUOTE=ШпиЁн]вот пример. перечисляет все окна в системе и контролы в них.[/QUOTE] Шпиен! чё-то не могу скачать архив. Вышли plz на мыло [email]GRIENDERS_007@MAIL.RU[/email]
Если кто не знает :-Х, то все контролы (Edit, RadioButton и т.д.) в Виндовозе есть окна...
:-))))))))))) тссс!!! это большой секрет дяди Билла ;)
ВСЁ что есть в винде из интерфейса - это всё окна. даже кнопка - тоже окно!
PS: Господа скачавшие этот пример, не бейте меня ногами если программулина вылетает с ошибкой. это лишь набросок, если нужна подправленная версия - могу скинуть :-)))
ВСЁ что есть в винде из интерфейса - это всё окна. даже кнопка - тоже окно![/QUOTE]
За архив спасибо. А как тебе вот эта цитата из книги Фаронова :"Стандартный класс TLabel порожден от класса TCustomLabel, являющегося базовым для всех визуальных компонентов, которые демонстрируют на экране текст, но не имеют дескриптор окна. Класс TCustomStaticLabel обладает почти такой же функциональностью, но получает дескриптор окна."
Хм... обычный элемент управления Static имеет дескриптор. А TLabel и т.д - это надстройки. Раз так там написано, значит основания для этого есть, книгу я эту не читал, под Builder и т.д. не пишу, только VC++ & winapi.
Код:
Вот только что это даст, если система не хранит оригинальный пароль в этом элементе управления?
PS. Кстати, в VCL надписи действительно не являются окнами (текст там просто рисуется на родительском окне).
Код:
HWND hwndDlg = ::FindWindow("#32770", NULL);
HWND hwndCtrl = GetDlgItem(hwndDlg, 1103);
HWND hwndCtrl = GetDlgItem(hwndDlg, 1103);
Вот только что это даст, если система не хранит оригинальный пароль в этом элементе управления?
А разве ID этого контрола не назначается динамически?? А чтобы получить пароль, можно попробовать сделать так:
::SendMessage(hwnd edit'a, em_setpasswordchar,0,0)
PS. ведь не обязательно в системе будет только одно окно такого класса, а ведь FindWindow вернет только первое, причем оно не обязательно будет тем что нужно.... лучше через EnumWindows, пример лежит выше.
Вообще если нужно получить пароль и имя для дозвона (если эта информация была сохранена пользователем), то ее можно найти в реестре. Есть функции из WinApi для этого - из модуля mpr.dll
[QUOTE=michael_is_98]Вообще если нужно получить пароль и имя для дозвона (если эта информация была сохранена пользователем), то ее можно найти в реестре. Есть функции из WinApi для этого - из модуля mpr.dll[/QUOTE] Давай поподробнее - какой ключ, какой раздел?? Кстати, в каких файлах хранится сам реестр?