Что нового

с помощью каких команд можно работать с не активным окном.

podaban

Новичок
Сообщения
1
Репутация
0
Доброго времени суток. Не так давно начал разбираться с программой autoIT, возник вопрос с работой с не активными окнами на конкретном примере.Если не сложно пожалуйста помогите. Создал такой не большой скрипт
Код:
Run("notepad.exe")
While True
Send("1")
Sleep(3000)
Send("2")
Sleep(3000)
WEnd

Сразу же возникло несколько идей его использования,но потом заметил что данный скрипт не работает,в не активном окне(блокнот). Подскажите пожалуйста как можно сделать такой же не прерывающий цикл повторной отправки (1,2) в не активное окно.Если возможно то с описание используемых функций.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: Работа с не активным окном.

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Работа с не активным окном." - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Модератор форума.










{CodeWarn}
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
podaban,
Код:
$sString = 'Ищем только что запущенное окно блокнота и пишем в нем. И нам по барабану, что оно не активное или свернутое.'
$iCount = 0
HotKeySet('{Esc}', '_Exit')

$hActive = WinGetHandle('[ACTIVE]')
$iPID = Run(@WindowsDir & '\notepad.exe')
If Not $iPID Then
	MsgBox(16, 'Error', 'Run()')
	Exit
EndIf
$hWin = WinWait('[Class:Notepad]', '', 2)
If Not $hWin Then
	MsgBox(16, 'Error', 'WinWait()')
	Exit
EndIf
$iPID_win = WinGetProcess($hWin)
If $iPID_win <> $iPID Then
	ConsoleWrite(11 & @LF)
	$hWin = 0
	$aList = WinList('[Class:Notepad]')
	If Not $aList[0][0] Then
		MsgBox(16, 'Error', 'WinList()')
		Exit
	EndIf
	For $i = 1 To $aList[0][0]
		If BitAND(WinGetState($aList[$i][1]), 2) And WinGetProcess($aList[$i][1]) == $iPID Then
			$hWin = $aList[$i][1]
			ExitLoop
		EndIf
	Next
EndIf
If Not $hWin Then
	MsgBox(16, 'Error', 'Error')
	Exit
EndIf
WinActivate($hActive)
$aString = StringSplit($sString, ' ')

$iStart = TimerInit()
While 1
	$iCount += 1
	SoundPlay(@ScriptDir & '\Char.wav')
	ControlSend($hWin, '', '[CLASS:Edit; INSTANCE:1]', $iCount & Chr(46) & '{TAB}')
	Sleep(200)
	For $i = 1 To $aString[0] - 1
		SoundPlay(@ScriptDir & '\Char.wav')
		ControlSend($hWin, '', '[CLASS:Edit; INSTANCE:1]', $aString[$i] & Chr(32))
		Sleep(200)
	Next
	SoundPlay(@ScriptDir & '\Return.wav')
	ControlSend($hWin, '', '[CLASS:Edit; INSTANCE:1]', $aString[$aString[0]] & '{ENTER}')
	If TimerDiff($iStart) > 3000 Then
		If BitAND(WinGetState($hWin), 16) Then
			WinSetState($hWin, '', @SW_RESTORE)
		Else
			WinSetState($hWin, '', @SW_MINIMIZE)
		EndIf
		$iStart = TimerInit()
	EndIf
	Sleep(20)
WEnd

Func _Exit()
	If MsgBox(36, 'Question', 'Закрыть блокнот?') = 6 Then WinClose($hWin)
	Exit
EndFunc   ;==>_Exit
 

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Re: с помощью каких команд можно работать с не активным окном

madmasles
а как сделать, чтобы в это время не мигала мышка и бывает, когда параллельно я что то ввожу, то текст почему то выделяется, и замещается текстом , который я ввожу дальше..
 

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Re: с помощью каких команд можно работать с не активным окном

аум!
 
Верх