Подробное использование: https://www.kancloud.cn/sysdzw/clswindow
CLSWindow — это класс в среде VB6, который используется для работы с внешними окнами программ. Он позволяет получать дескрипторы окон, содержимое текстовых полей и другие данные. Класс упрощает работу с окнами и освобождает от необходимости использования множества API-функций.
Автор начал разработку класса давно и планировал создать его похожим на DOM-объекты, чтобы обеспечить доступ к различным окнам и элементам управления на рабочем столе через методы getElementByXXX. Однако объём работы оказался слишком большим, и пока реализована только часть функционала. Автор ожидает, что сообщество поможет в дальнейшем развитии.
На данный момент класс охватывает большинство распространённых операций с Windows-окнами, таких как получение дескриптора окна, установка окна как активного, изменение содержимого текстового поля внутри окна и активация кнопок внутри окна.
Класс продолжает развиваться, и его функциональность становится всё более обширной и мощной. Теперь можно легко устанавливать заголовки окон, перемещать окна и выполнять другие действия. Раньше для этого требовалось использовать множество API-функций, а теперь достаточно нескольких строк кода.
Если вы хотите узнать о принципах реализации методов, можете посмотреть исходный код.
Dim window As New clsWindow
If window.GetWindowHwndByTitle("腾讯网迷你版").hwnd > 0 Then
window.CloseWindow 'Закрыть окно
End If
Это выглядит довольно просто.
Предположим, что класс текстового поля в блокноте — Edit. Тогда мы можем написать программу следующим образом:
Dim window As New clsWindow
If window.GetWindowHwndByTitle("测试.txt - 记事本").hwnd > 0 Then
MsgBox window.GetElementTextByClassName("Edit")
End If
Этот пример также кажется простым, и метод можно улучшить, используя регулярные выражения:
Dim window As New clsWindow
If window.GetWindowHwndByTitleRegExp("测试\.txt.*?").hwnd > 0 Then
MsgBox window.GetElementTextByClassName("Edi", , True) 'Третий параметр указывает, использовать ли регулярные выражения (по умолчанию False).
End If
В версии v1.9 и выше можно использовать сокращённую запись. Например:
window.GetWindowHwndByTitle("腾讯网迷你版").CloseWindow
.
Дополнительные примеры использования можно найти в блоге автора.
Члены класса и методы:
http://blog.csdn.net/sysdzw/article/details/9083313
'==============================================================================================
'Название: windows 窗体控制类 v2.3
'Описание: класс для управления окнами Windows, позволяющий выполнять множество распространённых операций (класс называется clsWindow)
'Пример использования: Dim window As New clsWindow
' window.GetWindowByTitle("计算器").closeWindow' ***!!!win10 если возникает ошибка, выполните с правами администратора***!!!
'Программирование: sysdzw, оригинальный разработчик. Если вам нужно расширить или обновить модуль, пожалуйста, отправьте мне копию по электронной почте, и мы будем поддерживать его вместе.
'Дата публикации: 2013/06/01
'Блог: https://blog.csdn.net/sysdzw
'Руководство пользователя: https://www.kancloud.cn/sysdzw/clswindow/
'Электронная почта: sysdzw@163.com
'QQ: 171977759
'Версия: V1.0 первая версия 2012/12/03
' V1.1 исправлены некоторые функции, связанные с регулярными выражениями, и скорректирована структура класса 2013/05/28
' V1.2 добавлен атрибут Caption, который можно получить или установить в текущей строке заголовка 2013/05/29
' V1.3 добавлен метод Focus, который может активировать текущее окно 2013/06/01
' добавлены методы Left, Top, Width, Height, Move для обработки положения окна
' V1.4 добавлены функции для изменения положения окна 2013/06/04
' добавлен метод AppName для получения пути приложения
' добавлен метод AppCommandLine для получения параметров запуска приложения
' V1.5 добавлены функции максимизации, минимизации и скрытия окна 2013/06/06
' Добавлен параметр UseRegExp для функций, связанных с элементами управления, по умолчанию F
' V1.6 функции Left и Top преобразованы в атрибуты, которые можно получить и установить 2013/06/10
' V1.7 добавлена функция CloseApp для завершения процесса 2013/06/13
' Исправлены некоторые функции, связанные с регулярными выражениями
' добавлена функция GetElementTextByText
' добавлена функция GetElementHwndByText
' V1.8 добавлена функция GetWindowByClassName 2013/06/26
' добавлена функция GetWindowByClassNameEx
' добавлена функция GetWindowByAppName
' добавлен частный переменный hWnd_
' добавлен атрибут hWnd, который можно установить, при установке будет выполнена проверка, если значение не соответствует требованиям, оно будет установлено равным 0
' обновлена функция GetWindowByTitleEx, позволяющая выборочно поддерживать регулярные выражения
' удалена функция GetWindowByTitleRegExp, объединена с предыдущей функцией
' добавлена функция SetFocus, которая вызывает Focus для обеспечения совместимости с VB
' расширены функции ProcessID, AppPath, AppName, AppCommandLine, могут принимать параметры
' пользователь wwb (wwbing@gmail.com) предложил несколько функций и свойств методов:
' CheckWindow, Load, WindowState, Visible, hDC, ZOrder
' AlphaBlend, Enabled, Refresh, TransparentColor
' приняты некоторые предложения wwb, переменная дескриптора изменена на hWnd_, но hWnd используется как общедоступное свойство
' V1.9 исправлена ошибка в функции GetMatchHwndFromWindow с регулярным выражением 2013/08/07
' исправлена ошибка в функции GetMatchHwndFromWindow 2014/09/23
' добавлена функция GetWindowByClassNameEx
' добавлена функция GetWindowByPID для поиска дескрипторов окон по PID
' добавлена функция GetCaptionByHwnd для получения заголовка по дескриптору
' добавлена функция SetTop для установки окна на передний план, передача false отменяет действие 2014/09/24
' добавлены функции Shake, FadeIn, FadeOut для создания эффекта дрожания, постепенного появления и исчезновения
' V2.0 исправлена ошибка в функции GetWindowByPID при обходе окон в Win7 2015/09/29
' исправлена ошибка в функции GetWindowByAppName при обходе окон в Win7
' исправлена ошибка в функции GetWindowByAppNameEx при обходе окон в Win7
``` **V2.1 Исправления функций: ClickPoint**
Добавлены параметры «относительно» и «абсолютно» для режима позиции, по умолчанию используется «относительно».
**2018/06/05**
* **' Добавлена функция: SelectComboBoxIndex**
Выбор элемента в выпадающем списке на основе указанного индекса.
* **' Добавлена функция: GetWindowByHwnd**
Определение окна на основе заданного дескриптора.
* **' Добавлены функции: GetWindowByCursorPos и GetWindowByPoint**
Получение окна (или компонента) на основе текущей позиции курсора и заданной позиции соответственно.
**V2.2 Исправления и дополнения**
* Исправлен регулярный выражение для учёта отрицательных значений дескрипторов и идентификаторов по предложению пользователя Chen8013.
* Оптимизировано свойство Caption(Get) по предложению пользователя Xiaofan для получения содержимого текстового поля.
* Метод Wait интегрирован из модуля clsWaitableTimer.
* Добавлен метод ClickCurrentPoint.
* Добавлен метод SetCursor (также известный как SetPoint, MoveCursor и MoveCursorTo).
* Все функции с таймаутом ожидания по умолчанию 60 секунд теперь имеют таймаут 10 секунд.
* Добавлено свойство Text, Value и Title (все они являются псевдонимами свойства Caption).
* Улучшена структура кода. Функции, которые можно перенести в класс, были перемещены туда.
* Добавлена функция myIsWindowVisibled для определения видимости окна, включая случаи, когда ширина и высота равны нулю.
* Оптимизация функции GetTextByHwnd по предложению Xiaofan.
* Добавлены функции CommandLine (аналогична AppCommandLine) и MakeTransparent для настройки прозрачности окна.
* Добавлены функции MoveToCenter для перемещения окна в центр экрана и IsTopmost для проверки, является ли окно самым верхним.
* Добавлена функция GetWindowTextByHwnd для получения заголовка окна на основе дескриптора окна.
* Исправление функции Focus после использования, чтобы избежать изменения свойств самого верхнего окна.
* Добавлена функция IsWin64 по предложению Xiaofan.
* Исправления в функциях AppPath и AppCommandLine для совместимости с 64-битными системами и улучшения кода.
* Добавлена функция IsForegroundWindow для определения, является ли окно активным.
* Добавлены функция GetClassNameByHwnd и свойство ClassName(Get), возвращающее имя класса окна.
* Функция CheckWindow теперь возвращает значение Boolean вместо Long и объявлена как Public.
* Добавлена функция Click для нажатия на текущий или указанный дескриптор.
* Для совместимости с Windows 10 настройка максимального и минимального размера окна теперь выполняется через SendMessage.
* Добавлена функция Restore для восстановления окна после его максимизации или минимизации.
**V2.3 Дополнения и исправления**
* Добавлена функция SendKeys для замены встроенной функции VB, решая проблему с отказом в Windows 10.
* Оптимизирована функция GetMatchHwndFromWindow, ограничивая попытки поиска информации о окне до 10 раз.
* Добавлена функция FileToClipboard для установки файла на буфер обмена.
* Исправлена ошибка в функции GetWindowByClassNameEx в части получения имени класса внутри цикла do.
* Добавлена функция GetWindowClassNameByHwnd, аналогичная GetClassNameByHwnd.
* Добавлена функция ClickPointBackground для выполнения щелчка в фоновом режиме в указанной точке окна.
* Добавлены функции MouseLeftDown и MouseLeftUp для имитации нажатия и отпускания левой кнопки мыши в заданной точке.
* Аналогично добавлены функции MouseRightDown и MouseRightUp для правой кнопки мыши.
* Добавлена функция DragTo для перетаскивания мышью точки в другую точку.
* Расширенная функция DragToEx позволяет выполнять перетаскивание между несколькими точками.
* Добавлена функция ClipboardSetText для копирования текста, совместимая с VBA.
* В функции FileToClipboard заменён объект Clipboard на API для обеспечения совместимости с VBA.
* Исправлена функция GetWindowByClassName для предотвращения возврата скрытых окон при неудачном поиске окна.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )