1

我想直接将键发送到 ac# Web 浏览器控件元素,而不仅仅是具有正确焦点的窗口。

现在我可以使用 PostMessage 和 documentHandle 发送一个密钥,并像这样聚焦

即伪代码

HtmlElement el = getelement();
el.Focus();
IntPtr docptr = browser.Handle;
PostMessage(docptr,WM_KEYDOWN,1,0);
.... KEYCHAR, KEYUP..

我想知道是否有人知道能够在后台执行此操作的任何方法,以便焦点不在元素上。基本上有一种方法可以将 IntPtr 获取到 HtmlElement 本身,而不是在 PostMessage 或 SendKeys API 而不是浏览器句柄/ptr 中使用它。

4

4 回答 4

0

你不能。这些是无窗口控件,鼠标/键盘消息由其父窗口处理,而父窗口仅中继活动控件的消息。

于 2010-04-19T23:20:51.537 回答
0

我花了很长时间才找到这个,但是您必须使用子命令 p/invoke GetWindow 以反复获取子窗口句柄,直到您找到一个使用“Internet Explorer_Server”或类似内容响应 GetClassName 的句柄。

然后该 hWnd 上的 PostMessage 和 WebBrowser 的 activeElement 将接收它们。确保你有 WM_KEYUP 在那里,因为这似乎是重要的。

于 2010-11-05T05:36:12.023 回答
0

这是错误的方法。

您可以使用HtmlElementAPI 直接操作元素。

如需准确的说明,请告诉我们您要执行的操作。

于 2010-04-19T01:49:13.790 回答
0

看看 WaitN 和 Selenium 之类的东西。

IE也有很好的编程接口来控制浏览器。

但也有缺点...

我目前正在开发一个程序,该程序使用图像识别和鼠标/键控制来控制浏览器,因为我只能用视觉表示做我想做的事情。

但是,这将主导计算机并需要完全控制。除非您在虚拟机中运行它。

于 2010-04-19T02:14:27.470 回答