Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очистить чужое окно для ввода пароля, Очистить Edit с паролем в чужом ПО 
:(
    Опции темы
zhenyasun
Дата 22.8.2011, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 5.4.2010

Репутация: нет
Всего: нет



Добрый день!

Есть окно в чужом приложении для ввода пароля со звездочками (ES_PASSWORD). Необходимо в него вставить определенный текст.
В отличие от рядом находящегося окна без пароля, оно не реагирует на сообщение WM_SETTEXT, как и на любые другие сообщения с префиксом WM. Зато реагирует на сообщения с префиксом EM, но не всегда корректно.

Чужим окном является окно ввода логина и пароля NOD32  v4. В это окно программно нужно вставить регистрационную информацию. Делаю так: 

Код

// Вставим в окно

   HWND MainWinHnd;
  HWND Hnd, HndControl,HndControl1,HndControl2 ;
  do  // Поиск окна ввода логина и пароля обновлений
    {
      Hnd = FindWindow(0, "Информация о лицензии");
      Sleep(100);
 }
  while (!Hnd);


  HndControl1 = FindWindowEx(Hnd,0,0, "Информация о лицензии");
  HndControl2 = FindWindowEx(HndControl1,0,"Edit", 0);
  char* chr1 = "EAV-50412493";
  SendMessage(HndControl2, WM_SETTEXT,0,(LPARAM)chr1);//все, логин введен.
  HndControl2 = GetNextWindow(HndControl2,GW_HWNDNEXT);
  HndControl2 = GetNextWindow(HndControl2,GW_HWNDNEXT); //нашли окно с паролем
  PostMessage(HndControl2, EM_SETPASSWORDCHAR, 0, 0);   // Сделаем пароль видимым
  int length  = SendMessage(HndControl2, WM_GETTEXTLENGTH, 0, 0);   // Узнаем число символов текста пароля
  SendMessage(HndControl2, EM_SETSEL, (WPARAM) (INT) 0, (LPARAM) (INT) length);   // Выделим весь текст
  chr1 = "776tcpejrn";
  SendMessage(HndControl2, EM_REPLACESEL, (WPARAM) false, (LPARAM)chr1);    // Заменим на наш пароль
  HndControl2 = GetNextWindow(HndControl2, GW_HWNDNEXT);   // кнопка
  SendMessage(GetParent(HndControl2), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(HndControl2), BN_CLICKED), 0);





Если в окне пароля уже есть текст, то  мой текст вставляется до существующего текста, а не заменяет его. Если окно пустое или в нем 2-3 символа, то всё проходит нормально. Собственно вопрос: как очистить окно с паролем или обойти эту ситуацию?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.