Управление чужим приложением через SendMessage - VB

Узнай цену своей работы

Формулировка задачи:

Итак, суть проблемы: Есть приложение для работы с реле по USB. Исходники приложения поставщик отказался предоставить, а управлять реле надо несколько умнее чем тыкая 4 кнопке на форме. Написал небольшую программку которая делает все расчеты но столкнулся с проблемой. Не могу получить хандлы кнопок с окна из которого переключаются реле. используя WinDowzer автор ManHunter я подсмотрел след, названия и тип кнопок одинаковые, это раз. Второе они лежат в GrupBox который лежит в Panel которая находится в окне, это два. Функции FindWindow нахожу окно, FindWindowEx - панель в окне, а как далее не пойму, ни кнопки ни GrupBox не находит. Клас кнопок "TButton", название "Установить в 1".

Решение задачи: «Управление чужим приложением через SendMessage»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. 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
  4. Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
  5.  
  6. Private Const GW_CHILD      As Long = 5
  7. Private Const GW_HWNDNEXT   As Long = 2
  8.  
  9.  
  10. Private Sub Form_Load()
  11.     Dim TMain   As Long
  12.     Dim TPanel  As Long
  13.     Dim TGroup  As Long
  14.     Dim btn(4)  As Long
  15.    
  16.     TMain = FindWindowEx(0, 0, StrPtr("TMain"), StrPtr("USB датчик температуры - Мастер Кит - BM1707"))
  17.     If TMain = 0 Then Exit Sub
  18.    
  19.     TPanel = FindWindowEx(TMain, 0, StrPtr("TPanel"), 0)
  20.     If TPanel = 0 Then Exit Sub
  21.    
  22.     TGroup = FindWindowEx(TPanel, 0, StrPtr("TGroupBox"), StrPtr(" Управление каналами "))
  23.     If TGroup = 0 Then Exit Sub
  24.    
  25.     ' // Записать
  26.    btn(0) = GetWindow(TGroup, GW_CHILD)
  27.     ' // Нижняя "Сбросить в 0"
  28.    btn(1) = GetWindow(btn(0), GW_HWNDNEXT)
  29.     ' // Верхняя "Сбросить в 0"
  30.    btn(2) = GetWindow(btn(1), GW_HWNDNEXT)
  31.     ' // Нижняя "Установить в 1"
  32.    btn(3) = GetWindow(btn(2), GW_HWNDNEXT)
  33.     ' // Верхняя "Установить в 1"
  34.    btn(4) = GetWindow(btn(3), GW_HWNDNEXT)
  35.    
  36.     Debug.Print Hex(btn(0))
  37.     Debug.Print Hex(btn(1))
  38.     Debug.Print Hex(btn(2))
  39.     Debug.Print Hex(btn(3))
  40.     Debug.Print Hex(btn(4))
  41.    
  42. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы