3

我正在考虑尝试让我的 C++ 应用程序执行以下操作:

  1. 打开互联网浏览器
  2. 打开网页
  3. 在网页中的特定表单中输入名称和密码
  4. 点击网页上的提交按钮打开一个新页面

从我在 Internet 上的搜索来看,使用 COM 似乎可以实现这一点,尽管我对此可能不正确。我目前正在尽我所能学习 COM,但一些帮助会很棒。我希望在不使用 MFC 的情况下做到这一点。

我注意到了这个问题,我正在寻找我正在寻找的东西,但我无法理解建议的解决方案。例如,我的工具箱中没有IWebBrowser2选项。

编辑:

为了让我的问题更清楚,我通过简单地运行编码的 UI 测试在 C# 版本中完成了这项任务,但这不适用于 C++。我正在寻找打开 IE(不是在应用程序本身中),找到用户名和密码表单,将它们传递给字符串,然后在页面上找到提交按钮并单击它。

4

4 回答 4

1

这在 c++ 中是很有可能的。您将不得不深入到 winapi 来做一些按键操作以及窗口处理。

我不会深入研究所有代码,但您必须执行以下操作:

  • 启动 ie(如果你给它一个带有网页的命令行参数,它将打开那个页面)。
  • 确保 ie 窗口已聚焦(如果您想保持简单,请等待或使用窗口的 api 遍历每个打开HANDLE并找到您想要的窗口)
  • 用于SendInput发送Alt+ D(以获取 url 栏的焦点,在 Firefox 中它将是 a CTRL + L
  • 根据需要使用SendInputjavascript 注入来修改 DOM
  • 您还可以使用上述 JS 注入功能提交表单(在一切如您所愿之后)。
于 2012-05-08T12:51:58.847 回答
0

是的,这是可能的,但是您必须在应用程序中嵌入 Web 浏览器控件,而且这并不简单(我认为您不能通过 COM 在 Internet Explorer 的外部实例中自动执行 DHTML)。

我看到您不想使用 MFC,这使问题更加复杂。也许您可以通过 ATL 来完成,我建议您不要尝试在没有框架的情况下进行。

如果您可以使用 MFC,那么您可以使用CDHtmlDialog表单并访问底层 COM 接口来自动执行操作。

过去,我开发了一个使用 HTML 作为其用户界面的 MFC 应用程序,但我使用了CDHTMLView您可以在此处找到的类:http: //www.codeproject.com/Articles/1783/Integrating-DHTML-into-MFC-意见

您可以将其用作学习如何处理 DHTML 事件以及如何使用IWebBrowser2界面的入口点。

于 2012-05-08T10:54:00.650 回答
0

你真的应该看看 WebDriver 能够完全按照你的描述做。有关 InternetExplorerDriver 内部的更多信息,请参阅 (http://code.google.com/p/selenium/wiki/InternetExplorerDriverInternals)。即使您不能直接使用该项目,您当然可以浏览源代码以更好地了解如何实现您想要做的事情。

于 2012-05-08T12:17:36.983 回答
-1

你想做的事情没有多大意义。

有许多 API 可用于将浏览器视图嵌入到您的程序中。例如 Qt 提供了这个。

然后,您可以自己执行 HTTP POST 请求,并在浏览器视图中显示您得到的答案。

这是一个更清洁的解决方案。

专业提示:不要使用 Internet Explorer。

于 2012-05-08T10:40:21.150 回答