想用VB操作通达信的数据导出窗口,有些问题请教.
想实现功能,点击Excel文件标签,取得文本框中的文件名,执行导出操作,代码如下:
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 Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Const TCM_FIRST = &H1300
Private Const TCM_SETCURFOCUS = (TCM_FIRST + 48)
Private Const BM_CLICK As Long = &HF5
Public Sub 数据导出()
Dim tdx_hwnd As Long
Dim tdx_bqkz As Long
Dim tdx_control As Long
Dim Filename As String
tdx_hwnd = FindWindow(vbNullString, "数据导出") '查找数据导出窗口
If tdx_hwnd <> 0 Then
tdx_bqkz = FindWindowEx(tdx_hwnd, 0, "SysTabControl32", "Tab1")
SendMessage tdx_bqkz, TCM_SETCURFOCUS, 1, 0 '让Excel文件标签获得焦点
SetForegroundWindow tdx_hwnd
tdx_control = FindWindowEx(tdx_hwnd, 0, "Edit", vbNullString) '查找控件存盘文件名
Dim s As String * 255
GetWindowText tdx_control, s, Len(s)
tdx_control = FindWindowEx(tdx_hwnd, 0, "Button", "导出") '查找控件
SendMessage tdx_control, BM_CLICK, 0, 0
End If
End Sub
运行效果如下:
红色那句代码可以让Excel文件标签选中,但文本框中的文件不会随着改变,与鼠标点击有些不一样。
洋红色那句代码不能取得Edit控件中的文件名,总是为空。
请各位老师帮看看是什么问题。