Основы офисного программирования и язык VBA


Работа с окнами - часть 3


Является функцией, парной к функции GetWindowText, но, поскольку здесь строка заголовка передается функции, то функция устроена проще, имеет два, а не три параметра и передавать ей можно константу, что и будет продемонстрировано в нашем примере.

Приведем теперь процедуру, в которой поочередно запускаются описанные здесь функции (В примерах используются документы: DocOne6, DocTwo6

Public Sub WorkWithWindows() Dim Res As Long 'Результат выполнения функции Dim HandleAW As Long 'Описатель активного окна Dim RectAW As RECT 'Структура, задающая прямоугольник окна Dim TextAW As String 'Заголовок активного окна Dim LenTextAW As Long 'Длина строки Dim HandleW As Long 'Описатель окна Dim TextW As String 'Заголовок окна

'Получить описатель активного окна HandleAW = GetActiveWindow Debug.Print HandleAW

'Получить прямоугольник, задающий положение активного окна Res = GetWindowRect(HandleAW, RectAW) Debug.Print Res If Res > 0 Then 'OK Debug.Print "Размеры окна: Left = ", RectAW.Left, " Top = ", _ RectAW.Top, " Right = ", RectAW.Right, " Bottom = ", RectAW.Bottom Else: MsgBox ("Не удалось получить размеры активного окна") End If 'Получить заголовок окна 'Предварительная набивка результирующей строки нулевыми символами TextAW = VBA.String$(255, vbNullChar) LenTextAW = VBA.Len(TextAW) Res = GetWindowText(HandleAW, TextAW, LenTextAW) Debug.Print Res If Res > 0 Then 'OK TextAW = VBA.Left(TextAW, VBA.InStr(1, TextAW, vbNullChar) - 1) Debug.Print TextAW Else: MsgBox ("Не удалось получить заголовок активного окна") End If

'Поиск окна документа по его заголовку 'Возвращается описатель окна TextW = "DocOne6 - Microsoft Word" HandleW = FindWindow(vbNullString, TextW) If HandleW > 0 Then 'OK Debug.Print HandleW Else: MsgBox ("Не удалось найти окно с указанным заголовком" _ & vbCrLf & TextW) End If

'Минимизация и нормализация окна документа Res = ShowWindow(HandleW, SW_SHOWMINIMIZED) If Res > 0 Then Debug.Print "Окно минимизировано" Res = ShowWindow(HandleW, SW_SHOWNORMAL) If Res > 0 Then Debug.Print "Окно в нормальном состоянии"




Начало  Назад  Вперед



Книжный магазин