Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2016, 13:29   #1
ivanik
Пользователь
 
Регистрация: 16.04.2016
Сообщений: 11
По умолчанию Ввод пароля в чужое окно

Не могу ввести пароль в окно инсталлятора SmartInstalMaker
при инсталляции программы:
Вот фрагмент кода:
Код:
1  if findwindow(nil, 'Установка программы') = 0 then
2  begin
3  h1 := FindWindow(nil, 'Установка программы'); //здесь находит Hendl 
4  h4 := FindWindowEx(h1,0,'obj_BUTTON',nil); //здесь находит Hendl 
5  h2 := FindWindowEx(h4,0,'obj_EDIT',nil); //здесь Hendl = 0, 
    // хотя он есть в контейнере obj_BUTTON
6  SendMessage(h2, WM_SETTEXT, 0, lparam(pchar('пароль)));  
    // поле obj_EDIT не заполняется
7  h3:=findwindowex(h1,0,nil,'Далее'); //естественно здесь Hendl = 0  
8  sendmessage(h3,BM_CLICK,0,0); 
9  if (h3<>0) then
10    begin
11    SetForegroundWindow(h3);
12    SendMessage(h3, WM_ACTIVATE, 1, 0);
13    SendMessage(h3, WM_ENABLE, 1, 0);
14  SendMessage(h3, WM_SETFOCUS, 1, 0);
15   end;
16   SendMessage(h3,BM_CLICK,0,0);      
17  end;
Подобный код без проблем работает при вводе паролей в Word и прочих приложениях.
Поле ввода пароля (класс obj_EDIT) идентифицируется в SPY++.
При вызове окна ввода пароля курсор уже стоит в нем.
Помогите разобраться.
Спасибо.

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 11.05.2016 в 14:24.
ivanik вне форума Ответить с цитированием
Старый 11.05.2016, 17:55   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
h4 := FindWindowEx(h1,0,'obj_BUTTON',nil); //здесь находит Hendl
странное имя для контейнера. Он там один или есть ещё граждане с такими именами? Скрин SPY желательно прикрепить бы (развёрнутый)
eoln вне форума Ответить с цитированием
Старый 12.05.2016, 10:08   #3
ivanik
Пользователь
 
Регистрация: 16.04.2016
Сообщений: 11
По умолчанию чужое окно ввода пароля

Здравствуйте!
Спасибо, что откликнулись на просьбу.

Имя контейнера "Пароль установки", а его класс obj_BUTTON (конечно странно).
после ввода пароля (если вручную), то кнопка "Далее" становится активной.

Но так как я не могу прочитать Hendl поля ввода пароля obj_EDIT, то не могу активировать кнопку "Далее".
Пробовал нажать кнопку "Отмена". Она срабатывает нормально.
В общим тормозит поле ввода obj_EDIT.
В SPY++ и др. подобных программах это поле ввода просматривается как
дочернее окно контейнера "Пароль установки".
Hendl самого контейнера считывается.
Пробовал вместо класса obj_EDIT вводить edit и пустую стороку
- не проходит.
Вроде простое дело, а я на нем тормознулся.
С другими программами я спокойно заполняю несколько полей и нажимаю несколько кнопок, а здесь не могу.
Если не трудно попробуйте поэкспериментировать непосредственно с этим окно инсталлятора SmartInstalMaker
Изображения
Тип файла: jpg окно1.JPG (9.0 Кб, 93 просмотров)
Тип файла: jpg окно1_1.JPG (9.5 Кб, 88 просмотров)
ivanik вне форума Ответить с цитированием
Старый 12.05.2016, 11:01   #4
ivanik
Пользователь
 
Регистрация: 16.04.2016
Сообщений: 11
Сообщение Ввод пароля в чужое окно

Извините! Забыл вставить фрагмент SPY++:

А это проверка WinSight - утилиты из Delphi 7:
.
Везде показывает контейнер и вложенное в него окно ввода класса obj_EDIT.
Спасибо за внимание.
ivanik вне форума Ответить с цитированием
Старый 12.05.2016, 11:05   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Более интересен был скрин Spy. Скачал этот SmartInstalMaker, запустил, и у меня спу показывает ещё и obj_STATIC
0.jpg
Перед
Код:
h4 := FindWindowEx(h1,0,'obj_BUTTON',nil); //здесь находит Hendl
нужно поискать ещё и obj_STATIC, а уже в нём obj_BUTTON и далее obj_EDIT
Но так как там несколько obj_STATIC, то придётся перебирать проверяя дополнительно стиль каждого obj_STATIC (он должен быть visible), либо не заморачиваться и смотреть есть ли в этом obj_STATIC объект obj_BUTTON с текстом "Пароль установки". Если нет, то проверять следующий obj_STATIC

Пы.Сы. Картинки не отображаются

Последний раз редактировалось eoln; 12.05.2016 в 11:08.
eoln вне форума Ответить с цитированием
Старый 12.05.2016, 18:41   #6
ivanik
Пользователь
 
Регистрация: 16.04.2016
Сообщений: 11
По умолчанию

Спасибо. Я попробую еще.
ivanik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зафиксировать чужое окно NetSpace Win Api 7 19.12.2014 15:29
[?] Послать клавишу в чужое окно, не выводя окно на передний план. Moriarty Win Api 4 21.02.2011 05:11
Control в чужое окно Qwe1 Win Api 5 25.12.2010 00:27
Скрыть чужое окно ЧИЖ Win Api 8 12.06.2008 00:55