| 
| 
 | Вопрос # 5 478/ вопрос решён / | 
 |  Приветствую, уважаемые эксперты! На форме лежит компонент twebbrowser, пытаюсь отправить в него сообщение о клике мыши
  var
Wnd:HWnd;
begin
Wnd:=form2.Handle;
Wnd:=FindWindowEx(Wnd,0,'Internet Explorer_Server',nil);
sendmessage(Wnd,WM_LBUTTONDOWN,0,(30 shl 16)+30);
sleep(1000);
sendmessage(Wnd,WM_LBUTTONUP,0,(30 shl 16)+30); 
 но почему то не происходит клика, причем при таком коде он неможет получить хендл компонента браузера. пробовал по другому писать:
 Wnd:=webbrowser1.Handle;
 тогда находится, но клик все равно не прорабатывает..
 может у кого есть какие-нибудь соображения на этот счет?
 Примечание #1 (5 июля 2011, 01:15): Вообщем для меня хорошая традиция отвечать на свои вопросы=) не менее хорошая традиция делиться решениями с другими. Поэтому вот привожу решение данной проблемы в Delphi и в VS C++: var
Wnd:HWnd;
begin
Wnd:=Form3.Handle;
Wnd:=FindWindowEx(Wnd,0,'Shell Embedding',nil);
Wnd:=FindWindowEx(Wnd,0,'Shell DocObject View',nil);
Wnd:=FindWindowEx(Wnd,0,'Internet Explorer_Server',nil);
postmessage(Wnd,WM_LBUTTONDOWN,0,(30 shl 16)+ 30);
postmessage(Wnd,WM_LBUTTONUP,0,(30 shl 16)+ 30); HWND Wnd = (HWND)webBrowser1->Handle.ToPointer();
  Wnd=FindWindowEx(Wnd,0,L"Shell Embedding",0);
  Wnd=FindWindowEx(Wnd,0,L"Shell DocObject View",0);
  Wnd=FindWindowEx(Wnd,0,L"Internet Explorer_Server",0);
  PostMessage(Wnd,WM_LBUTTONDOWN,0,(30<<16)+30);
  PostMessage(Wnd,WM_LBUTTONUP,0,(30<<16)+30);Примечание #2 (5 июля 2011, 01:21): да чуть не забыл, в VS C++ необходимо будет включить: #include <windows.h>
#pragma comment(lib, "user32.lib")
 
|  |   Вопрос задал: Ученый (статус: 8-ой класс)Вопрос отправлен: 4 июля 2011, 06:30
 Состояние вопроса: решён, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 5 июля 2011, 02:31; участников в обсуждении: 2. 
|   | Gooddy (статус: 3-ий класс), 4 июля 2011, 16:27 [#1]: Wnd:=webbrowser1.Handle;
sendmessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, 30 + 30 shl 16);   
sendmessage(Handle, WM_LBUTTONUP, MK_LBUTTON, 30 + 30 shl 16); Пробуй.
 Чисти код! Чисти код! Чисти код! |  
|   | Gooddy (статус: 3-ий класс), 4 июля 2011, 16:29 [#2]:И кстати, чем не устраивает mouse_event? Ещё можно попробовать SendInput, но он также посылает сообщения в окно с фокусом.
 Чисти код! Чисти код! Чисти код! |  
|   | Ученый (статус: 8-ой класс), 4 июля 2011, 23:04 [#3]:Wnd:=webbrowser1.Handle; sendmessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, 30 + 30 shl 16);
 sendmessage(Handle, WM_LBUTTONUP, MK_LBUTTON, 30 + 30 shl 16);
 
 пробовал не помогло. надо именно так потому что окно будет скрыто и мышку трогать нельзя.  а чем SendInput будет лучше?
 |  5 июля 2011, 01:16: Статус вопроса изменён на решённый (изменил автор вопроса — Ученый) 5 июля 2011, 01:18: Вопрос вновь открыт (изменение состояния произвёл автор вопроса — Ученый) 5 июля 2011, 01:22: Статус вопроса изменён на решённый (изменил автор вопроса — Ученый) 
|   | Gooddy (статус: 3-ий класс), 5 июля 2011, 02:31 [#4]:Получается проблема была всего в поиске хендла окна. Чисти код! Чисти код! Чисти код! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |