|
Public Declare Function GetDlgItem Lib "user32" Alias "GetDlgItem" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long 该函数检索指定的对话框中的控件句柄 如果函数调用成功则返回值为给定控件的窗口句柄。如果函数调用失败,则返回值为NULL,表示为一个无效的对话框句柄或一个不存在的控件。若想获得更多错误信息,请调用GetLastError函数。 hDlg:标识含有控件的对话框。 nlDDlgltem:指定将被检索的控件的ID。 可以通过使用任何父子窗口对来使用GetDlgltem函数,而不仅只是对话框。只要hDlg参数指定一个父窗口,且子窗口有一个独立的标识符(象CreateWindow中hMenu参数指定的或创建子窗口的CreateWindowEx指定的那样),GetDlgltem就会返回一个有效的句柄到子窗口。 Windows CE:GetDlgltem函数只为对话框中的直接于控制工作,它不通过嵌套的对话框来搜寻。 Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本 单击=MouseDown、MouseUp 也就是先发送WM_LBUTTONDOWN,再发送WM_LBUTTONUP --------------------------------------------------------------- Option Explicit 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" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const WM_SETTEXT = &HC Private Const WM_NCLBUTTONDOWN = &HA1 Private Const WM_NCLBUTTONUP = &HA2 Private Const WM_KEYDOWN = &H100 Private Const WM_KEYUP = &H101 Private Const BM_CLICK = &HF5 'Private Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Private Sub command1_click() Dim Handle As Long ' 窗口句柄 Dim s As String Dim ParentHandle As Long ' 父窗口句柄 Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer Dim f As Integer, g As Integer, h As Integer, i As Integer, j As Integer Dim a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer, e1 As Integer Dim f1 As Integer, g1 As Integer, h1 As Integer, i1 As Integer, j1 As Integer Dim INI As String ParentHandle = FindWindow("FNWNS370", "系统名称")'这里可以找到一个主窗口的句柄 Handle = FindWindowEx(ParentHandle, 0&, "PBEDIT70", vbNullString)'这里可以得到一个文本框的值 SendMessage Handle, WM_SETTEXT, 0, ByVal "1234556"'改变文本框的值 Handle = FindWindowEx(ParentHandle, 0&, "Button", "确定(&O)") 'SendMessage Handle, WM_KEYDOWN, 32, &H11C0001 'SendMessage Handle, WM_KEYUP, 32, &H11C0001 '这两句模拟回车 SendMessage Handle, BM_CLICK, 0, 0'模拟单击 end sub 'Private Sub command1_click() 'Dim Handle As Long ' 窗口句柄 'Dim s As String 'Dim ParentHandle As Long ' 父窗口句柄 'ParentHandle = FindWindow("FNWNS370", "系统注册") 'While True ' Handle = GetWindow(ParentHandle, 6) '得到对话框的句柄.这里是我试出来的,等于6时刚好可以取到. ' Handle = FindWindowEx(Handle, 0&, "Button", "确定") ' SendMessage Handle, BM_CLICK, 0, 0 '模拟单击,我不知道为什么要单击两下. ' SendMessage Handle, BM_CLICK, 0, 0 ' DoEvents 'Wend 'End Sub
| |