|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.01.2010, 23:45 | #11 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
Пепел Феникса, а можно поподробнее плиз, прост если слать сообщения главному, например:
PostMessage(wnd, WM_CHAR, ':', 0); То оно не распознаётся, даже при открытом окне ввода , приходится активировать нужное окно и через keybd_event вбивать тута SHIFT + ';'. Щас про PID почитаю.. П.с. Перечесление окон уже ненужно. Последний раз редактировалось ZBEP; 15.01.2010 в 23:48. |
16.01.2010, 00:07 | #12 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
возьмите Spy++ или чтото подобное
и посмотрите какие сообщения приходят и с какими параметрами Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 16.01.2010 в 00:08. Причина: не то написал сначало. |
16.01.2010, 09:49 | #13 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
Посмотрел через Spy++
Вроде откопал, вот что выдает по нажатию на SHIFT + ';' А вот это выдает по отправке нажатия на SHIFT + ';' через бота: Посылка команд: Код:
Отличий мало вроде, только в Repeat, UP и ScanCode. Но вместо ':' всеравно ';' Буду че-нить думать.. П.с. Обошелся без PID пока, Все порм, все команды посылаются в нужные окна. Осталось тодько реализовать нормальное нажатие ':' , а лучше что-бы можно было через CHAR команды посылать (например как в блокнот), а не через WM_KEYDOWN П.п.с. Вот что выдает если через Char: Код:
Странно.. Последний раз редактировалось ZBEP; 16.01.2010 в 10:46. |
16.01.2010, 15:06 | #14 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ну так возьмите себе параметры со Spy++
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
16.01.2010, 15:35 | #15 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
А можете на примере показать пожалуйста?
|
16.01.2010, 17:18 | #16 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Могу посоветовать программу InqSoft Window Scanner. С помощью неё можно просмотреть дерево окон.
|
16.01.2010, 18:12 | #17 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
щелкните правой кнопкой по сообщению...и там св-ва
там будет шестнадцатеричное значение lParam и wParam подставить думаю сможете (в Делфи HEX значение пишется $<тут значение>) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
16.01.2010, 20:38 | #18 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
Пепел Феникса, о все, спасибо, разобрался!
|
16.01.2010, 23:27 | #19 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
Блин, я забыл что выставил фокус окна((
Вобщем на неактивном окне всеравно ';' получается. Делаю так: Код:
|
13.05.2014, 08:17 | #20 |
Регистрация: 13.05.2014
Сообщений: 6
|
Здравствуйте!
Если сможете, то помогите по такому вопросу: У меня такая задача: Программа запускает запароленные презентации PowerPoint и должна: - эмулировать ввод пароля в окне "Пароль" на запуск презентации - в следующем окне "Пароль" эмулировать нажатие кнопки "Только для чтения" Вот мой упрощенный тестовый код: var Form1: TForm1; h1,h2,h3,h4,h5,h6:HWND; procedure TForm1.Button1Click(Sender: TObject); begin {ищем 1-е окно с именем "Пароль"} 1. SendMessage(h2, WM_SETTEXT, 0, lparam(pchar('testor'))); 2. h3:=findwindowex(h1,0,nil,'ОК'); 3. sendmessage(h3,BM_CLICK,0,0); 4. ищем 2-е окно с именем "Пароль" } 5. h4 := FindWindow(nil, 'Пароль'); // форма на которой кнопка находится 6. h5:= FindWindowEx(h4, 0, nil, 'Только для чтения'); //находим дескриптор кнопки 7. windows.SetFocus(h5); 8. sendmessage(h5,BM_CLICK,0,0); end; До строки 6 все работает хорошо. Второе окно "Пароль" активно. Но эмуляции нажатия кнопки не происходит, хотя вреде бы все должно быть также, как при нажатии первой кнопки "Пароль". Ставил Sleep после появления второй кнопки "Пароль", но ничего не менялось. Помогите разобраться в чем причина. Спасибо Последний раз редактировалось progma; 13.05.2014 в 08:28. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с чужими окнами | Djem1991 | Общие вопросы Delphi | 3 | 15.11.2009 22:35 |
работа с чужими окнами | betirsolt | Общие вопросы Delphi | 8 | 06.10.2009 12:52 |
работа с чужими программами | Rend1 | Win Api | 31 | 02.03.2008 16:42 |
работа с окнами | Briz | Общие вопросы Delphi | 5 | 07.10.2007 22:20 |
работа с "чужими" окнами | zetrix | Безопасность, Шифрование | 1 | 29.10.2006 11:28 |