Что нового

[Окна, Диалоги] Место нахождение окна

vedmag_85

Новичок
Сообщения
6
Репутация
0
Версия AutoIt: 3.

Описание: День добрый.
Не подскажете как в Autoit отслеживать место положение одного из окна находящиеся на экране.
Вот например у меня в скрипте окно открывается в определенном месте и с определенными размерами, как сделать так что бы при изменении размеров и место нахождения окна оно или возвращалось на прежнее место или просто пере запускала программу.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
vedmag_85
Вот немного изменил исходный скрипт под русский Блокнот:
Код:
$sProcName = "notepad.exe" ;Имя вашего процесса
$Sec = "Безымянный - Блокнот" ; Имя вашего окна
$Prog = 'notepad.exe' ; путь к программе

$PIDs = ProcessList($sProcName)
if $PIDs[0][0] > 0 Then 
  $PIDtokill = ProcessExists($sProcName)
  while $PIDtokill >0 
	 ProcessClose($PIDtokill)
	 Sleep(100)
	 $PIDtokill = ProcessExists($sProcName)	 
  WEnd	
EndIf
   
While 1
    
	$PIDs = ProcessList($sProcName)
	if $PIDs[0][0] > 1 Then 
	  $PIDtokill = ProcessExists($sProcName)
	  while $PIDtokill >0 
		 ProcessClose($PIDtokill)
		 Sleep(100)
		 $PIDtokill = ProcessExists($sProcName)
	  WEnd	
  EndIf
  
   if not ProcessExists($sProcName) Then
	  Run($Prog)
	    WinSetState($Sec,'',@SW_SHOWDEFAULT)
	    WinWait($Sec,'',30)
	    WinMove($Sec,'',0, 488,850,250)		
   EndIf
   Sleep(100)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;   
   While 1
	Sleep(100)	
    $size = WinGetPos($Sec)
		If @error  = 1 Then ExitLoop
	   If $size[0]<>0 Or $size[1]<>488 Or $size[2]<>850 Then
		   WinMove($Sec,'',0, 488,850,250)
		   WinSetState($Sec,'',@SW_SHOWDEFAULT)
		   WinActivate($Sec)
	   EndIf	   
   WEnd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;      
	If WinWaitClose($Sec) Then
		$PIDtokill = ProcessExists($sProcName)
		ProcessClose($PIDtokill)
	 Sleep(100)	 
    EndIf	 

WEnd
 
Верх