[英]Controlling Internet Explorer in order to enter username/password
我正在考慮嘗試讓我的C ++應用程序執行以下操作:
從我在互聯網上的搜索看來,使用COM可能會使這成為可能,盡管我可能不正確。 我現在正盡力學習COM,但有些幫助會很棒。 我想在不使用MFC的情況下這樣做。
我注意到這個問題,我正在尋找什么,但我無法理解建議的解決方案。 例如,我的工具箱中沒有IWebBrowser2
選項。
編輯:
為了使我的問題更清楚,我通過簡單地運行編碼的UI測試在C#版本中完成了這項任務,但這不適用於C ++。 我希望打開IE(不在應用程序本身),找到用戶名和密碼表單,傳遞它們的字符串,然后在頁面上找到提交按鈕並單擊它。
這很可能來自c ++。 你將不得不潛入winapi做一些擊鍵的東西以及窗口處理。
我不會涉及所有代碼,但您必須執行以下操作:
HANDLE
並找到你想要的窗口) SendInput
發送Alt
+ D
(以獲得焦點到url欄,在Firefox中它將是一個CTRL + L
而不是) SendInput
和javascript注入來根據需要修改DOM 是的,這是可能的,但你必須在你的應用程序中嵌入一個Web瀏覽器控件,這並不簡單(我認為你不能通過COM在Internet Explorer的外部實例中自動化DHTML)。
我看到你不想使用MFC,這使問題更加復雜化。 也許你可以通過ATL來做到這一點,我建議不要在沒有框架的情況下嘗試這樣做。
如果您可以使用MFC,那么您可以使用CDHtmlDialog
表單並訪問底層COM接口以自動執行操作。
在過去,我開發了一個使用HTML作為其用戶界面的MFC應用程序,但我使用了您可以在這里找到的CDHTMLView
類: http : //www.codeproject.com/Articles/1783/Integrating-DHTML-into-MFC -views
您可以將其作為學習如何處理DHTML事件以及如何使用IWebBrowser2
接口的入口點。
你應該看看WebDriver,它能夠完全按照你所描述的那樣做。 有關InternetExplorerDriver內部的詳細信息,請參閱(http://code.google.com/p/selenium/wiki/InternetExplorerDriverInternals)。 即使您無法直接使用該項目,您當然可以瀏覽源代碼以更好地了解您希望如何實現該項目。
你想做的事情沒什么意義。
有許多API可用於將瀏覽器視圖嵌入到您的程序中。 例如,Qt提供此功能。
然后,您可以自己執行HTTP POST請求,並在瀏覽器視圖中顯示您獲得的答案。
這是一個更清潔的解決方案。
專業提示:不要使用Internet Explorer。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.