Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Как узнать состояние окна посторонней проги?
     
    
Добавлено: 08.05.06 22:11
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     _ICE_ | ICQ: 354-671-214
 _ICE_ | ICQ: 354-671-214 
      
       
  
Необходимо отловить событие сворачивания и разворачивания окна посторонней проги, причем желательно так, чтобы это происходило не в результате како-нибудь проверки (в цикле или через таймер) а в рез-те какого-нибудь события, вызывающего определенные действия моей программы. Но сгодится и первый вариант, если нет второго.
 
    
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 2
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: GreatLion
 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
 Comanche





Вопросов: 87
Ответов: 459
      
 Профиль |  | #2
       
Добавлено:  09.05.06 10:41
       
    
       
  
http://www.allapi.net/vbexamples/vbexample.php?vbexample=DSSUBCLS&category=MISC