Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Реклама
Сделано руками
Сделано руками
> Исходные коды - Алексей Немиро -

Visual Basic 5.0/6.0 - Система

Все примеры / Система

Получение имен классов и всех заголовков доступных окон системы

Автор: Алексей Немиро | добавлено: 05.03.2010, 16:35 | просмотров: 865 (1+) | комментариев: 0 | рейтинг: *x0
Пример позволяет получить имена классов всех активных окон в системе.

Код

Private Declare Function apiGetClassName _ 
    Lib "user32" Alias "GetClassNameA" _ 
    (ByVal Hwnd As Long, _ 
    ByVal lpClassname As String, _ 
    ByVal nMaxCount As Long) As Long 
Private Declare Function apiGetDesktopWindow _ 
    Lib "user32" Alias "GetDesktopWindow" () As Long 
Private Declare Function apiGetWindow _ 
    Lib "user32" Alias "GetWindow" _ 
    (ByVal Hwnd As Long, ByVal wCmd As Long) As Long 
Private Declare Function apiGetWindowLong _ 
    Lib "user32" Alias "GetWindowLongA" _ 
    (ByVal Hwnd As Long, ByVal nIndex As Long) As Long 
Private Declare Function apiGetWindowText _ 
    Lib "user32" Alias "GetWindowTextA" _ 
    (ByVal Hwnd As Long, ByVal lpString As String, _ 
    ByVal aint As Long) As Long 
Private Const mcGWCHILD = 5 
Private Const mcGWHWNDNEXT = 2 
Private Const mcGWLSTYLE = (-16) 
Private Const mcWSVISIBLE = &H10000000 
Private Const mconMAXLEN = 255 

Private Function fEnumWindows() 
 Dim lngx As Long, lngLen As Long 
 Dim lngStyle As Long, strCaption As String 
 lngx = apiGetDesktopWindow() 
 'Return the first child To Desktop 
 lngx = apiGetWindow(lngx, mcGWCHILD) 
 Do While Not lngx = 0 
  strCaption = fGetCaption(lngx) 
  If Len(strCaption) > 0 Then 
   lngStyle = apiGetWindowLong(lngx, mcGWLSTYLE) 
   'enum visible windows only 
   If lngStyle And mcWSVISIBLE Then 
    Debug.Print "Class = " & fGetClassName(lngx), 
    Debug.Print "Caption = " & fGetCaption(lngx) 
   End If 
  End If 
  lngx = apiGetWindow(lngx, mcGWHWNDNEXT) 
 Loop 
End Function 

Private Function fGetClassName(Hwnd As Long) 
 Dim strBuffer As String 
 Dim intCount As Integer 
 strBuffer = String$(mconMAXLEN - 1, 0) 
 intCount = apiGetClassName(Hwnd, strBuffer, mconMAXLEN) 
 If intCount > 0 Then 
  fGetClassName = Left$(strBuffer, intCount) 
 End If 
End Function 

Private Function fGetCaption(Hwnd As Long) 
 Dim strBuffer As String 
 Dim intCount As Integer 
 strBuffer = String$(mconMAXLEN - 1, 0) 
 intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN) 
 If intCount > 0 Then 
  fGetCaption = Left$(strBuffer, intCount) 
 End If 
End Function 

Private Sub Form_Load() 
 fEnumWindows 
End Sub
Обратите внимание
Язык Visual Basic 6.0 является устаревшим. Многие примеры, размещенные на нашем сайте, были созданы еще во времена Windows 98 и могут не работать в современных операционных системах.
Если у вас возникнут какие-либо проблемы или вопросы, вы можете обратиться за помощью на наш форум.
Об авторе

Алексей Немиро

Интернет-деятель. Автор многочисленных статей и переводов статей по программированию и информационным технологиям. Работы Алексея можно найти в популярных печатных изданиях компьютерной тематики. Автор проекта Kbyte.Ru.
Сейчас Алексей занимается профессиональным Web-программированием на базе технологий .NET Framework. Иногда пишет различные программки и компоненты для Windows и Android. В свободное время занимается Web-дизайном, увлекается фото- и видеосъемкой.

См. также:
Профиль автора
Алексей Немиро
Последние комментарии (всего: 0)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.


Нет комментариев...

Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Реклама
Счетчики