Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Зная кусок заголовка окна, получить его Hwnd Добавлено: 13.03.04 00:47  

Автор вопроса:  Domod

Знаю кусок текста в заголовке окна, а как получить Хэндл того самого окна, например Окно в винампе имеет заголовок: 1. песня1 - Winamp

Как найти hwnd Winamp'a зная, только кусок текста, тоесть, только то что там есть слово Winamp

Ответить

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

Номер ответа: 1
Автор ответа:
 DenB



Вопросов: 1
Ответов: 4
 Профиль | | #1 Добавлено: 13.03.04 01:58

1) Используй WinApi - EnumWindows.

2) В CallBack-функции используешь GetWindowText и получаешь полный заголовок окна, возврашенного перичислителем(EnumWindows)

3) Используя InStr сравниваешь заголовок из п.2 со своим шаблоном. Если это оно, сохраняешь его hWnd.

 

В принципе все не так сложно. Я в свое время заморачивался этим, но не могу найти исходник.

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 13.03.04 09:37

Вот пример с какого-то сайта, не помню, ну в общем отображение сказанного выше...

Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lpData As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long

 

Private sPattern As String, hFind As Long

 

Private Function EnumWinProc(ByVal hWnd As Long, ByVal lpData As Long) As Long
Dim lngWinText As Long, sBuffer As String

 

If GetParent(hWnd) = &H0 Then
sBuffer = String$(&HFF, &H0)

 

If GetWindowText(hWnd, sBuffer, &HFF) Then
sBuffer = Left(sBuffer, InStr(1&, sBuffer, vbNullChar) - 1&)
If lpData = &H0 Then sBuffer = LCase(sBuffer)

 

If (sBuffer Like sPattern) = True Then
hFind = hWnd
EnumWinProc = False: Exit Function
End If
End If
End If

 

EnumWinProc = True
End Function

 

Public Function FindWindowWild(sWild As String, Optional bMatchCase As Boolean = True) As Long
sPattern = sWild
hFind = &H0

 

If Not bMatchCase Then sPattern = LCase(sPattern)

 

Call EnumWindows(AddressOf EnumWinProc, bMatchCase)
FindWindowWild = hFind
End Function

Ответить

Страница: 1 |

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



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