VB和VB.NET中获得其他窗体控件句柄
http://fengzhixue168.blog.163.com/blog/static/95761592009648525675/ 一、必不可少的API函数 1.FindWindow 此函数用于寻找其他程序的句柄。这里用来寻找音量控制系统的窗口句柄。 2.FindWindowEx 此函数用于寻找其他程序的控件句柄。与FindWindow不同的是,这个函数寻找的是子窗体的句柄(控件也被视为子窗体)。这里用来寻找“音量控制”程序里的“全部静音”复选框的句柄。 3.SendMessage 此函数用于向窗体及控件发送消息。 二、窗体控件 在VB中新建窗体,并放置按钮一个。 三、程序代码(在Windows XP中测试通过) ' **********以下是API函数声明********** Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String,ByVal lpWindowName As String) As Long Private 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 Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long,ByVal wMsg As Long,ByVal wParam As Long,ByVal lParam As Long) As Long ' **********以下是API函数使用的常量赋值********** Private Const BM_GETCHECK = &HF0 ‘ 取得复选框状态 Private Const BM_SETCHECK = &HF1 ’ 设置复选框状态 Private Const WM_APPCOMMAND = &H319 ' ***********以下是Command1单击的程序********** Dim hwnd0 As Long' 用于记录“音量控制”程序的句柄 hwnd0 = FindWindow(vbNullString,"音量控制") hwnd1 = FindWindowEx(hwnd0,0&,"Button","全部静音(&M)") ' 复选框的类名是"Button" state = SendMessage(hwnd1,BM_GETCHECK,ByVal CLng(0),ByVal CLng(0)) ' 如果系统没有静音,则使系统静音 ' 注:如果再使用一次同样的代码则恢复系统声音 SendMessagehwnd0,WM_CLOSE,0 '关闭音量控制程序
End Sub 我们再来看一下VB.NET与VB中与何不同: API函数声明不同 声明类型中的Long类型一律改为Interger 窗体句柄不同 由Me.hwnd改成Me.Handle (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |