是否可以将keys / Post Message直接发送到HtmlElement而不是webbrowser控件?

时间:2010-04-19 01:44:48

标签: c# browser sendkeys postmessage

我想直接将密钥发送到c#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 个答案:

答案 0 :(得分:0)

这是错误的方法。

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

如需精确说明,请告诉我们您要做的事情。

答案 1 :(得分:0)

看看WaitN和Selenium之类的东西。

IE还有一个很好的编程界面来控制浏览器。

但是有缺点......

我目前正在开发一个程序,它使用图像识别和鼠标/键控制来控制浏览器,因为我只能通过直观表示来实现我想要的效果。

然而,这将主宰计算机并需要完全控制。除非你在虚拟机中运行它。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我花了很长时间才找到这个,但你必须使用child命令调用GetWindow来重复获取子窗口句柄,直到你得到一个用“Internet Explorer_Server”响应GetClassName的那个或类似的东西。

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