问题:下面的代码可以获得鼠标点击的位置,但如果我的WebBrowser宽和高不够,有滚动条拖动,那么再获到到的X,Y的坐就不对了,谁帮忙改进一下。在WebBrowser1加载完网页的时候在网页内注入一段Java脚本代码,来绑定鼠标按下事件,并通过页面转向的方式(一个自定义的url)来传递给vb,WebBrowser1在离开当前页面前会触发WebBrowser1_BeforeNavigate2事件,我们可以在WebBrowser1_BeforeNavigate2中检测url,如果是自定义的,就分析xy
以下代码在vb6中通过测试 Option Explicit Private Sub Form_Load()
WebBrowser1.Navigate "www.baidu.com"
End Sub Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) '判断将要打开的网页的url,如果是我们自定义的mouse://协议,就进行处理
If Left(URL, 8) = "mouse://" Then
'让网页不要跳转
Cancel = True
Dim tmp, x, y
'过滤url
tmp = Replace(URL, "mouse://", "")
tmp = Replace(tmp, "/", "")
tmp = Split(tmp, "|")
'提取x,y坐标
x = tmp(0)
y = tmp(1)
Debug.Print x
Debug.Print y
End If End Sub Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
On Error GoTo ToExit '打开错误陷阱
'------------------------------------------------
'这里是在WebBrowser1加载网页完成后,在WebBrowser1中执行一段js脚本,用来绑定鼠标按下事件
'当鼠标按下以后,js会控制网页跳转到 mouse://x|y 的页面,上面的代码可以截获这个协议
Dim js As String
js = "document.body.onclick=function()" & vbCrLf & _
"{location.href='mouse://'+window.event.x+ '|'+window.event.y;}"
WebBrowser1.Document.parentWindow.execScript js, "javascript"
'------------------------------------------------
Exit Sub
'----------------
ToExit:
Resume Next
End Sub
问题:下面的代码可以获得鼠标点击的位置,但如果我的WebBrowser宽和高不够,有滚动条拖动,那么再获到到的X,Y的坐就不对了,谁帮忙改进一下。
以下代码在vb6中通过测试 Option Explicit Private Sub Form_Load()
WebBrowser1.Navigate "www.baidu.com"
End Sub Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) '判断将要打开的网页的url,如果是我们自定义的mouse://协议,就进行处理
If Left(URL, 8) = "mouse://" Then
'让网页不要跳转
Cancel = True
Dim tmp, x, y
'过滤url
tmp = Replace(URL, "mouse://", "")
tmp = Replace(tmp, "/", "")
tmp = Split(tmp, "|")
'提取x,y坐标
x = tmp(0)
y = tmp(1)
Debug.Print x
Debug.Print y
End If End Sub Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
On Error GoTo ToExit '打开错误陷阱
'------------------------------------------------
'这里是在WebBrowser1加载网页完成后,在WebBrowser1中执行一段js脚本,用来绑定鼠标按下事件
'当鼠标按下以后,js会控制网页跳转到 mouse://x|y 的页面,上面的代码可以截获这个协议
Dim js As String
js = "document.body.onclick=function()" & vbCrLf & _
"{location.href='mouse://'+window.event.x+ '|'+window.event.y;}"
WebBrowser1.Document.parentWindow.execScript js, "javascript"
'------------------------------------------------
Exit Sub
'----------------
ToExit:
Resume Next
End Sub
问题:下面的代码可以获得鼠标点击的位置,但如果我的WebBrowser宽和高不够,有滚动条拖动,那么再获到到的X,Y的坐就不对了,谁帮忙改进一下。
解决方案 »
- 请问WIN2000是不是不能识别大于40G的分区?
- 新手上路
- 打印机
- 嵌入word的问题,高手请进!在线等,解决后马上结帖!
- dll返回值类型是handle,我在vb中该怎样声明?
- 如何将系统里的汉字转换成纯二进制文件,一旦解决立即结贴
- 数据库查询结果为空时,如何返回提示
- vb中如何做一个循环单链表?可否做个详细示范
- 如何开发修改手机设置的软件?
- 众大侠:会用vb的打包吗?我用vc编的dll也希望能包进去,有没有要注意的?见http://www.csdn.net/expert/topic/463/463801.shtm
- 怎么能让以下Option1_Click里的效果在Command1_Click()实现?~达人帮忙
- findwindow的疑惑
"{location.href='mouse://'+window.event.x+ '|'+window.event.y;}" 中的坐标方法改为offsetX,offsetY即:
js = "document.body.onclick=function()" & vbCrLf & _
"{location.href='mouse://'+window.event.offsetX+ '|'+window.event.offsetY;}"
WebBrowser1.Document.parentWindow.execScript js, "javascript"
另外,还有clientX,clientY,screenX,screenY等几种方式,可以根据实际情况选用。
clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包括窗口自身的控件和滚动条。
offsetX 设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标。
offsetY 设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标。
screenX 设置或获取获取鼠标指针位置相对于用户屏幕的 x 坐标。
screenY 设置或获取鼠标指针位置相对于用户屏幕的 y 坐标。
x 设置或获取鼠标指针位置相对于父文档的 x 像素坐标。
y 设置或获取鼠标指针位置相对于父文档的 y 像素坐标。