有時候我們需要delphi載入webbrowser1打開網頁的時候 需要點擊某一個點的位置 可能是坐標 可能是按鈕 可能是其他的控件
應該如何來實現呢? 這里來簡單說明一下點擊坐標的過程
點擊過程很明顯我們移動鼠標來點擊或者發送消息來點擊
移動鼠標點擊的比較常見 這里詳細說明一下發送消息來點擊的辦法
發送消息來點擊的思路是sendmessage()發送消息來實現的
導入句柄 點擊的就可以了。但是這里的句柄(webbrowser的句柄)其實是不好找的。如果找到了合適的正確的句柄點擊起來還是非常容易的
這里有一個過程可以清楚的說明sendmessage的點擊過程
procedure sendclick(var x,y:integer) ;
begin
SendMessage(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONDOWN,
////MK_LBUTTON, MAKELONG(strtoint(edit2.Text),strtoint(edit3.Text)));
MK_LBUTTON, MAKELONG(x,y));
sleep(500);
SendMessage(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONUP,
////MK_LBUTTON, MAKELONG(strtoint(edit2.Text),strtoint(edit3.Text)));
MK_LBUTTON, MAKELONG(x,y)) ;
PostMessage(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONDOWN,
////MK_LBUTTON, MAKELONG(strtoint(edit2.Text),strtoint(edit3.Text)));
MK_LBUTTON, MAKELONG(x,y));
sleep(500);
PostMessage(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONUP,
////MK_LBUTTON, MAKELONG(strtoint(edit2.Text),strtoint(edit3.Text)));
MK_LBUTTON, MAKELONG(x,y)) ;
end;
這里定義了一個過程
GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD) 這是webbrowser的句柄
整個過程發送了 sendmessage和postmessage2個包 這里是防止一次沒點中 所以再補點一次
關於點擊的坐標是過程中導入的參數 x,y。
這里的X Y坐標是相對於窗體的坐標 就是相對於webbrowser的坐標 所以必須要用spy++來查找點擊的坐標