请教各位大侠一个关于向webbrowser发送鼠标单击消息的问题

问题描述

各位大虾,下面是我的C#代码,我想向webBrowser的某一个位置发送一个鼠标单击消息,但是我用了所有的办法,用SPY++检测都没法看到鼠标点击消息怎样才能像webbrowser的指定位置发鼠标单击消息,各位大虾能否给些指教,十分感谢。constintWM_LBUTTONDOWN=0x0201;//定义了鼠标的左键点击消息constintWM_LBUTTONUP=0x0202;//定义了鼠标的左键点击消息constintWM_CLICK=0x00F5;constintWM_SETFOCUS=0x0007;constintWM_MOUSEMOVE=0x0200;Pointp=newPoint(web.Location.X+10,web.Location.Y+10);IntPtri=(IntPtr)(25<<16)+50;SendMessage(this.ccwebBrowser.Handle,WM_MOUSEMOVE,(IntPtr)0,i);Thread.Sleep(500);SendMessage(this.ccwebBrowser.Handle,WM_SETFOCUS,(IntPtr)0,(IntPtr)0);SendMessage(this.ccwebBrowser.Handle,WM_CLICK,(IntPtr)0,i);SendMessage(this.ccwebBrowser.Handle,WM_LBUTTONDOWN,(IntPtr)0,i);SendMessage(this.ccwebBrowser.Handle,WM_LBUTTONUP,(IntPtr)0,i);

解决方案

解决方案二:
你没有取到正确的句柄,应该是:IntPtrhandle=webBrowser1.Handle;handle=GetWindow(handle,5);handle=FindWindowEx(handle,IntPtr.Zero,"ShellDocObjectView",null);handle=FindWindowEx(handle,IntPtr.Zero,"InternetExplorer_Server",null);这样拿到的才是正确的句柄。用这个handle去发消息,spy++就能捕捉到。测试通过。FindWindowEx的P/Invoke签名:[DllImport("user32.dll",SetLastError=true)]staticexternIntPtrFindWindowEx(IntPtrhWnd1,IntPtrhWnd2,stringlpsz1,stringlpsz2);
解决方案三:
感谢楼上大虾一大早把他测试了完全正确可是为什么用this.ccwebBrowser.Handle就不行一定要用handle=FindWindowEx(handle,IntPtr.Zero,"InternetExplorer_Server",null);呢webbrowser不是一个控件吗每个控件有他的句柄原理上似乎也没错楼上的大虾能否给点提示我也好自己去找相关资料了解下非常感谢
解决方案四:
我其实对这东西也不很懂,靠看spy++的信息及google出来的结果,多次调试出来的。
解决方案五:
其实你不是给webbrowser发消息,而是给他内部嵌入的document窗体发消息,你通过spy++可以看到窗口层次
解决方案六:
webbrowser和InternetExplorer_Server到底是一种什么关系啊
解决方案七:
学习学习!

时间: 2024-09-20 01:11:04

请教各位大侠一个关于向webbrowser发送鼠标单击消息的问题的相关文章

请教各位大侠一个struts 1.x的问题

问题描述 我在试图层中我写了这些代码<html:formaction="users.do"><html:hiddenproperty="op"value="doUpdate"/>${sysUserForm.item.usrName}:   <html:selectproperty="item.role.roleId"><html:optionvalue="1">

请教各位大侠一个查询语句的问题~ 谢谢

问题描述 select*fromuseridnamepass1张三1112李四2223王五3333以上查询语句查询出的结果,如何在查询出的结果中删除pass列,请问大家这样的语句该怎么写啊就是select*fromuser这句语句查询出来的结果没有pass列,一条语句实现,谢谢 解决方案 解决方案二:selectnamefromuser解决方案三:selectid,namefromuser解决方案四:引用1楼的回复: selectnamefromuser 谢谢这样写对于这样简单的语句可以实现,但

SendMessage发送鼠标事件不成功,麻烦帮我看下问题出在哪里

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.InteropServices;namespaceWindowsFormsApplication17{public

物理缓冲-请教朋友们一个udp发送接收问题

问题描述 请教朋友们一个udp发送接收问题 如果网口处于断开时发送了一包udp,那么在网口进入连通状态后对端还能不能收到这包udp数据呀?由断到通不经过太久.就是发送方的物理驱动里给不给缓冲这包数据 等链路通时再发出去 解决方案 发送UDP数据报之后接收一个回应向朋友们请教一个关于USB接口编程的问题 解决方案二: 能收到~反正它有目的端口信息,是无连接转发的~

调试-在测试一个tesseract程序时logcat抛出一个错误无法解决,请教各位大侠

问题描述 在测试一个tesseract程序时logcat抛出一个错误无法解决,请教各位大侠 这是logcat的信息 02-09 12:45:12.405: D/MainActivity ...(2210): begin>>>>>>> 02-09 12:45:12.409: D/nimei(2210): ---in ocr() before try-- 02-09 12:45:12.409: V/MainActivity ...(2210): not in the

c++-想用C# 来写C++ 的IDE 请教各位大侠

问题描述 想用C# 来写C++ 的IDE 请教各位大侠 如题 我想在C#项目里嵌入 C++ 开发环境 但是毫无思路 请各位大侠给个思路 本猿感激不尽 解决方案 C++代码写成DLL,把需要的函数导出 调用DLL 下面以visual2008为例子,简单精炼,有什么问题问我,已经亲测http://www.cppblog.com/acmercyj/articles/145931.html 最后,求分 解决方案二: 具体的实现你可以参考visual studio sdk的例子,或者你可以获得一个完整的基

请教c#接口怎么抓取应用软件发送到打印机的任务消息

问题描述 请教用c#怎么抓取应用软件发送到打印机的任务消息.我想抓取到这个任务消息后,如判断这个任务消息想要打印的页数,发消息的这个操作是不是允许打印的这么一个打印控制软件.大家有什么好的解决方案吗 解决方案 解决方案二:有大神知道吗

html-本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题

问题描述 本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题 FIREFOX浏览器,代码如下: HTML代码片段: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @import url(template/default/styl

wpf通过WindowsFormsHost加载了一个winform的WebBrowser

问题描述 wpf通过WindowsFormsHost加载了一个winform的WebBrowser wpf中的TabControl通过WindowsFormsHost加载了一个winform的WebBrowser在winform的WebBrowser的webBrowser_Navigating事件中怎么拿到这个WebBrowser所在的wpf容器也就是TabItem 解决方案 http://www.360doc.com/content/12/0621/18/10255389_219673956.