Страница: 1 |
Страница: 1 |
Вопрос: Как узнать состояние окна посторонней проги?
Добавлено: 08.05.06 22:11
Автор вопроса: _ICE_ | ICQ: 354-671-214
Необходимо отловить событие сворачивания и разворачивания окна посторонней проги, причем желательно так, чтобы это происходило не в результате како-нибудь проверки (в цикле или через таймер) а в рез-те какого-нибудь события, вызывающего определенные действия моей программы. Но сгодится и первый вариант, если нет второго.
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
GreatLion
Вопросов: 2
Ответов: 27
Профиль | | #1
Добавлено: 09.05.06 08:37
Public Const SW_MINIMIZE = 6
Public Type POINTAPI
x As Long
y As Long
End Type
PublicType RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Type WINDOWPLACEMENT
Length As Long
flags As Long
showCmd As Long
ptMinPosition As POINTAPI
ptMaxPosition As POINTAPI
rcNormalPosition As RECT
End Type
Public Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Public Declare Function GetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
public function GetWinSt(hWnd as long) as integer
Dim WinEst As WINDOWPLACEMENT
Dim rtn As Long
WinEst.Length = Len(WinEst)
rtn = GetWindowPlacement(Me.hwnd, WinEst)
GetWinSt = WinEst.showCmd
end function
'Варианты возврата:
' 1 - Нормальное состояние(не min и не max)
' 2 - Свернутое
' 3 - Развернутое
Ну а далее в таймер
Option Explicit
dim ost as integer,st as integer, hWnd as long
Private Sub Timer1_Timer()
if GetWinSt(hWnd) <> ost then
st=GetWinSt(hWnd)
if st = 1 then
'события для восстановления окна
'в ost хранится прежнее состояние
end if
if st = 2 then
'события свертывания
end if
if st = 3 then
'события для увеличения
end if
ost=st
end if
End Sub
Номер ответа: 2
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #2
Добавлено: 09.05.06 10:41
http://www.allapi.net/vbexamples/vbexample.php?vbexample=DSSUBCLS&category=MISC