Управление чужим приложением через SendMessage - VB
Формулировка задачи:
Итак, суть проблемы:
Есть приложение для работы с реле по USB. Исходники приложения поставщик отказался предоставить, а управлять реле надо несколько умнее чем тыкая 4 кнопке на форме.
Написал небольшую программку которая делает все расчеты но столкнулся с проблемой.
Не могу получить хандлы кнопок с окна из которого переключаются реле.
используя WinDowzer автор ManHunter я подсмотрел след, названия и тип кнопок одинаковые, это раз.
Второе они лежат в GrupBox который лежит в Panel которая находится в окне, это два.
Функции FindWindow нахожу окно, FindWindowEx - панель в окне, а как далее не пойму, ни кнопки ни GrupBox не находит.
Клас кнопок "TButton", название "Установить в 1".
Решение задачи: «Управление чужим приложением через SendMessage»
textual
Листинг программы
- Option Explicit
- Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExW" (ByVal hWndParent As Long, ByVal hWndChildAfter As Long, ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
- Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
- Private Const GW_CHILD As Long = 5
- Private Const GW_HWNDNEXT As Long = 2
- Private Sub Form_Load()
- Dim TMain As Long
- Dim TPanel As Long
- Dim TGroup As Long
- Dim btn(4) As Long
- TMain = FindWindowEx(0, 0, StrPtr("TMain"), StrPtr("USB датчик температуры - Мастер Кит - BM1707"))
- If TMain = 0 Then Exit Sub
- TPanel = FindWindowEx(TMain, 0, StrPtr("TPanel"), 0)
- If TPanel = 0 Then Exit Sub
- TGroup = FindWindowEx(TPanel, 0, StrPtr("TGroupBox"), StrPtr(" Управление каналами "))
- If TGroup = 0 Then Exit Sub
- ' // Записать
- btn(0) = GetWindow(TGroup, GW_CHILD)
- ' // Нижняя "Сбросить в 0"
- btn(1) = GetWindow(btn(0), GW_HWNDNEXT)
- ' // Верхняя "Сбросить в 0"
- btn(2) = GetWindow(btn(1), GW_HWNDNEXT)
- ' // Нижняя "Установить в 1"
- btn(3) = GetWindow(btn(2), GW_HWNDNEXT)
- ' // Верхняя "Установить в 1"
- btn(4) = GetWindow(btn(3), GW_HWNDNEXT)
- Debug.Print Hex(btn(0))
- Debug.Print Hex(btn(1))
- Debug.Print Hex(btn(2))
- Debug.Print Hex(btn(3))
- Debug.Print Hex(btn(4))
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д