Послать сообщение элементу управления в другую программу зная его хендл - VB
Формулировка задачи:
Доброго дня суток всем
Разбираюсь с управлением внешней программой.
Разобрался с заполнением текстовых полей, нажатием на кнопки (опции тоже подчиняются)
Не могу справиться с TUpDown
Окно нашел. Какие ему посылать сообщения для управления значением?
Решение задачи: «Послать сообщение элементу управления в другую программу зная его хендл»
textual
Листинг программы
- Option Explicit
- 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 FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWndParent As Long, ByVal hWndChildAfter As Long, ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
- Private Const GW_HWNDNEXT As Long = 2
- Private Const WM_USER = &H400
- Private Const UDM_SETPOS32 = WM_USER + 113
- Private Const UDM_GETPOS32 = WM_USER + 114
- Private Const WM_SETTEXT As Long = &HC
- Private Sub Form_Load()
- Dim hwnd As Long
- hwnd = FindWindowEx(0, 0, "TFormSaveOption", vbNullString)
- hwnd = FindWindowEx(hwnd, 0, "TGroupBox", "Save format")
- hwnd = FindWindowEx(hwnd, 0, "TUpDown", vbNullString)
- SetArbitraryValue hwnd, 0
- End Sub
- Private Function SetArbitraryValue(ByVal hWndUpDown As Long, _
- ByVal Value As Long) As Long
- Dim hwndTxt As Long
- hwndTxt = GetWindow(hWndUpDown, GW_HWNDNEXT)
- SendMessage hWndUpDown, UDM_SETPOS32, 0, ByVal Value
- Value = SendMessage(hWndUpDown, UDM_GETPOS32, 0, ByVal 0&)
- SendMessage hwndTxt, WM_SETTEXT, 0, ByVal CStr(Value)
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д