|
#1
|
|||
|
|||
Help! WinAPI !!
Помогите! Как WinAPI функцией SendMessage передать строку в поле ввода данных какого либо окна ??? Как найти дескриптор поля ввода ???
Заранее спасибо! |
#2
|
||||
|
||||
Цитата:
Код:
SendMessage( h, WM_SETTEXT, 0, Integer( s ) ); h - Handle текстового поля. s - строка PChar. Цитата:
Используй функцию FindWindow для поиска окна, и функцию FindWindowEx для поиска дочернего окна. Возможно, тебе поможет эта статья http://decoding.narod.ru/practic/wndinfo/wndinfo.html. Пример: кинь на форму Edit и Button. Для кнопки напиши следующую процедуру. Код:
procedure TForm1.Button1Click(Sender: TObject); var s: PChar; h: THandle; begin // Текст, который будет передан в поле ввода s := 'Text'; // Поиск окна, на котором расположено поле ввода h := FindWindow( 'TForm1', nil ); // Поиск поля ввода, в которое нужно передать текст h := FindWindowEx( h, 0, 'TEdit', nil ); SendMessage( h, WM_SETTEXT, 0, Integer( s ) ); end; |
#3
|
||||
|
||||
нажатие кнопки на форме приложения с помощью SendMessage/PostMessage
Доброго времени суток, уважаемые.
Никак не могу понять тонкость работы с SendMessage. Есть процедура: Код:
procedure TMyThread.ClickOnForm; var TheChildHandle: HWND; begin TheChildHandle := FindWindowEx(FindWindow(nil, 'Microsoft Office Outlook'), 0, nil, PChar('Да')); SendMessage(TheChildHandle, WM_ACTIVATE, 1, 1); SendMessage(TheChildHandle, WM_LBUTTONDOWN, MK_LBUTTON, 1); Sleep(300); SendMessage(TheChildHandle, WM_LBUTTONUP, MK_LBUTTON, 1); end; В общем и целом работает. НО! Только визуально! Видно как нажимается кномпа "Да". Только аутлук, не реаигрует на эти нажатия, пока не кликнешь по форме созданного письма или по форме с вопросом. Как решить эту проблему? В качестве параметров я уже многое пробовал подставлять, безрезультатно. Кто знает как победить проблему? Зарание благодарен. |
#4
|
||||
|
||||
А что, если попробовать передавать фокус твоему окну? Точно не знаю. Но можно попробовать.
Программирование - это искусство и наш смысл жизни. |
#5
|
||||
|
||||
Может попробовать передовать сообщение WM_LBUTTONDBLCLK ?
Или найди идентификатор кнопки о попробуй послать ей BM_CLICK Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#6
|
||||
|
||||
Попробовал наводить фокус на окно
Код:
SetFocus(FindWindow(nil, 'Microsoft Office Outlook')); Пробовал использовать WM_LBUTTONDBLCLK, не помогает. С Идентификатором кнопки пока задумался. Незнаю как его определить. Но буду искать ответ. Спасибо за помощь. Если есть ещё какие идеи буду рад |