有什么方法可以得到已知程序中的控件的句柄.

biku 2002-12-23 11:45:24
有什么方法可以得到已知程序中的控件的句柄.
...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2002-12-23
  • 打赏
  • 举报
回复
lpsz1 String,欲搜索的类名。零表示忽略
lpsz2 String,欲搜索的标题。零表示忽略
zyl910 2002-12-23
  • 打赏
  • 举报
回复
用FindWindowEx

控件是一种子窗口



FindWindowEx

VB声明
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
说明
在窗口列表中寻找与指定条件相符的第一个子窗口
返回值
Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
参数表
参数 类型及说明
hWnd1 Long,在其中查找子的父窗口。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)
hWnd2 Long,从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索
lpsz1 String,欲搜索的类名。零表示忽略
lpsz2 String,欲搜索的类名。零表示忽略
skywolfY 2002-12-23
  • 打赏
  • 举报
回复
可以用Findwindow找的,也可以用鼠标找
给段代码,没整理,意思是这样的 
Text1.Text = ""

nNum = nNum + 1
Text1.Text = " " & nNum
If GetCursorPos(pointMouse) Then
Text1.Text = Text1.Text & "提取鼠标坐标成功 :" & pointMouse.X & "," & pointMouse.Y
End If
lhWnd = WindowFromPoint(pointMouse.X, pointMouse.Y)
Combo1.Text = lhWnd


Dim ss As String * 256

Dim aa As Long
aa = GetClassName(lhWnd, ss, 255)
If aa = 0 Then Text2.Text = "出错"
Text2.Text = ss

Dim am As Long
Dim sss As String * 2000
am = GetWindowText(lhWnd, sss, 2000)
Text3.Text = sss
biku 2002-12-23
  • 打赏
  • 举报
回复
好像它们只能找到窗体的句柄,而不是控件的.我的意思是例如,要找出一个程序(不是自己编的程序)中的一个按钮的句柄
RandomLife 2002-12-23
  • 打赏
  • 举报
回复
API中的FindWindow、EnumWindows可以。自己查查MSDN吧。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧