我在 Windows 窗体应用程序中嵌入了 Internet Explorer 浏览器,但无法修改此窗体的源代码。但是,我已经掌握了 IE 窗口的句柄,并且可以执行各种SendInput
功能。如果我单击一个控件,我如何判断它是否是TextBox
,然后如何向该控件发送字符TextBox
?
我需要使用我已经为我的其他功能获得的 IE 窗口句柄的答案。我需要的答案必须涉及到 IE 窗口的句柄。
我在 Windows 窗体应用程序中嵌入了 Internet Explorer 浏览器,但无法修改此窗体的源代码。但是,我已经掌握了 IE 窗口的句柄,并且可以执行各种SendInput
功能。如果我单击一个控件,我如何判断它是否是TextBox
,然后如何向该控件发送字符TextBox
?
我需要使用我已经为我的其他功能获得的 IE 窗口句柄的答案。我需要的答案必须涉及到 IE 窗口的句柄。
你不能。IExplore 上的控件不再是 Windows 控件 - 它们是由 IExplore 呈现的自定义实体,只是看起来类似于实际的 Windows 控件。
与网页上的控件交互的唯一方法是访问 Internet Explorer 窗口的 activeX 控件,向它询问 IID_IWebBrowser2,然后从该点导航文档对象模型命名空间。
如果“没有能力修改这种形式的源代码”是指你的代码运行在一个完全不同的进程中,那么你就有一个非常非常大的问题。如果您在同一个过程中,WinForms 很有可能有一个 API,您可以使用它来强制访问任何 activex 控件其托管。
鉴于您对这种开发语言的次优选择 - c# - 我无法就与 activex 控件的互操作的简单性或可能性给出任何建议。
http://watin.org/为您提供了很多访问 Web 浏览器的可能性——不知道这是否包括嵌入在其他应用程序中的那些。
无论哪种方式,您都可以获得有关如何“自动化”浏览器窗口的更多信息。