C#学习教程:使用PostMessage/SendMessage发送按键到c#IEWebBrowser这是我的PInvoke和包装函数。我使用Spy++在InternetExplorer中获取这些。有人看到我的定义有问题吗?我想使用Send和Post消息而不是SendInput,因为我不想专注于窗口...[DllImport("user32.dll")][return:MarshalAs(UnmanagedType.Bool)]staticexternboolPostMessage(IntPtrhWnd,uintmsg,IntPtrwParam,IntPtrlParam);[DllImport("user32.dll")]staticexternintSendMessage(IntPtrhWnd,uintmsg,IntPtrwParam,IntPtrlParam);构造WM_KEYDOWN=0x0100;构造WM_KEYUP=0x0101;0x0102;constintVK_TAB=0x09;constintVK_ENTER=0x0D;constintVK_UP=0x26;constintVK_DOWN=0x28;constintVK_RIGHT=0x27;//根据IE中的SPY++//ENTER键是//PKEYDOWN//PCHAR//SCHAR//PKEY_UP//TAB键是//PKEYDOWN//PKEYUP//DOWN,UP,RIGHT,LEFTis//PKEYDOWN//SKEYDOWN//PKEYUP//字母is//PKEYDOWN//SKEYDOWN//PCHAR//SCHAR//PKEYUPprivatevoidSendEnter(){PostMessage(this.Handle,WM_KEYDOWN,(IntPtr)VK_ENTER,IntPtr.Zero);PostMessage(this.Handle,WM_CHAR,(IntPtr)VK_ENTER,IntPtr.Zero);SendMessage(this.Handle,WM_CHAR,(IntPtr)VK_ENTER,IntPtr.Zero);PostMessage(this.Handle,WM_KEYUP,(IntPtr)VK_ENTER,IntPtr.Zero);}privatevoidSendTab(){PostMessage(this.Handle,WM_KEYDOWN,(IntPtr)VK_TAB,IntPtr.Zero);PostMessage(this.Handle,WM_KEYUP,(IntPtr)VK_TAB,IntPtr.Zero);}privatevoidSendArrowKey(intkey){PostMessage(this.Handle,WM_KEYDOWN,(IntPtr)key,IntPtr.Zero);SendMessage(this.Handle,WM_KEYDOWN,(IntPtr)key,IntPtr.Zero);PostMessage(this.Handle,WM_KEYUP,(IntPtr)key,IntPtr.Zero);}privatevoidSendChar(intkey){//KeydownwParam值比WM_CHARwParamPostMessage(this.Handle,WM_KEYDOWN,(IntPtr)(key-0x020),IntPtr.Zero)小0x020;SendMessage(this.Handle,WM_KEYDOWN,(IntPtr)(key-0x020),IntPtr.Zero);PostMessage(this.Handle,WM_CHAR,(IntPtr)key,IntPtr.Zero);SendMessage(this.Handle,WM_CHAR,(IntPtr)key,IntPtr.Zero);PostMessage(this.Handle,WM_KEYUP,(IntPtr)(key-0x020),IntPtr.Zero);首先,我认为您拥有WebBrownser文档的句柄:IntPtrpControl;IntPtrpControl2;pControl=FindWindowEx(WebWindow.Handle,IntPtr.Zero,"ShellEmbedding",IntPtr.Zero);pControl=FindWindowEx(pControl,IntPtr.Zero,"ShellDocObjectView",IntPtr.Zero);pControl=FindWindowEx(pControl,IntPtr.Zero,"InternetExplorer_Server",IntPtr.Zero);pControl2=FindWindowEx(pControl,IntPtr.Zero,"MacromediaFlashPlayerActiveX",IntPtr.Zero);如果(pControl2!=IntPtr.Zero)pControl=pControl2;休息;返回控制;使用该句柄发送您的密钥消息我个人所做的是,我单击框的位置,然后发送我的密钥PostMessage(pControl,(uint)MouseMessages.WM_MOUSEMOVE,0,MAKELPARAM(xX,xY));PostMessage(pControl,(uint)MouseMessages.WM_LBUTTONDOWN,0,MAKELPARAM(xX,xY));PostMessage(pControl,(uint)MouseMessages.WM_LBUTTONUP,0,MAKELPARAM(xX,xY));像这样使用MAKELPARAM:privateintMAKELPARAM(intp,intp_2){return((p_2我发现在非flash文档上工作的一件事是发送WM_CHAR仅有效。有了这些,你就不用再关注窗口了希望对你有所帮助:)以上就是《C#学习教程:使用PostMessage/SendMessage向c#IEWebBrowser发送密钥》的全部内容,如果对大家有用的话还有需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
