Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как получить HWND edit'a в окне

4.1K
22 августа 2006 года
GRIENDERS
117 / / 06.06.2006
Есть стандартный дозвонщик до инета в винде. Нужно получить HWND edit'a, в который вводится пароль. Кто нить знает???
398
22 августа 2006 года
Alexandoros
630 / / 21.10.2005
Проенумеровать виндовсы, а потом контроллы.
4.1K
22 августа 2006 года
GRIENDERS
117 / / 06.06.2006
[QUOTE=Alexandoros]Проенумеровать виндовсы, а потом контроллы.[/QUOTE]
ни чё не понял. Давай пример
398
22 августа 2006 года
Alexandoros
630 / / 21.10.2005
EnumWindows
EnumChildWindows
и мсдн + поиск тебе в руки.
354
22 августа 2006 года
ШпиЁн
468 / / 19.02.2006
вот пример. перечисляет все окна в системе и контролы в них.
354
22 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Хм... Если тебе нужно будет выдрать пароль оттуда(;)), то обычным GetWindowText ты ничего не получишь ;-)))))
4.1K
22 августа 2006 года
GRIENDERS
117 / / 06.06.2006
[QUOTE=ШпиЁн]Хм... Если тебе нужно будет выдрать пароль оттуда(;)), то обычным GetWindowText ты ничего не получишь ;-)))))[/QUOTE]
НЕ обязательно. Вот что я имел ввиду:
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 применяется к окнам а не к контролам.
4.1K
22 августа 2006 года
GRIENDERS
117 / / 06.06.2006
[QUOTE=ШпиЁн]вот пример. перечисляет все окна в системе и контролы в них.[/QUOTE] Шпиен! чё-то не могу скачать архив. Вышли plz на мыло [email]GRIENDERS_007@MAIL.RU[/email]
499
22 августа 2006 года
madjahed
149 / / 14.01.2004
[QUOTE=GRIENDERS]EnumWindows EnumChildWindows применяется к окнам а не к контролам.[/QUOTE]

Если кто не знает :-Х, то все контролы (Edit, RadioButton и т.д.) в Виндовозе есть окна...
354
22 августа 2006 года
ШпиЁн
468 / / 19.02.2006
[QUOTE=madjahed]все контролы (Edit, RadioButton и т.д.) в Виндовозе есть окна...[/QUOTE]

:-))))))))))) тссс!!! это большой секрет дяди Билла ;)

ВСЁ что есть в винде из интерфейса - это всё окна. даже кнопка - тоже окно!
354
22 августа 2006 года
ШпиЁн
468 / / 19.02.2006
А вообще окно подключения к инету имеет предопределенный класс. Его текстовое имя - #32770 (или мне показалось??? ;))... Вот его и надо искать в системе через FindWindow. А уже для него перечислять дочерние окна - одно из них и будет окошком ввода пароля.

PS: Господа скачавшие этот пример, не бейте меня ногами если программулина вылетает с ошибкой. это лишь набросок, если нужна подправленная версия - могу скинуть :-)))
4.1K
23 августа 2006 года
GRIENDERS
117 / / 06.06.2006
[QUOTE=ШпиЁн]:-))))))))))) тссс!!! это большой секрет дяди Билла ;)

ВСЁ что есть в винде из интерфейса - это всё окна. даже кнопка - тоже окно![/QUOTE]
За архив спасибо. А как тебе вот эта цитата из книги Фаронова :"Стандартный класс TLabel порожден от класса TCustomLabel, являющегося базовым для всех визуальных компонентов, которые демонстрируют на экране текст, но не имеют дескриптор окна. Класс TCustomStaticLabel обладает почти такой же функциональностью, но получает дескриптор окна."
354
23 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Хм... обычный элемент управления Static имеет дескриптор. А TLabel и т.д - это надстройки. Раз так там написано, значит основания для этого есть, книгу я эту не читал, под Builder и т.д. не пишу, только VC++ & winapi.
534
24 августа 2006 года
HarryAxe
448 / / 19.01.2006
Всё очень просто. Пара манипуляций со Spy++ и одна строчка, набранная в отладчике, показали, что диалог имеет имя класса "#32770" а необходимый контрол - идентификатор 1103. Имеем код:
 
Код:
HWND hwndDlg = ::FindWindow("#32770", NULL);
HWND hwndCtrl = GetDlgItem(hwndDlg, 1103);

Вот только что это даст, если система не хранит оригинальный пароль в этом элементе управления?

PS. Кстати, в VCL надписи действительно не являются окнами (текст там просто рисуется на родительском окне).
4.1K
24 августа 2006 года
GRIENDERS
117 / / 06.06.2006
[QUOTE=HarryAxe]Всё очень просто. Пара манипуляций со Spy++ и одна строчка, набранная в отладчике, показали, что диалог имеет имя класса "#32770" а необходимый контрол - идентификатор 1103. Имеем код:
 
Код:
HWND hwndDlg = ::FindWindow("#32770", NULL);
HWND hwndCtrl = GetDlgItem(hwndDlg, 1103);

Вот только что это даст, если система не хранит оригинальный пароль в этом элементе управления?

А разве ID этого контрола не назначается динамически?? А чтобы получить пароль, можно попробовать сделать так:
::SendMessage(hwnd edit'a, em_setpasswordchar,0,0)
354
24 августа 2006 года
ШпиЁн
468 / / 19.02.2006
ID этого контрола не назначается динамически. Это константа. Иначе как программа внутри себя сможет вызвать GetDlgItemText и подобные функции?

PS. ведь не обязательно в системе будет только одно окно такого класса, а ведь FindWindow вернет только первое, причем оно не обязательно будет тем что нужно.... лучше через EnumWindows, пример лежит выше.
284
28 августа 2006 года
michael_is_98
587 / / 25.02.2005
Вообще если нужно получить пароль и имя для дозвона (если эта информация была сохранена пользователем), то ее можно найти в реестре. Есть функции из WinApi для этого - из модуля mpr.dll
4.1K
28 августа 2006 года
GRIENDERS
117 / / 06.06.2006
[QUOTE=michael_is_98]Вообще если нужно получить пароль и имя для дозвона (если эта информация была сохранена пользователем), то ее можно найти в реестре. Есть функции из WinApi для этого - из модуля mpr.dll[/QUOTE] Давай поподробнее - какой ключ, какой раздел?? Кстати, в каких файлах хранится сам реестр?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог