我要对另一程序(vb写的)窗口中的 多个textbox,多个Combobox,和多个commandbox进行赋值。比如窗口的样子:
----------------窗体:(“测试”) ThunderRT6FormDC
用户:text1(0) ThunderRT6TextBox
年龄:text1(1) ThunderRT6TextBox
性别:Combo(0) Edit
密码:text1(2) ThunderRT6TextBox
所属地区:Combo(0) Edit
确定Command1(0) ThunderRT6CommandButton
取消Command1(1) ThunderRT6CommandButton
----------------------------------请把:"张三,25,男,*****,华东,OK" 对号入座!~
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32.dll" 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 GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Const BM_CLICK = &HF5
Private Const WM_SETTEXT = &HC
Const WM_GETTEXT = &HD
Const WM_GETTEXTLENGTH = &HE
Const wm_setfocus = &H7 Const CB_GETCOUNT = &H146
Const CB_FINDSTRING = &H14C
'以下函数实现 消息传递功能 ::::
'---------------------------------------
Public Str_Type As String
Public Str_Number As String
Public Sub SendToWindowsText(FormName As String, Stxt1 As String, Stxt2 As String, Scmb1 As String, Scmb2 As String)
'Stxt1 最底下的Text控件参数
'Stxt2 ……
'Scmb1 最底下的combobox控件参数
'Scmb2 ……
'-----------------------------------------
Dim Hwt As Long
Dim Htxt01 As Long, Htxt02 As Long, Htxt03 As Long, Htxt04 As Long, Htxt05 As Long, Htxt06 As LongHwt = FindWindow(vbNullString, FormName)
If Hwt Then
'取Text控件
Htxt01 = FindWindowEx(Hwt, ByVal 0&, "ThunderRT6TextBox", vbNullString)
Htxt02 = FindWindowEx(Hwt, Htxt01, "ThunderRT6TextBox", vbNullString)
Htxt03 = FindWindowEx(Hwt, Htxt02, "ThunderRT6TextBox", vbNullString)
Htxt04 = FindWindowEx(Hwt, Htxt03, "ThunderRT6TextBox", vbNullString)
Htxt05 = FindWindowEx(Hwt, Htxt04, "ThunderRT6TextBox", vbNullString)
Htxt06 = FindWindowEx(Hwt, Htxt05, "ThunderRT6TextBox", vbNullString)SendMessage Htxt01, WM_SETTEXT, 0, ByVal Stxt1
SendMessage Htxt02, WM_SETTEXT, 0, ByVal Stxt2
'取combobox控件Dim a As Long, b As Long
a = FindWindowEx(Hwt, ByVal 0&, "ThunderRT6ComboBox", vbNullString)
b = FindWindowEx(a, 0&, "Edit", vbNullString)
SendMessage a, WM_SETTEXT, 0, ByVal Scmb1
Dim c As Long, d As Long
c = FindWindowEx(Hwt, a, "ThunderRT6ComboBox", vbNullString)
d = FindWindowEx(c, 0&, "Edit", vbNullString)
SendMessage c, WM_SETTEXT, 0, ByVal Scmb2End If
End Sub
Public Sub GetFromWindowsText(FormName As String)
Dim aa As String * 256, bb As String * 256
Dim cc As String * 256, dd As String * 256
Dim ee As String * 256, ff As String * 256
Dim Hwt As Long
Dim Htxt01 As Long, Htxt02 As Long, Htxt03 As Long, Htxt04 As Long, Htxt05 As Long, Htxt06 As Long
Hwt = FindWindow(vbNullString, FormName)
If Hwt Then
'取Text控件
Htxt01 = FindWindowEx(Hwt, ByVal 0&, "ThunderRT6TextBox", vbNullString)
Htxt02 = FindWindowEx(Hwt, Htxt01, "ThunderRT6TextBox", vbNullString)
Htxt03 = FindWindowEx(Hwt, Htxt02, "ThunderRT6TextBox", vbNullString)
Htxt04 = FindWindowEx(Hwt, Htxt03, "ThunderRT6TextBox", vbNullString)
Htxt05 = FindWindowEx(Hwt, Htxt04, "ThunderRT6TextBox", vbNullString)
Htxt06 = FindWindowEx(Hwt, Htxt05, "ThunderRT6TextBox", vbNullString)
'取值
SendMessage Htxt01, WM_GETTEXT, 255, ByVal aa
SendMessage Htxt02, WM_GETTEXT, 255, ByVal bb
SendMessage Htxt03, WM_GETTEXT, 255, ByVal cc
SendMessage Htxt04, WM_GETTEXT, 255, ByVal dd
SendMessage Htxt05, WM_GETTEXT, 255, ByVal ee
SendMessage Htxt06, WM_GETTEXT, 255, ByVal ff
Str_Type = Left(cc, 2) '种类
Str_Number = Left(dd, 6) '牌号
SendMessage Htxt05, wm_setfocus, 0, 0 '传递光标
End If
End Sub