Enumwindows + обычные окна

Mr.Power

enumwindows отдаёт хендлы окон 1 урованяа как можно из этих окон выбрать только обычные(ну исключить десктоп виндоу и т.п)?
10 ответов

Mr.Power

Что есть для вас "обычные"? Каждое окно уникально, как маленькая вселенная Jah loves you.


Mr.Power

Antonariy,я имею в виду те окна которые со значком, с текстом и есть 3 кнопочки _ [] X.нужно както организовать отсев хендлов рабочего стола и связаные с ним, панели задач и меню пуск!


Mr.Power

getwindowlong и проверять какие опции у окна стоят


Mr.Power

> Автор: Mr.Power> Antonariy,> я имею в виду те окна которые со значком, с текстом и есть 3 кнопочки _ [] X.>> нужно както организовать отсев хендлов рабочего стола и связаные с ним, панели задач и меню пуск!Ну так в чем проблема? ХВНД получаешь, по нему ГетВиндовсЛонг читаешь стили и отсекаешь не у кого нет 3-х кнопочек и текста со значком


Mr.Power

Konst_One,а какие опции должны стоять у 'обычного' окна, если не секрет? =)


Mr.Power

Public Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)


Mr.Power

> Автор: Mr.Power> а какие опции должны стоять у 'обычного' окна, если не секрет? =)У тебя Spy++ от 6 студии есть? Скачай, очень полезная программа.


Mr.Power

spy ++ к сожу нет.ну спасибл за помощь буду пробовать =)


Mr.Power

а как сравнение организовать ?наприм вот код
Private Declare Function GetDesktopWindow Lib "user32.dll" () As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)

Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean
Dim sSave As String 
Dim bb As Boolean
Dim retval As Long 
dww = GetDesktopWindow

Dim ind As Long

pp = GetWindowLong(hwnd, -<b>16</b>)
Form1.Caption = pp
'здесь надо както сравнить
If pp <> WS_OVERLAPPEDWINDOW Then bb = True

If hwnd = dww Then bb = True
If hwnd = Form1.hwnd Then bb = True
If hwnd = <b>0</b> Then bb = True



If bb = False Then
' здесь работает только по нужным формам
End If

EnumWindowsProc = True
End Function
как чё по чём не знаю. нужно произвести сравнение


Mr.Power

'здесь надо както сравнить
bb = (pp And WS_OVERLAPPEDWINDOW) = pp
Jah loves you.