感悟网 导航

VB怎么获取当前活动窗口的坐标? 如何获得vb中鼠标在窗口的坐标

作者&投稿:蔚果 (若有异议请与网页底部的电邮联系)
vb 如何获取一个窗口的坐标~

代码如下。
=============
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Sub Form_Load()
Dim h As Long, r As RECT
h = FindWindow(vbNullString, "酷狗") '这里写上你的窗口标题,必须一字不差
GetWindowRect h, r
MsgBox "左上角坐标(" & r.Left & "," & r.Top & ")" & vbCrLf & "右下角坐标(" & r.Right & "," & r.Bottom & ")" & vbCrLf & "窗口高" & r.Bottom - r.Top & "窗口宽" & r.Right - r.Left
End
End Sub

方法一: 直接用 MouseDown事件
举例:(这种方法获取的是点的位置在窗体中,却该对象有MouseDown事件才行,其坐标值为所在容器的相对坐标值)
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Cls
Print "X:"; X, "Y:"; Y
End If
End Sub

方法二:用API函数GetCursorPos来获取位置,用GetAsyncKeyState来获取是否按下左键
这种方法在任何时候都可以获取,哪怕鼠标不在应用程序内也行
在窗体上添加一个计时器,设置Interval属性为10
获取的位置的数字,是屏幕中的位置(不是相对窗体的)
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type POINTAPI
X As Long
Y As Long
End Type

Private Sub Timer1_Timer()
Dim P As POINTAPI
X = GetAsyncKeyState(1)
If X = -32767 Then 'x返回的是16位整数,最高位为1,表明按下
Cls
Print "左键按下",
GetCursorPos P
Print " 鼠标x位置:" & P.X & " 鼠标y位置:" & P.Y
End If
X = GetAsyncKeyState(2)
If X = -32767 Then
Cls
Print "右键按下",
GetCursorPos P
Print " 鼠标x位置:" & P.X & " 鼠标y位置:" & P.Y
End If
End Sub

'在窗体上画一个Timer控件,设置其Interval属性为100
'把代码复制到Form1的代码窗口中

'获得活动窗口句柄的API
Private Declare Function GetForegroundWindow Lib "user32" () As Long
'获得窗口区域结构的API
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, wndRect As RECT) As Long

Private Type RECT '自定义区域结构类型
x As Long
y As Long
Right As Long
Bottom As Long
End Type

Dim ActiveWindowRECT As RECT '用於保存活动窗口区域的结构
Dim ActiveWindowHwnd As Long '活动窗口的句柄

Private Sub Timer1_Timer()
ActiveWindowHwnd = GetForegroundWindow '获得活动窗口的句柄
GetWindowRect ActiveWindowHwnd, ActiveWindowRECT '获得活动窗口的区域并保存在 ActiveWindowRECT 变量中
'在窗口上输出信息
Me.Cls
Print "活动窗口的坐标是(" & ActiveWindowRECT.x & "," & ActiveWindowRECT.y & ")"
End Sub

'下面是代码,直接复制就行了

使用API
GetWindowsPos()

《VB怎么获取窗口标题》
答:非常简单.先用 GetForegroundWindow 来获取当前活动窗口的句柄,然后用 GetWindowText 来获得这个句柄的标题..就可以了,我给你写了个代码 你运行看下就明白了..在窗体上创建一个timer控件(用来随时检测活动窗口的标题),然后复制下面的代码 运行 就看到了...哥们,最好追加点分哦~~ o(∩_∩)o...~~...

《vb 中怎样调用 IE 浏览器访问指定的地址?》
答:vbHide 0 窗口是隐藏的,并且焦点被传递给隐藏窗口。vbNormalFocus 1 窗口拥有焦点,并且恢复到原来的大小与位置。vbMinimizedFocus 2 窗口缩小为图符并拥有焦点。vbMaximizedFocus 3 窗口最大化并拥有焦点。vbNormalNoFocus 4 窗口被恢复到最近一次的大小与位置。当前活动窗口仍为活动窗口。vbMinimizeNoFocus...

《visual Basic6.0 语言编程中,如何获取当前活动窗口的焦点控件句柄_百度...》
答:我当初也做过这个,好像是6年前的事了,记不太清楚了,好像如果便利目标IE的子窗口是找不到input类名也抓不到句柄的,不过我真的记不清了。但下拉框是绝对能找到的。而且我刚用Spy++试了一下,也没抓到!好久不玩VB+API了,如果你就是想学习一下API,那么下面这个是我刚从我Blog里翻出来的 ...

《怎样用vb代码调出其他程序的窗口》
答:VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。 VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示(缺省值)。 VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。 VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 VbMinimizedNoFoc...

《VB API使窗口获得焦点》
答:如果没猜错的“123456”是标题而已 FINDWINDOW 获取你的“123456”窗口句柄GetForegroundWindow 当前活动句柄如果当前句柄和FINDWINDOW的窗口句柄一样 你就可以用SENDKYES "TAB" 函数 转移焦点

《VB调用cmd并执行指定的命令》
答:VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示(缺省值)。VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。VbMinimizedNoFocus 6 窗口会以一个图标来显示,而当前活动的窗口...

《【vb】只要程序窗口为活动窗口就截获剪贴板数据》
答:'frmMain.lblTitle.ForeColor = &H246B& '窗口得到焦点时 frmMain.imgIcon.Picture = frmMain.imgICO(0).Picture Else 'frmMain.lblTitle.ForeColor = RGB(50, 50, 50) '窗口失去焦点时 frmMain.imgIcon.Picture = frmMain.imgICO(1).Picture End If End If WindowProc = CallWindowProc(m...

《vb活动窗口的问题》
答:Activate、 Deactivate 事件 在对象变成活动窗口的时候就会发生 Activate 事件。而当对象不再是活动窗口时,则会发生 Deactivate 事件。语法 Private Sub object_Activate()Private Sub object_Deactivate()object 代表一个对象表达式,其值为“应用于”列表中的对象。说明 对象可使用代码中的 Show 方法变成...

《vb 获取窗口句柄》
答:s = GetWindow(Me.hwnd, GW_HWNDFIRST) '获得句柄 GetWindowText s, a, 255 '获得标题 Dim ab As String * 255 GetClassName s, ab, 255 '获得类名 Dim ClassName As String ClassName = StripTerFlag(ab) 'StripTerFlag是一个自定义函数,后面有代码,用于去处结束符 If UCase(Cl...

《VB如何通过句柄获取窗口名并隐藏窗口的句柄?》
答:0, &H2 Or &H1 Timer1.Interval = 500 Timer1.Enabled = True End Sub Private Sub Timer1_Timer()Jubing = GetForegroundWindow()BiaoTi = Space(256)GetWindowText Jubing, BiaoTi, 256 Cls Print "当前活动窗口 句柄是:" & Jubing & vbCrLf & _"标题是: " & BiaoTi End Sub ...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网