Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Поиск окошка в системе Добавлено: 14.07.03 14:05  

Автор вопроса:  oleg-ff
У меня такой вопрос. Как сделать так чтобы моя программа могла периодически просматривать окошки в системе и находить нужное

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 .:: St!X ::.



ICQ: 339888425 

Вопросов: 13
Ответов: 51
 Web-сайт: www.ks-brand.ru
 Профиль | | #1
Добавлено: 14.07.03 15:32

В каком либо цикле (напр. Do... Loop) вызываем функцию FindWindow (вот прототип: Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long). Она вернет дескриптор на окно и далее делай с ним что хочешь.

Например его можно скрыть десктоп Public Sub Desktop(ByVal Visible As Boolean)
Dim hWnd As Long
hWnd = FindWindow("Progman", "Program Manager")
If Visible Then
    ShowWindow hWnd, SW_SHOW
Else
    ShowWindow hWnd, SW_HIDE
End If
EnableWindow hWnd, Visible
End Sub

Вот прототипы остальных функций и констант:

Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long) As Long
Private Const SW_HIDE = 0
Private Const SW_SHOW = 5

Ответить

Номер ответа: 2
Автор ответа:
 oleg-ff



Вопросов: 13
Ответов: 4
 Профиль | | #2 Добавлено: 15.07.03 11:57
Тогда встает следующий вопрос. В функции FindWindow  второй параметр lpWindowName - указывает на точный заогловок окна, а что делать скажем, если мне надо отлавливать окно у которого лишь часть заголовка не меняется а остальная меняется от случая к случаю. Как это можно реализовать

Ответить

Номер ответа: 3
Автор ответа:
 Banzoy



Вопросов: 5
Ответов: 8
 Профиль | | #3 Добавлено: 15.07.03 13:40

в коде модуля пишешь:

 

    Declare Function GetTopWindow Lib "User32" (ByVal hWnd As Long) As Long
    Declare Function GetWindowText Lib "User32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare Function GetWindow Lib "User32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
    Declare Function IsWindowVisible Lib "User32" (ByVal hWnd As Long) As Long
    Declare Function IsWindow Lib "User32" (ByVal hWnd As Long) As Long

Public Function GetWindowHandle(txt As String) As Long
'поиск окна по контексту "txt"
On Error Resume Next
Dim WindowText As String, lt As Long
Handle = GetTopWindow(0)
If Handle > 0 Then
Do While Handle <> 0
WindowText = Space(256): lt = GetWindowText(Handle, WindowText, 255)
WindowText = Left$(WindowText, lt)
If IsWindowVisible(Handle) <> 0 And IsWindow(Handle) <> 0 And InStr(1, WindowText, txt, 1) > 0 Then Exit Do
Handle = GetWindow(Handle, 2)
Loop
End If
GetWindowHandle = Handle
End Function

 

у меня работает... Удачи!!!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам