Using PostMessage/SendMessage to send keys to c# IE WebBrowser

谁都会走 提交于 2019-12-06 04:36:23

First of all i sugest u to have the handle of the WebBrownser document :

        IntPtr pControl; 
        IntPtr pControl2;
        pControl = FindWindowEx(WebWindow.Handle, IntPtr.Zero, "Shell Embedding", IntPtr.Zero);
        pControl = FindWindowEx(pControl, IntPtr.Zero, "Shell DocObject View", IntPtr.Zero);
        pControl = FindWindowEx(pControl, IntPtr.Zero, "Internet Explorer_Server", IntPtr.Zero);
        pControl2 = FindWindowEx(pControl, IntPtr.Zero, "MacromediaFlashPlayerActiveX", IntPtr.Zero);

         if (pControl2 != IntPtr.Zero)
             pControl = pControl2;
             break;
        return pControl;

Use that handle to send your key message.

What im doing personnally is that i send a click to that Handle at the position of the box and then send my keys

        PostMessage(pControl , (uint)MouseMessages.WM_MOUSEMOVE, 0, MAKELPARAM(x.X, x.Y));
        PostMessage(pControl , (uint)MouseMessages.WM_LBUTTONDOWN, 0, MAKELPARAM(x.X, x.Y));
        PostMessage(pControl , (uint)MouseMessages.WM_LBUTTONUP, 0, MAKELPARAM(x.X, x.Y));

with MAKELPARAM like this :

    private int MAKELPARAM(int p, int p_2)
    {
        return ((p_2 << 16) | (p & 0xFFFF));
    }

The one thing i saw that work find on non flash document is to send WM_CHAR only work.

With all this u don't have to have your window focus

I hope it help :)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!