Что нового

[Автоматизация] Скрипт демотиватора - как бы оптимизировать количество запоминаемых окон?

akoulev

Новичок
Сообщения
166
Репутация
2
Чтобы программисту не отвлекаться на "а вот гляну-ка я ещё и этот сайтик, - а уж потом допишу программу", был создан скрипт-надсмотрщик :'( (всем, кстати, рекомендую! :smile: ); выход из него - по Shift+Escape:
Код:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         myName

 Script Function: демотиватор

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

HotKeySet("+{ESC}", "Terminate"); Shift+Escape
MsgBox(0+4096, "Start", "                            Поехали!" & @LF & @LF & "Делу - время; потехе - остальное время!!!",2.4)
	While 1
			;MsgBox(0+4096, "Start", "Поехали!",1)
					If ProcessExists ("iexplore.exe") Then
								ProcessClose("iexplore.exe")
								MsgBox ( 0 , "Arbeit macht frei" , "Солнце светит, негры пашут, вот такая доля наша (с) Э.Картман." , 2.4 )
;«Arbeit macht frei» — фраза на немецком языке, звучит как «А?рбайт махт фрай»,								
							Sleep (7777)
					Else
							Sleep (7777)
					EndIf
	WEnd
;Exit











#cs ----------------------------------------------------------------------------

 Func Terminate(); прерываем выполнение скрипта.

#ce ----------------------------------------------------------------------------



Func Terminate()
		MsgBox(0+4096, "Не балуйте тут без меня!" , "" & @LF & @LF & "Делу - время; потехе - остальное время!!!" & @LF & @LF & "", 2);
	Exit 0
EndFunc


Скрипт сурово пресекает раз в ~8 сек (величина подобрана эмпирически, что бы это ни значило :smile: ) попытку запустить IE.
Суть вопроса: всё это прекрасно работает (поскольку не может не работать :smile: ), но есть одна проблемка. Когда мы пресекаем пресекателя (Shift+Escape), то IE, при его запуске, предлагает загрузить бывшие открытыми прежде окна (скажем, было их 5 - 5 и загрузится), - что есть правильно и является весьма приятным сервисом. Менее приятно то, что если вы, скажем 10 раз пробовали запустить IE (надеясь на снисходительность неумолимого скрипта ;D), то окон откроется 15 (5 бывших + 10 "попыточных"). А вот как бы этот аспект разгрести - у меня мыслей как-то уже и нет.
Ай нид хелп, плиз! :smile:
 
Автор
A

akoulev

Новичок
Сообщения
166
Репутация
2
Народ, ау! Неужели это настолько сложно: сохранять информацию о предыдущих запусках IE8, - не сохраняя, при этом, информации о новых запусках этого же самого IE8?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
Используй WinClose() вместо ProcessClose(). В этом случае получится штатное закрытие IE и сессии сохраняться не будут.
 
Автор
A

akoulev

Новичок
Сообщения
166
Репутация
2
Вот, что получилось:
Код:
#cs ----------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         akoulev

 Script Function:
	Template AutoIt script.
	Ver 1.001 - Соска для программиста
	Ver 1.002 - Выход по ""CTRL+ALT+Escape"".

#ce ----------------------------------------------------------------------

; Script Start - Add your code below here
#include <Process.au3>
HotKeySet("^!{ESC}", "Terminate"); "CTRL+ALT+Escape".
Opt("TrayIconDebug", 1); Отладко-режим - в трее смотрим: в какой сроке "зависло"?
;HotKeySet("!+{ESC}", "Terminate"); Shift+Alt+Escape
;HotKeySet("+{ESC}", "Terminate"); Shift+Escape
;HotKeySet("{ESC}", "Terminate"); Escape
CHEK()
MsgBox(0+4096, "Start", "                            Поехали!" & @LF & @LF & "Делу - время; потехе - остальное время!!!" & @LF & @LF & "          Выход по ""CTRL+ALT+Escape""." & @LF & @LF & "  ",3.4)
	While 1
	;MsgBox(0+4096, "Start", "Поехали!",1)
		If ProcessExists ("iexplore.exe") Then
														$Zikl=0
					While 1;
						If $Zikl=0 Then
	MsgBox ( 0 , "Arbeit macht frei" , "Солнце светит, негры пашут, вот такая доля наша (с) Э.Картман." , 2.4 )										Else										;них 										EndIf
		WinClose("[CLASS:IEFrame]", "");IEFrame
		If Not ProcessExists ("iexplore.exe") Then ExitLoop
		$Zikl=1
		WEnd
		$Zikl=0
;«Arbeit macht frei» — фраза на немецком языке, звучит как «А?рбайт махт фрай»,				Sleep (7777)
		Else
		Sleep (7777)
		EndIf
	WEnd
	Opt("TrayIconDebug", 0); Отладко-режим - выключение перед выходом.
	EnvUpdate ( )
	Exit










#cs ----------------------------------------------------------------------

 Func CHEK(); проверка: запущен ли IE?
 Func Terminate(); прерываем выполнение скрипта.

#ce ----------------------------------------------------------------------



Func CHEK(); проверка: запущен ли IE?
	If ProcessExists("IExplore.exe") then
	;нихрена;	
		Sleep(111)
	Else
		Sleep(111)
		;MsgBox(0+4096, "555", "А IE-то уже и не запущен!" & @LF & @LF & "Ума не приложу, куда это оно мого подеваЦЦо!!!",2)
		;добавить проверку наличия окна - если ответят в форуме
		;Exit
	EndIf
EndFunc



Func Terminate()
		MsgBox(0+4096, "Не балуйте тут без меня!" , "" & @LF & @LF & "Делу - время; потехе - остальное время!!!" & @LF & @LF & "" & @LF & "", 2.4);
	Exit 0
EndFunc



#cs ----------------------------------------------------------------------
http://autoit-script.ru/index.php/topic,449.msg3068.html#msg3068
_WinAPI_EnumProcessWindows
_WinAPI_GetModuleFileNameEx

#ce ----------------------------------------------------------------------
; выход из него - по "CTRL+ALT+Escape".
:
 
Верх