VB里取窗口句柄

VB里取窗口句柄,第1张

'便宜你了Private Declare Function WindowFromPointXY Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As LongPrivate Declare Function GetCursorPos Lib "user32" (LpPoint As POINTAPI) As Long Private Type POINTAPI x As Long y As Long End Type Dim ahwnd As Long Dim xy As POINTAPI '(声明变量类型)Private Sub Timer1_Timer() GetCursorPos xy '(取得XY的座标) ahwnd = WindowFromPointXY(xyx, xyy) '(取得当前鼠标坐标下窗口句柄) Form1Caption = ahwndEnd Sub

Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long\x0d\Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long\x0d\Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long\x0d\Private Type POINTAPI\x0d\ x As Long\x0d\ y As Long\x0d\End Type\x0d\Dim n As POINTAPI\x0d\Dim a As Long\x0d\Private Sub Form_Load()\x0d\Timer1Interval = 100\x0d\Label1Caption = "移动鼠标指针"\x0d\End Sub\x0d\\x0d\Private Sub Timer1_Timer()\x0d\GetCursorPos n\x0d\a = WindowFromPoint(nx, ny)\x0d\If a 0 Then\x0d\Dim s As String\x0d\ s = String(100, Chr(0))\x0d\ GetWindowText a, s, 100\x0d\ Label1Caption = "目标标题或文本: " & Trim(s)\x0d\ Label2Caption = "目标句柄为 " & a\x0d\End If\x0d\End Sub

'下面取游戏窗口句柄 hwnd

Mir2Hwnd = FindWindow("TFrmMain", "legend of mir2")

hwnd = FindWindowEx(Mir2Hwnd, 0, "TDXDraw", vbNullString)

'以下为虚拟按键

PostMessage hwnd, WM_SETFOCUS, 0, 0 '获得窗口焦点

PostMessage hwnd, WM_KEYDOWN, 0, 0 '发送回车键

'PostMessage hwnd, WM_KEYDOWN, VK_UP, MapVirtualKey(VK_UP, WM_KEYDOWN) '发送向上键

'PostMessage hwnd, WM_KEYDOWN, VK_RETURN, MapVirtualKey(VK_RETURN, WM_KEYDOWN) '发送回车键

'向游戏窗口发送喊话内容

PostMessage hwnd, WM_CHAR, data(i), 0&

PostMessage hwnd, WM_CHAR, data(i + 1), 0&

___________

以上代码也可以用VBS实现, 且更简单 如有不明,请qq 312897211

声明api: 函数WindowFromPoint 类型POINTAPI '-----------------------------dim pt as POINTAPIptx=200pty=200dim PThWnd as long PThWnd=WindowFromPoint(pt)msgbox PThWnd'----------------------------手写的,不排除会有输入错误,但是算法是正确的。。。。

OptionExplicitPrivateDeclareFunctionFindWindowLibuser32AliasFindWindowA(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLongPrivateDeclareFunctionGetWindowTextLibuser32AliasGetWindowTextA(ByValhwndAsLong,ByVallpStringAsString,ByValcchAsLong)AsLongPrivateDeclareFunctionGetWindowLibuser32(ByValhwndAsLong,ByValwCmdAsLong)AsLongPrivateDeclareFunctionGetDesktopWindowLibuser32()AsLongPrivateDeclareFunctionGetClassNameLibuser32AliasGetClassNameA(ByValhwndAsLong,ByVallpClassNameAsString,ByValnMaxCountAsLong)AsLongPrivateConstGW_HWNDFIRST=0PrivateConstGW_HWNDNEXT=2PrivateConstGW_CHILD=5PrivateSubCommand1_Click()CallList1_ClickEndSubPrivateSubCommand2_Click()DimhwndAsLongDimsAsString,tAsStringList1Clearhwnd=GetDesktopWindow()s=String(256,Chr(0))GetClassNamehwnd,s,255s=Replace(s,Chr(0),)t=String(256,Chr(0))GetWindowTexthwnd,t,255t=Replace(t,Chr(0),)List1AddItem桌面:&hwnd&类名:&s&标题:&t&vbCrLfhwnd=GetWindow(hwnd,GW_CHILDOrGW_HWNDFIRST)s=String(256,Chr(0))GetClassNamehwnd,s,255s=Replace(s,Chr(0),)t=String(256,Chr(0))GetWindowTexthwnd,t,255t=Replace(t,Chr(0),)List1AddItem窗口:&hwnd&类名:&s&标题:&t&vbCrLfWhilehwnd<0hwnd=GetWindow(hwnd,GW_HWNDNEXT)s=String(256,Chr(0))GetClassNamehwnd,s,255s=Replace(s,Chr(0),)t=String(256,Chr(0))GetWindowTexthwnd,t,255t=Replace(t,Chr(0),)List1AddItem窗口:&hwnd&类名:&s&标题:&t&vbCrLfWendEndSubPrivateSubForm_Load()Command1Caption=获取所有控件Command2Caption=遍历所有窗体EndSubPrivateSubEnumAllHandles(ByValhwndAsLong)DimhnAsLongDimfirsthdAsLongDimsAsString,tAsStringfirsthd=GetWindow(hwnd,GW_CHILD)firsthd=GetWindow(firsthd,GW_HWNDFIRST)hn=firsthdDoWhilehn<0s=String(256,Chr(0))GetClassNamehn,s,255s=Replace(s,Chr(0),)t=String(256,Chr(0))GetWindowTexthn,t,255t=Replace(t,Chr(0),)Text1Text=Text1Text&句柄:&hn&父句柄:&hwnd&类名:&s&标题:&t&vbCrLfTreeView1NodesAddk&hwnd,tvwChild,k&hn,句柄:&hn&类名:&s&标题:&tEnumAllHandleshnhn=GetWindow(hn,GW_HWNDNEXT)Ifhn=firsthdThenExitDoLoopEndSubPrivateSubList1_Click()IfList1ListIndex=-1ThenExitSubTreeView1NodesClearTreeView1NodesAdd,,k&Trim(Str(Val(Mid(List1Text,4)))),List1TextText1Text=EnumAllHandlesVal(Mid(List1Text,4))TreeView1Nodes(k&Trim(Str(Val(Mid(List1Text,4)))))Expanded=TrueEndSub'添加两个按钮一个文本框一个列表框和一个树形图

以上就是关于VB里取窗口句柄全部的内容,包括:VB里取窗口句柄、《VB》API如何获取窗口内控件的句柄、VB获取游戏窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9720377.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存