Delphi中点击网页弹出的Alert对话框的确定按钮
? ? ? ?實(shí)現(xiàn)的方法有很多,一般都是使用Windows API函數(shù)遍歷窗口,查找指定標(biāo)題的窗口,然后從該窗口查找確定按鈕,向該按鈕發(fā)送鼠標(biāo)消息進(jìn)行模擬點(diǎn)擊。由于IE8由Alert彈出的網(wǎng)頁對(duì)話框的標(biāo)題是“來自網(wǎng)頁的消息”,而IE6由Alert彈出的網(wǎng)頁對(duì)話框的標(biāo)題是“Microsoft Internet Explorer”,所以本文沒有按查找窗口標(biāo)題方法獲取窗口句柄。注意到不管IE哪個(gè)版本,IE窗口的類名都是“IEFrame”,而網(wǎng)頁對(duì)話框的父窗口是IE窗口,所以本文是根據(jù)父窗口的類名是不是IEFrame來判斷窗口是不是網(wǎng)頁對(duì)話框,以下代碼點(diǎn)擊網(wǎng)頁彈出的Alert對(duì)話框和Confirm對(duì)話框的“確定”按鈕,并用Label1控件顯示網(wǎng)頁對(duì)話框的消息內(nèi)容:
procedure?TForm1.Button1Click(Sender:?TObject);
var
??hIE,?hDlg,?hBtn,?hStatic:HWND;
??Text:?array[0..255]?of?char;
begin
??hDlg?:=?GetWindow(Handle,?GW_HWNDFIRST);
??While?hDlg?<>?0?do
??begin
????hIE?:=?GetParent(hDlg);
????if?GetClassName(hIE,?Text,?255)?>?0?then??//獲取父窗口類名
??????if?Text?=?'IEFrame'?then?//父窗口為IE窗口
???????begin
?????????hBtn?:=?FindWindowEx(hDlg,?0,?nil,?'確定');?//查看確定按鈕
?????????if?hBtn?<>?0?then
?????????begin
???????????hStatic?:=?FindWindowEx(hDlg,?0,?'Static',?nil);
???????????hStatic?:=?FindWindowEx(hDlg,?hStatic,?'Static',?nil);
???????????if?GetWindowText(hStatic,?Text,?255)?>?0?then
?????????????Label1.Caption?:=?Text;
???????????Sleep(100);
???????????SendMessage(hBtn,?$00F5,?0,?0);?//第一次點(diǎn)擊使確定按鈕獲取焦點(diǎn)
???????????Sleep(100);
???????????SendMessage(hBtn,?$00F5,?0,?0);?//第二次點(diǎn)擊擊中確定按鈕
?????????end;
???????end;
????hDlg:=GetWindow(hDlg,GW_HWNDNEXT);
??end;
end;
總結(jié)
以上是生活随笔為你收集整理的Delphi中点击网页弹出的Alert对话框的确定按钮的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无聊!为何说程序员是最实用主义?
- 下一篇: 飞鸽_飞鸽传书_飞鸽传书2010_飞鸽传