1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/sysdzw-clswindow

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

CLSWindow v2.3

VB6 操作外部程序窗口的类 CLSWindow 2.3 使用说明

Подробное использование: https://www.kancloud.cn/sysdzw/clswindow

CLSWindow — это класс в среде VB6, который используется для работы с внешними окнами программ. Он позволяет получать дескрипторы окон, содержимое текстовых полей и другие данные. Класс упрощает работу с окнами и освобождает от необходимости использования множества API-функций.

Автор начал разработку класса давно и планировал создать его похожим на DOM-объекты, чтобы обеспечить доступ к различным окнам и элементам управления на рабочем столе через методы getElementByXXX. Однако объём работы оказался слишком большим, и пока реализована только часть функционала. Автор ожидает, что сообщество поможет в дальнейшем развитии.

На данный момент класс охватывает большинство распространённых операций с Windows-окнами, таких как получение дескриптора окна, установка окна как активного, изменение содержимого текстового поля внутри окна и активация кнопок внутри окна.

Класс продолжает развиваться, и его функциональность становится всё более обширной и мощной. Теперь можно легко устанавливать заголовки окон, перемещать окна и выполнять другие действия. Раньше для этого требовалось использовать множество API-функций, а теперь достаточно нескольких строк кода.

Если вы хотите узнать о принципах реализации методов, можете посмотреть исходный код.

Примеры использования:

1. Закрыть окно «腾讯网迷你版»:

Dim window As New clsWindow
If window.GetWindowHwndByTitle("腾讯网迷你版").hwnd > 0 Then
    window.CloseWindow  'Закрыть окно
End If

Это выглядит довольно просто.

2. Получить содержимое открытого блокнота с названием «测试.txt - 记事本»:

Предположим, что класс текстового поля в блокноте — 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.

Дополнительные примеры использования можно найти в блоге автора.

Члены класса и методы:

Ссылка на блог CSDN:

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 )

Вы можете оставить комментарий после Вход в систему

Введение

clsWindow — это класс, который используется в среде VB6 для работы с внешними окнами программ. С его помощью можно получить дескриптор окна или содержимое текстового поля внутри окна. Это очень удобно, и использование класса позволяет избежать работы с множеством API-функций. Этот класс был начат автором давно и изначально планировался как объе... Развернуть Свернуть
MulanPSL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/sysdzw-clswindow.git
git@api.gitlife.ru:oschina-mirror/sysdzw-clswindow.git
oschina-mirror
sysdzw-clswindow
sysdzw-clswindow
master