2011-07-30 55 views
0

我正在開發一個web自動化應用程序。MSHTML彈出

每件事情都很好。現在我陷入了一個問題。

當用戶點擊了一個鏈接一個新的彈出窗口會打開帶有輸入字段和按鈕,

用戶填寫的字段,然後按按鈕。

我要自動執行此,但問題是,當我點擊鏈接,彈出窗口,沒有Document_Completed事件。

所以我無法解析這個彈出HTML和自動化它。

任何身體有任何有益的建議?

+0

[設置彈出窗口是MDI控制的兒童在使用WebBrowser控件時]的可能重複(http://stackoverflow.com/questions/6470842/setting-popup-window-to-是-A-兒童的-MDI-控制時-使用-web瀏覽器控制) –

回答

1

這非常棘手。我一直在做類似的事情。你首先需要檢查對話框是否是Javascript或者它是否是一個消息框。用javascript對話框,你可以試試這個: http://msdn.microsoft.com/en-us/magazine/gg309183.aspx。據作者稱,它也可以與系統對話框一起工作,但對此並不好。如果你不能完成這項工作,就必須深入挖掘,並儘可能地通過Win32Api進行操作。

系統對話框是不是你通常會使用這種類型的自動化的DOM的一部分。它沒有ID,並且運行在與操作系統其他部分分離的循環中(在非常低的層次上,它獨立於所有的目的)。要進一步瞭解對話框以及它們在Windows中如何工作,請查看:http://www.winprog.org/tutorial/dialogs.html

我沒有完整的解決方案,但我正在處理它。

0

人們可以得到由WindowFromPoint功能處理,以彈出。然後你可以使用IAccessible接口來訪問彈出窗口的元素。事情是這樣的:

const uint OBJID_NATIVEOM = 0; 
Guid IID_IAcce = new Guid("{618736e0-3c3d-11cf-810c-00aa00389b71}"); 

IntPtr inpt = WindowFromPoint(p); 

object ptr1 = null; 
int l; 

l = AccessibleObjectFromWindow(inpt, OBJID_NATIVEOM, IID_IAcce.ToByteArray(), ref ptr1); 
var acc = ptr1 as IAccessible;