【vb.net】获取窗口控件句柄笔记

近期在做一个【在文件另存为窗口快速输入自定义路径字符串】的功能,一开始基本的思路是:

  • 研究分类各种软件的另存为窗口的控件类型、标题
  • 使用FindWindowFindWindowEx找出路径文本框和保存按钮的句柄
  • 使用SendMessageSendMessageEX将自定义路径字符串输入至上述的文本框,并后台模拟点击保存按钮。

基本的思路是没有问题的,如文本编辑器的另存为窗口,使用如下代码可以获取另存为窗口的文本框句柄:

myhwnd = FindWindow(vbNullString, "另存为")
myhwnd = FindWindowEx(myhwnd, 0&, "DirectUIHWND", vbNullString)
myhwnd = FindWindowEx(myhwnd, 0&, "FloatNotifySink", vbNullString) 
myhwnd = FindWindowEx(myhwnd, 0&, "ComboBox", vbNullString)
myhwnd 
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VB.NET获取所有窗口句柄可以使用 Windows API 函数 EnumWindows 和 GetWindowText、GetClassName。 EnumWindows 函数用于枚举所有顶层窗口,示例代码如下: ``` Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As EnumWindowsCallback, ByVal lParam As IntPtr) As Boolean Private Delegate Function EnumWindowsCallback(ByVal hWnd As IntPtr, ByVal lParam As IntPtr) As Boolean Private Function EnumWindowsProc(ByVal hWnd As IntPtr, ByVal lParam As IntPtr) As Boolean ' 处理枚举到的窗口句柄 Return True ' 返回 True 继续枚举,返回 False 停止枚举 End Function EnumWindows(AddressOf EnumWindowsProc, IntPtr.Zero) ``` GetWindowText 函数用于获取窗口标题,示例代码如下: ``` Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As IntPtr, ByVal lpString As StringBuilder, ByVal nMaxCount As Integer) As Integer Dim title As StringBuilder = New StringBuilder(256) GetWindowText(hWnd, title, 256) ``` GetClassName 函数用于获取窗口类名,示例代码如下: ``` Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As IntPtr, ByVal lpClassName As StringBuilder, ByVal nMaxCount As Integer) As Integer Dim className As StringBuilder = New StringBuilder(256) GetClassName(hWnd, className, 256) ``` 注意:在使用 EnumWindows 函数枚举窗口时,需要在回调函数中处理枚举到的窗口句柄,可以通过 GetWindowText 和 GetClassName 函数获取窗口标题和类名。同时,需要注意窗口标题和类名可能包含中文字符,需要使用 StringBuilder 对象来存储。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值