Личный хомяк Максима

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Личный хомяк Максима » Autoit » Скрипт, включающий интернет соединение, поддерживающий и выключающий


Скрипт, включающий интернет соединение, поддерживающий и выключающий

Сообщений 1 страница 3 из 3

1

давным давно у меня был сотовый модем и ночной безлимит... )))
Модем был билайновский, до сих пор у меня лежит, ZTE MF626, и управлялся он левой программой 3G Modem Manager

Изображение ZTE MF626

http://s2.uploads.ru/t/y5Tzh.jpg

Код:
#include <GUIConstants.au3>

; На случай трансляции
; 1 - время да, 2 - инет да, 3 - контроль да, 4 - первый да

;$str1110 = "Время OK, инет OK, рулим шеф!"
;$str1010 = "Время OK, инет NO, втыкаем!"
;$str0110 = "Время NO, инет OK, рубим нах!"
;$str0010 = "Время NO, инет NO, курим!"
;$str0101 = "Время NO, инет OK, преднастрой!"
;$str0001 = "Время NO, инет NO, преднастрой!"
;$str1100 = "Время OK, инет OK, нет контроля!"
;$str1000 = "Время OK, инет NO, нет контроля!"
;$str0100 = "Время NO, инет OK, нет контроля!"
;$str0000 = "Время NO, инет NO, нет контроля!"
;$Control1 = "Включить контроль"
;$Control0 = "Выключить контроль"

$str1110 = "День, сеть, работаем насяльник!"
$str1010 = "День, дом, премся на поле!"
$str0110 = "Ночь, сеть, в барак!"
$str0010 = "Ночь, дом, спим!"
$str0101 = "Ночь, сеть, настройки..."
$str0001 = "Ночь, дом, настройки..."
$str1100 = "День, сеть, что прикажете?"
$str1000 = "День, дом, что прикажете?"
$str0100 = "Ночь, сеть, что прикажете?"
$str0000 = "Ночь, дом, что прикажете?"
$Control1 = "Работать негра!"
$Control0 = "Вольно салага!"

$Over = 0
$Over1 = 0
$First = 1
$State = 0
$x = 0
$file = "timer_for_HC.log"
$last = 0

Opt("GUIOnEventMode", 1)  ; Change to OnEvent mode 
$mainwindow = GUICreate("[Погоняло]+", 400, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

GUICtrlCreateLabel("Таймер инета, для HC", 10, 2)

; Небольшое описалово в вверху справа
;GUICtrlCreateGroup ( "Рекомендую ознакомиться (для версии без HC)", 130, 2, 265, 72)
;GUICtrlCreateLabel("Работает с подключ-м по умолчанию. В парамет-", 135, 20)
;GUICtrlCreateLabel("рах подключ-я IE должно стоять всегда исполь-", 135, 35)
;GUICtrlCreateLabel("зовать принятое по умолчанию подключение", 135, 50)
GUICtrlCreateGroup ( "Рекомендую ознакомиться (для версии с HC)", 130, 2, 265, 72)
GUICtrlCreateLabel("Работает с программой Handy Cache. В НС на", 135, 20)
GUICtrlCreateLabel("закладке дозвон сделана опция дозвон/отклю-", 135, 35)
GUICtrlCreateLabel("чение по клавише Ctrl+Shift+F12, для управления", 135, 50)

; Группа таймеров - сами часы, начало, конец
GUICtrlCreateGroup ( "Таймер", 5, 15, 120, 150)


	$HH = GUICtrlCreateEdit ( "00",  10, 40, 110, 30, $ES_READONLY+$ES_CENTER)
GUICtrlSetFont (-1,16, 600)

GUICtrlCreateLabel("Подключить в Ч:М", 10, 75)

	$HH1 = GUICtrlCreateInput ( "00",  10, 90, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($HH1)

	$MM1 = GUICtrlCreateInput ( "00",  67, 90, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($MM1)

; программа, запускаемая после подключения к интернету
GUICtrlCreateLabel("- и запустить прогу", 130, 75)
$Prog = GUICtrlCreateEdit ( "Запуск программы после",  130, 97, 240, 20, $WS_HSCROLL)
$ProgButton = GUICtrlCreateButton ( "...", 375, 97, 20, 20)

GUICtrlCreateLabel("Отключить в Ч:М", 10, 120)

	$HH2 = GUICtrlCreateInput ( "00",  10, 135, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($HH2)
	$MM2 = GUICtrlCreateInput ( "00",  67, 135, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($MM2)

; программа принудительно закрываемая после отключения интернета
$Shut = GUICtrlCreateCheckbox ("- и закрыть процесс, выключить комп", 130, 120, 235, 20)
$Prog2 = GUICtrlCreateEdit ( "Запуск программы после",  130, 142, 240, 20, $WS_HSCROLL)
$ProgButton2 = GUICtrlCreateButton ( "...", 375, 142, 20, 20)

; галочка если нужно комп выключать

; небольшой сигнализатор, сообщающий должен быть инет или нет
$Inet = GUICtrlCreateLabel ( "Инициализация.........................................................", 10, 175)
GUICtrlSetFont (-1,12, 400)
$OnButton = GUICtrlCreateButton ( $Control1, 275, 170, 120, 25)

GUICtrlSetOnEvent($OnButton, "OnButton")
GUICtrlSetOnEvent($ProgButton, "ProgButton")
GUICtrlSetOnEvent($ProgButton2, "ProgButton2")

	GUICtrlSetData ( $HH1, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "HH1", ""))
	GUICtrlSetData ( $HH2, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "HH2", ""))
	GUICtrlSetData ( $MM1, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "MM1", ""))
	GUICtrlSetData ( $MM2, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "MM2", ""))
	GUICtrlSetData ( $Prog, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "Prog", ""))
	GUICtrlSetData ( $Prog2, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "Prog2", ""))
	GUICtrlSetState ( $Shut, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "Shut", ""))

GUISwitch($mainwindow)
GUISetState(@SW_SHOW)

While 1

CheckData ($HH1, 00, 23)
CheckData ($MM1, 00, 59)
CheckData ($HH2, 00, 23)
CheckData ($MM2, 00, 59)

; это для движения часиков
	Sleep(1000)  ; Idle around
	GUICtrlSetData ( $HH, @HOUR & ":" & @MIN & ":" & @SEC)

if ProcessExists("HandyCache.exe") > 0 then
	if TimeOn() = 0 and $First = 1 then
    if _GetNetworkConnect() = True  then InfoDataSet ($str0101)
    if _GetNetworkConnect() = False  then InfoDataSet ($str0001)
	Else

; в случае если время включиться и еще не время выключиться,
; датчик сигнализует чтобы инет был, проверяет его наличие и
; при необходимости стартует его и запускает программу
    Select
    Case TimeOn() = 1 and GUICtrlRead ($OnButton) = $Control0
    	if _GetNetworkConnect() = True then InfoDataSet ($str1110)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str1010)
    	if _GetNetworkConnect() = False and $State <> 1 then _InetConnect(1)
    	MonoRun(GUICtrlRead ($Prog))
    	$First = 0

; если же время вышло, то закрывается принудительно инет,
; так же закрывается прога, ждется 10 сек и комп выключается
    Case TimeOn() = 0 and $First = 0 and GUICtrlRead ($OnButton) = $Control0
    	if _GetNetworkConnect() = True  then InfoDataSet ($str0110)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str0010)
    	if _GetNetworkConnect() = True and $State <> 2 then _InetConnect(0)
    	if GUICtrlRead ($Shut) = $GUI_CHECKED then
        MonoClose(GUICtrlRead ($Prog2))
        Sleep(5000)  ; Idle around
        Shutdown (9) 
        CLOSEClicked()
    	EndIf 
    Case TimeOn() = 1 and GUICtrlRead ($OnButton) = $Control1
    	if _GetNetworkConnect() = True then InfoDataSet ($str1100)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str1000)
    Case TimeOn() = 0 and $First = 0 and GUICtrlRead ($OnButton) = $Control1
    	if _GetNetworkConnect() = True  then InfoDataSet ($str0100)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str0000)
    EndSelect 
	endif 
Else
	GUICtrlSetData ( $Inet, "Хендика нет!")
endif
WEnd

Func TimeOn()
; проверка - если время начала позже времени конца, значит это
; время вчерашнего дня, и инет в промежуток между вчера и
; сегодня будет работать (проблема перехода через 0)
	if GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) >= GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2) then
    Select
    	Case @HOUR * 60 + @MIN <= GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) and @HOUR * 60 + @MIN >= GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2)
        return 0
    	Case @HOUR * 60 + @MIN >= GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) or @HOUR * 60 + @MIN < GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2)
        return 1
    EndSelect
	else
    if @HOUR * 60 + @MIN >= GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) and @HOUR * 60 + @MIN < GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2) then
    	return 1
    else
    	return 0
    endif
	endif
EndFunc

;Func _GetNetworkConnect()
;    Local $aRet, $iResult
;    $aRet = DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0)
;    If BitAND($aRet[1], 0x2) Then Return True
;    If BitAND($aRet[0], 0x2) Then Return True
;    Return False
;EndFunc

Func _GetNetworkConnect()
	$InetStruct = DllStructCreate("int")
	$aRet = DllCall("wininet.dll", "int", "InternetGetConnectedState", "ptr", DllStructGetPtr($InetStruct), "int", 0)
	$val = DllStructGetData($InetStruct, 1)
	if $val = 81 Then Return True
    Return False
EndFunc

Func OnButton()
	Select
    Case GUICtrlRead ($OnButton) = $Control1
    	GUICtrlSetData ( $OnButton, $Control0)
    Case GUICtrlRead ($OnButton) = $Control0
    	GUICtrlSetData ( $OnButton, $Control1)
	EndSelect
EndFunc

Func ProgButton()
	$var = FileOpenDialog ( "Указать путь к программе", "", "Исполняемый файл (*.exe)", 1)
	if StringLen ($var) > 0 then GUICtrlSetData ( $Prog, $var)
EndFunc

Func ProgButton2()
	$var = FileOpenDialog ( "Указать путь к программе", "", "Исполняемый файл (*.exe)", 1)
    $var2 = StringLen ($var)
	if StringLen ($var) > 0 then GUICtrlSetData ( $Prog2, StringRight( $Var, $var2 - StringInStr( $var, "\", 0, -1 )))
EndFunc

Func _InetConnect($x)
	Select
    Case $x = 1
    	Send ("^+{F12}") 
    	$State = 1
    Case $x = 0
    	Send ("^+{F12}") 
    	$State = 2
	EndSelect
EndFunc

Func MonoRun($x)
    $var2 = StringLen ($x)
	if StringLen ($x) > 0 then
    $x = StringRight( GUICtrlRead ($Prog), $var2 - StringInStr( GUICtrlRead ($Prog), "\", 0, -1 ) )
    if ProcessExists($x) = 0 then ShellExecute('"' & GUICtrlRead ($Prog) & '"', "", "")
	endif
EndFunc

Func MonoClose($x)
	if ProcessExists($x) then ProcessClose(ProcessExists($x))
EndFunc

Func CLOSEClicked()
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "HH1", GUICtrlRead ($HH1) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "HH2", GUICtrlRead ($HH2) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "MM1", GUICtrlRead ($MM1) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "MM2", GUICtrlRead ($MM2) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "Prog", GUICtrlRead ($Prog) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "Prog2", GUICtrlRead ($Prog2) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "Shut", GUICtrlRead ($Shut) )
    Exit
EndFunc

Func InfoDataSet($x)
	WinSetTitle ( WinGetTitle( "[Погоняло]", "Таймер инета, для HC" ), "Таймер инета, для HC", "[Погоняло] - " & $x )
	GUICtrlSetData ( $Inet, $x)
	if $last <> $x then FileWrite($file, "[" & @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & "] " & $x & @CRLF)
	$last = $x
EndFunc

Func CheckData ($x, $y, $z)
	if GUICtrlRead ($x) > $z then GUICtrlSetData ($x, $y) 
	if GUICtrlRead ($x) < $y then GUICtrlSetData ($x, $z) 
EndFunc

0

2

Версия скрипта от 06.09.2009

Код:
#include <GUIConstants.au3>

; На случай трансляции
; 1 - время да, 2 - инет да, 3 - контроль да, 4 - первый да

;$str1110 = "Время OK, инет OK, рулим шеф!"
;$str1010 = "Время OK, инет NO, втыкаем!"
;$str0110 = "Время NO, инет OK, рубим нах!"
;$str0010 = "Время NO, инет NO, курим!"
;$str0101 = "Время NO, инет OK, преднастрой!"
;$str0001 = "Время NO, инет NO, преднастрой!"
;$str1100 = "Время OK, инет OK, нет контроля!"
;$str1000 = "Время OK, инет NO, нет контроля!"
;$str0100 = "Время NO, инет OK, нет контроля!"
;$str0000 = "Время NO, инет NO, нет контроля!"
;$Control1 = "Включить контроль"
;$Control0 = "Выключить контроль"

$str1110 = "День, сеть, работаем насяльник!"
$str1010 = "День, дом, премся на поле!     "
$str0110 = "Ночь, сеть, в барак!           "
$str0010 = "Ночь, дом, спим!               "
$str0101 = "Ночь, сеть, настройки...       "
$str0001 = "Ночь, дом, настройки...        "
$str1100 = "День, сеть, что прикажете?     "
$str1000 = "День, дом, что прикажете?      "
$str0100 = "Ночь, сеть, что прикажете?     "
$str0000 = "Ночь, дом, что прикажете?      "
$Control1 = "Работать негра!"
$Control0 = "Вольно салага!"

$Over = 0
$Over1 = 0
$First = 1
$State = 0
$x = 0
$i_view32 = "c:\Program Files\WinUtils\i_view32.exe"
$file = "timer_for_HC.log.htm"
$last = 0

Opt("GUIOnEventMode", 1)  ; Change to OnEvent mode 
$mainwindow = GUICreate("[Погоняло]+", 400, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

GUICtrlCreateLabel("Таймер инета, для HC", 10, 2)

; Небольшое описалово в вверху справа
;GUICtrlCreateGroup ( "Рекомендую ознакомиться (для версии без HC)", 130, 2, 265, 72)
;GUICtrlCreateLabel("Работает с подключ-м по умолчанию. В парамет-", 135, 20)
;GUICtrlCreateLabel("рах подключ-я IE должно стоять всегда исполь-", 135, 35)
;GUICtrlCreateLabel("зовать принятое по умолчанию подключение", 135, 50)
GUICtrlCreateGroup ( "Рекомендую ознакомиться (для версии с HC)", 130, 2, 265, 72)
GUICtrlCreateLabel("Работает с программой Handy Cache. В НС на", 135, 20)
GUICtrlCreateLabel("закладке дозвон сделана опция дозвон/отклю-", 135, 35)
GUICtrlCreateLabel("чение по клавише Ctrl+Shift+F12, для управления", 135, 50)

; Группа таймеров - сами часы, начало, конец
GUICtrlCreateGroup ( "Таймер", 5, 15, 120, 150)


	$HH = GUICtrlCreateEdit ( "00",  10, 40, 110, 30, $ES_READONLY+$ES_CENTER)
GUICtrlSetFont (-1,16, 600)

GUICtrlCreateLabel("Подключить в Ч:М", 10, 75)

	$HH1 = GUICtrlCreateInput ( "00",  10, 90, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($HH1)

	$MM1 = GUICtrlCreateInput ( "00",  67, 90, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($MM1)

; программа, запускаемая после подключения к интернету
GUICtrlCreateLabel("- и запустить прогу", 130, 75)
$Prog = GUICtrlCreateEdit ( "Запуск программы после",  130, 97, 240, 20, $WS_HSCROLL)
$ProgButton = GUICtrlCreateButton ( "...", 375, 97, 20, 20)

GUICtrlCreateLabel("Отключить в Ч:М", 10, 120)

	$HH2 = GUICtrlCreateInput ( "00",  10, 135, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($HH2)
	$MM2 = GUICtrlCreateInput ( "00",  67, 135, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($MM2)

; программа принудительно закрываемая после отключения интернета
$Shut = GUICtrlCreateCheckbox ("- и закрыть процесс, выключить комп", 130, 120, 235, 20)
$Prog2 = GUICtrlCreateEdit ( "Запуск программы после",  130, 142, 240, 20, $WS_HSCROLL)
$ProgButton2 = GUICtrlCreateButton ( "...", 375, 142, 20, 20)

; галочка если нужно комп выключать

; небольшой сигнализатор, сообщающий должен быть инет или нет
$Inet = GUICtrlCreateLabel ( "Инициализация.........................................................", 10, 175)
GUICtrlSetFont (-1,12, 400)
$OnButton = GUICtrlCreateButton ( $Control1, 275, 170, 120, 25)

GUICtrlSetOnEvent($OnButton, "OnButton")
GUICtrlSetOnEvent($ProgButton, "ProgButton")
GUICtrlSetOnEvent($ProgButton2, "ProgButton2")

	GUICtrlSetData ( $HH1, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "HH1", ""))
	GUICtrlSetData ( $HH2, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "HH2", ""))
	GUICtrlSetData ( $MM1, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "MM1", ""))
	GUICtrlSetData ( $MM2, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "MM2", ""))
	GUICtrlSetData ( $Prog, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "Prog", ""))
	GUICtrlSetData ( $Prog2, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "Prog2", ""))
	GUICtrlSetState ( $Shut, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "Shut", ""))

GUISwitch($mainwindow)
GUISetState(@SW_SHOW)

While 1

CheckData ($HH1, 00, 23)
CheckData ($MM1, 00, 59)
CheckData ($HH2, 00, 23)
CheckData ($MM2, 00, 59)

; это для движения часиков
	Sleep(1000)  ; Idle around
	GUICtrlSetData ( $HH, @HOUR & ":" & @MIN & ":" & @SEC)

if ProcessExists("HandyCache.exe") > 0 then
	if TimeOn() = 0 and $First = 1 then
    if _GetNetworkConnect() = True  then InfoDataSet ($str0101)
    if _GetNetworkConnect() = False  then InfoDataSet ($str0001)
	Else

; в случае если время включиться и еще не время выключиться,
; датчик сигнализует чтобы инет был, проверяет его наличие и
; при необходимости стартует его и запускает программу
    Select
    Case TimeOn() = 1 and GUICtrlRead ($OnButton) = $Control0
    	if _GetNetworkConnect() = True then InfoDataSet ($str1110)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str1010)
    	if _GetNetworkConnect() = False and $State <> 1 then _InetConnect(1)
    	MonoRun(GUICtrlRead ($Prog))
    	$First = 0

; если же время вышло, то закрывается принудительно инет,
; так же закрывается прога, ждется 10 сек и комп выключается
    Case TimeOn() = 0 and $First = 0 and GUICtrlRead ($OnButton) = $Control0
    	if _GetNetworkConnect() = True  then InfoDataSet ($str0110)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str0010)
    	if _GetNetworkConnect() = True and $State <> 2 then _InetConnect(0)
    	if GUICtrlRead ($Shut) = $GUI_CHECKED then
        AllClose(GUICtrlRead ($Prog2))
        Sleep(10000)  ; Idle around
        Shutdown (9) 
        CLOSEClicked()
    	EndIf 
    Case TimeOn() = 1 and GUICtrlRead ($OnButton) = $Control1
    	if _GetNetworkConnect() = True then InfoDataSet ($str1100)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str1000)
    Case TimeOn() = 0 and $First = 0 and GUICtrlRead ($OnButton) = $Control1
    	if _GetNetworkConnect() = True  then InfoDataSet ($str0100)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str0000)
    EndSelect 
	endif 
Else
	GUICtrlSetData ( $Inet, "Хендика нет!")
endif
WEnd

Func TimeOn()
; проверка - если время начала позже времени конца, значит это
; время вчерашнего дня, и инет в промежуток между вчера и
; сегодня будет работать (проблема перехода через 0)
	if GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) >= GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2) then
    Select
    	Case @HOUR * 60 + @MIN <= GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) and @HOUR * 60 + @MIN >= GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2)
        return 0
    	Case @HOUR * 60 + @MIN >= GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) or @HOUR * 60 + @MIN < GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2)
        return 1
    EndSelect
	else
    if @HOUR * 60 + @MIN >= GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) and @HOUR * 60 + @MIN < GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2) then
    	return 1
    else
    	return 0
    endif
	endif
EndFunc

;Func _GetNetworkConnect()
;    Local $aRet, $iResult
;    $aRet = DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0)
;    If BitAND($aRet[1], 0x2) Then Return True
;    If BitAND($aRet[0], 0x2) Then Return True
;    Return False
;EndFunc

Func _GetNetworkConnect()
	$InetStruct = DllStructCreate("int")
	$aRet = DllCall("wininet.dll", "int", "InternetGetConnectedState", "ptr", DllStructGetPtr($InetStruct), "int", 0)
	$val = DllStructGetData($InetStruct, 1)
	if $val = 81 Then Return True
    Return False
EndFunc

Func OnButton()
	Select
    Case GUICtrlRead ($OnButton) = $Control1
    	GUICtrlSetData ( $OnButton, $Control0)
    Case GUICtrlRead ($OnButton) = $Control0
    	GUICtrlSetData ( $OnButton, $Control1)
	EndSelect
EndFunc

Func ProgButton()
	$var = FileOpenDialog ( "Указать путь к программе", "", "Исполняемый файл (*.exe)", 1)
	if StringLen ($var) > 0 then GUICtrlSetData ( $Prog, $var)
EndFunc

Func ProgButton2()
	$var = FileOpenDialog ( "Указать путь к программе", "", "Исполняемый файл (*.exe)", 1)
    $var2 = StringLen ($var)
	if StringLen ($var) > 0 then GUICtrlSetData ( $Prog2, StringRight( $Var, $var2 - StringInStr( $var, "\", 0, -1 )) & ";" & GUICtrlRead ($Prog2))
EndFunc

Func _InetConnect($x)
	Select
    Case $x = 1
    	Send ("^+{F12}") 
    	$State = 1
    Case $x = 0
    	Send ("^+{F12}") 
    	$State = 2
	EndSelect
EndFunc

Func MonoRun($x)
    $var2 = StringLen ($x)
	if StringLen ($x) > 0 then
    $x = StringRight( GUICtrlRead ($Prog), $var2 - StringInStr( GUICtrlRead ($Prog), "\", 0, -1 ) )
    if ProcessExists($x) = 0 then ShellExecute('"' & GUICtrlRead ($Prog) & '"', "", "")
	endif
EndFunc

Func AllClose($x)
	m = 1
	for i = 1 to StringLen ($x)
    if StringMid( $x, i, 1) = ";" then
    	if ProcessExists(StringMid($x, m+1, i-m)) then ProcessClose(ProcessExists(StringMid( $x, m+1, i-m)))
    	m = i
    Endif
	Next
EndFunc

Func CLOSEClicked()
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "HH1", GUICtrlRead ($HH1) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "HH2", GUICtrlRead ($HH2) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "MM1", GUICtrlRead ($MM1) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "MM2", GUICtrlRead ($MM2) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "Prog", GUICtrlRead ($Prog) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "Prog2", GUICtrlRead ($Prog2) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "Shut", GUICtrlRead ($Shut) )
    Exit
EndFunc

Func InfoDataSet($x)
	WinSetTitle ( WinGetTitle( "[Погоняло]", "Таймер инета, для HC" ), "Таймер инета, для HC", "[Погоняло] - " & $x )
	GUICtrlSetData ( $Inet, $x)
	$out = "[" & @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & "] "
	$out2 = @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & "-" & @MIN & "-" & @SEC
	if $last <> $x then
    if SnapShot ("µTorrent", $out2 & ".gif", "RD", -500, -20, 400, 15) = True then
    	$out2 = ' <img src="' & $out2 & '.gif">'
    Else
    	$out2 = ' <img src="' & $out2 & '.gif">'
    Endif
    FileWrite(@ScriptDir & "\" & $file, $out & $x & $out2 & @CRLF)
	Endif
	$last = $x
EndFunc

Func CheckData ($x, $y, $z)
	if GUICtrlRead ($x) > $z then GUICtrlSetData ($x, $y) 
	if GUICtrlRead ($x) < $y then GUICtrlSetData ($x, $z) 
EndFunc

Func SnapShot ($prog, $out, $zero, $x, $y, $w, $h)
	if WinExists ($prog) then
    WinSetState ($prog, "", @SW_SHOW)
    WinSetState ($prog, "", @SW_RESTORE)
    sleep (250)
    WinActivate ($prog)
    sleep (250)
    $size2 = WinGetPos($prog, "")
;	Так как нужно вычленять определенный кусок экрана определенной программы,
;	то указывается откуда считать, с какого края окна
    if $zero = "LU" then ShellExecute($i_view32, '/capture=0 /crop=(' & $size2[0]+$x ',' $size2[1]+$y ',' $w ',' $h ') /bpp=1 /convert=' & @ScriptDir & '\' & $out)
    if $zero = "RU" then ShellExecute($i_view32, "/capture=0 /crop=(" & $size2[0]+$size2[2]+$x "," $size2[1]+$y "," $w "," $h ") /bpp=1 /convert=" & @ScriptDir & "\" & $out)
    if $zero = "LD" then ShellExecute($i_view32, "/capture=0 /crop=(" & $size2[0]+$x "," $size2[1]+$size2[3]+$y "," $w "," $h ") /bpp=1 /convert=" & @ScriptDir & "\" & $out)
    if $zero = "RD" then ShellExecute($i_view32, '/capture=0 /crop=(' & $size2[0]+$size2[2]+$x & ',' & $size2[1]+$size2[3]+$y & ',' & $w & ',' & $h & ') /bpp=1 /convert=' & @ScriptDir & '\' & $out)
    sleep (250)
    WinActivate ("[Погоняло]")
    Return True
	Else
    Return False
	Endif	
EndFunc

0

3

Версия от 06.12.2009, ведет лог со скриншотами

Код:
#include <GUIConstants.au3>

; На случай трансляции
; 1 - время да, 2 - инет да, 3 - контроль да, 4 - первый да

;$str1110 = "Время OK, инет OK, рулим шеф!"
;$str1010 = "Время OK, инет NO, втыкаем!"
;$str0110 = "Время NO, инет OK, рубим нах!"
;$str0010 = "Время NO, инет NO, курим!"
;$str0101 = "Время NO, инет OK, преднастрой!"
;$str0001 = "Время NO, инет NO, преднастрой!"
;$str1100 = "Время OK, инет OK, нет контроля!"
;$str1000 = "Время OK, инет NO, нет контроля!"
;$str0100 = "Время NO, инет OK, нет контроля!"
;$str0000 = "Время NO, инет NO, нет контроля!"
;$Control1 = "Включить контроль"
;$Control0 = "Выключить контроль"

$str1110 = "День, сеть, работаем насяльник!"
$str1010 = "День, дом, премся на поле!     "
$str0110 = "Ночь, сеть, в барак!           "
$str0010 = "Ночь, дом, спим!               "
$str0101 = "Ночь, сеть, настройки...       "
$str0001 = "Ночь, дом, настройки...        "
$str1100 = "День, сеть, что прикажете?     "
$str1000 = "День, дом, что прикажете?      "
$str0100 = "Ночь, сеть, что прикажете?     "
$str0000 = "Ночь, дом, что прикажете?      "
$Control1 = "Работать негра!"
$Control0 = "Вольно салага!"

$Over = 0
$Over1 = 0
$First = 1
$State = 0
$x = 0
$i_view32 = "c:\Program Files\WinUtils\i_view32.exe"
$file = "timer_for_HC.log.htm"
$last = 0

Opt("GUIOnEventMode", 1)  ; Change to OnEvent mode 
$mainwindow = GUICreate("[Погоняло]+", 400, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

GUICtrlCreateLabel("Таймер инета, для HC", 10, 2)

; Небольшое описалово в вверху справа
;GUICtrlCreateGroup ( "Рекомендую ознакомиться (для версии без HC)", 130, 2, 265, 72)
;GUICtrlCreateLabel("Работает с подключ-м по умолчанию. В парамет-", 135, 20)
;GUICtrlCreateLabel("рах подключ-я IE должно стоять всегда исполь-", 135, 35)
;GUICtrlCreateLabel("зовать принятое по умолчанию подключение", 135, 50)
GUICtrlCreateGroup ( "Рекомендую ознакомиться (для версии с HC)", 130, 2, 265, 72)
GUICtrlCreateLabel("Работает с программой Handy Cache. В НС на", 135, 20)
GUICtrlCreateLabel("закладке дозвон сделана опция дозвон/отклю-", 135, 35)
GUICtrlCreateLabel("чение по клавише Ctrl+Shift+F12, для управления", 135, 50)

; Группа таймеров - сами часы, начало, конец
GUICtrlCreateGroup ( "Таймер", 5, 15, 120, 150)


	$HH = GUICtrlCreateEdit ( "00:00:00",  10, 40, 110, 30, $ES_READONLY+$ES_CENTER)
GUICtrlSetFont (-1,16, 600)

GUICtrlCreateLabel("Подключить в Ч:М", 10, 75)

	$HH1 = GUICtrlCreateInput ( "00",  10, 90, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($HH1)

	$MM1 = GUICtrlCreateInput ( "00",  67, 90, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($MM1)

; программа, запускаемая после подключения к интернету
GUICtrlCreateLabel("- и запустить прогу", 130, 75)
$Prog = GUICtrlCreateEdit ( "Запуск программы после",  130, 97, 240, 20, $WS_HSCROLL)
$ProgButton = GUICtrlCreateButton ( "...", 375, 97, 20, 20)

GUICtrlCreateLabel("Отключить в Ч:М", 10, 120)

	$HH2 = GUICtrlCreateInput ( "00",  10, 135, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($HH2)
	$MM2 = GUICtrlCreateInput ( "00",  67, 135, 53, 25, $ES_CENTER+$ES_NUMBER)
    GUICtrlSetFont (-1,12, 600)
    GUICtrlCreateUpdown ($MM2)

; программа принудительно закрываемая после отключения интернета
$Shut = GUICtrlCreateCheckbox ("- и закрыть процесс, выключить комп", 130, 120, 235, 20)
$Prog2 = GUICtrlCreateEdit ( "Запуск программы после",  130, 142, 240, 20, $WS_HSCROLL)
$ProgButton2 = GUICtrlCreateButton ( "...", 375, 142, 20, 20)

; галочка если нужно комп выключать

; небольшой сигнализатор, сообщающий должен быть инет или нет
$Inet = GUICtrlCreateLabel ( "Инициализация.........................................................", 10, 175)
GUICtrlSetFont (-1,12, 400)
$OnButton = GUICtrlCreateButton ( $Control1, 275, 170, 120, 25)

GUICtrlSetOnEvent($OnButton, "OnButton")
GUICtrlSetOnEvent($ProgButton, "ProgButton")
GUICtrlSetOnEvent($ProgButton2, "ProgButton2")

	GUICtrlSetData ( $HH1, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "HH1", ""))
	GUICtrlSetData ( $HH2, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "HH2", ""))
	GUICtrlSetData ( $MM1, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "MM1", ""))
	GUICtrlSetData ( $MM2, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "MM2", ""))
	GUICtrlSetData ( $Prog, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "Prog", ""))
	GUICtrlSetData ( $Prog2, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "Prog2", ""))
	GUICtrlSetState ( $Shut, IniRead ( @ScriptDir & "\Autoit.ini", "Timers", "Shut", ""))

GUISwitch($mainwindow)
GUISetState(@SW_SHOW)

While 1

CheckData ($HH1, 00, 23)
CheckData ($MM1, 00, 59)
CheckData ($HH2, 00, 23)
CheckData ($MM2, 00, 59)

; это для движения часиков
	Sleep(1000)  ; Idle around
	GUICtrlSetData ( $HH, @HOUR & ":" & @MIN & ":" & @SEC)

if ProcessExists("HandyCache.exe") > 0 then
	if TimeOn() = 0 and $First = 1 then
    if _GetNetworkConnect() = True  then InfoDataSet ($str0101)
    if _GetNetworkConnect() = False  then InfoDataSet ($str0001)
	Else

; в случае если время включиться и еще не время выключиться,
; датчик сигнализует чтобы инет был, проверяет его наличие и
; при необходимости стартует его и запускает программу
    Select
    Case TimeOn() = 1 and GUICtrlRead ($OnButton) = $Control0
    	if _GetNetworkConnect() = True then InfoDataSet ($str1110)
    	if _GetNetworkConnect() = False then InfoDataSet ($str1010)
    	if _GetNetworkConnect() = False and $State = 0 then
        Send ("^+{F12}")
        $State = 1
    	EndIf 
    	MonoRun(GUICtrlRead ($Prog))
    	$First = 0

; если же время вышло, то закрывается принудительно инет,
; так же закрывается прога, ждется 10 сек и комп выключается
    Case TimeOn() = 0 and $First = 0 and GUICtrlRead ($OnButton) = $Control0
    	if _GetNetworkConnect() = True then InfoDataSet ($str0110)
    	if _GetNetworkConnect() = False then InfoDataSet ($str0010)
    	if _GetNetworkConnect() = True then Send ("^+{F12}")
    	Sleep(5000)  ; Idle around
    	if GUICtrlRead ($Shut) = $GUI_CHECKED then
        $out2 = @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & "-" & @MIN & "-" & @SEC
        if SnapShot ("µTorrent", $out2 & ".gif", "RD", -500, -18, 400, 11) = True then InfoDataSet (' <img src="' & $out2 & '.gif">') 
        AllClose(GUICtrlRead ($Prog2))
        Sleep(5000)  ; Idle around
        Shutdown (9) 
        CLOSEClicked()
    	EndIf 
    Case TimeOn() = 1 and GUICtrlRead ($OnButton) = $Control1
    	if _GetNetworkConnect() = True then InfoDataSet ($str1100)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str1000)
    Case TimeOn() = 0 and $First = 0 and GUICtrlRead ($OnButton) = $Control1
    	if _GetNetworkConnect() = True  then InfoDataSet ($str0100)
    	if _GetNetworkConnect() = False  then InfoDataSet ($str0000)
    EndSelect 
	endif 
Else
	GUICtrlSetData ( $Inet, "Хендика нет!")
endif
WEnd

Func TimeOn()
; проверка - если время начала позже времени конца, значит это
; время вчерашнего дня, и инет в промежуток между вчера и
; сегодня будет работать (проблема перехода через 0)
	if GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) >= GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2) then
    Select
    	Case @HOUR * 60 + @MIN <= GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) and @HOUR * 60 + @MIN >= GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2)
        return 0
    	Case @HOUR * 60 + @MIN >= GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) or @HOUR * 60 + @MIN < GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2)
        return 1
    EndSelect
	else
    if @HOUR * 60 + @MIN >= GUICtrlRead ($HH1) * 60 + GUICtrlRead ($MM1) and @HOUR * 60 + @MIN < GUICtrlRead ($HH2) * 60 + GUICtrlRead ($MM2) then
    	return 1
    else
    	return 0
    endif
	endif
EndFunc

;Func _GetNetworkConnect()
;    Local $aRet, $iResult
;    $aRet = DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0)
;    If BitAND($aRet[1], 0x2) Then Return True
;    If BitAND($aRet[0], 0x2) Then Return True
;    Return False
;EndFunc

Func _GetNetworkConnect()
	$InetStruct = DllStructCreate("int")
	$aRet = DllCall("wininet.dll", "int", "InternetGetConnectedState", "ptr", DllStructGetPtr($InetStruct), "int", 0)
	$val = DllStructGetData($InetStruct, 1)
	if $val = 81 Then Return True
	Return False
EndFunc

Func OnButton()
	Select
    Case GUICtrlRead ($OnButton) = $Control1
    	GUICtrlSetData ( $OnButton, $Control0)
    Case GUICtrlRead ($OnButton) = $Control0
    	GUICtrlSetData ( $OnButton, $Control1)
	EndSelect
EndFunc

Func ProgButton()
	$var = FileOpenDialog ( "Указать путь к программе", "", "Исполняемый файл (*.exe)", 1)
	if StringLen ($var) > 0 then GUICtrlSetData ( $Prog, $var)
EndFunc

Func ProgButton2()
	$var = FileOpenDialog ( "Указать путь к программе", "", "Исполняемый файл (*.exe)", 1)
    $var2 = StringLen ($var)
	if StringLen ($var) > 0 then GUICtrlSetData ( $Prog2, StringRight( $Var, $var2 - StringInStr( $var, "\", 0, -1 )) & ";" & GUICtrlRead ($Prog2))
EndFunc

Func MonoRun($x)
    $var2 = StringLen ($x)
	if StringLen ($x) > 0 then
    $x = StringRight( GUICtrlRead ($Prog), $var2 - StringInStr( GUICtrlRead ($Prog), "\", 0, -1 ) )
    if ProcessExists($x) = 0 then ShellExecute('"' & GUICtrlRead ($Prog) & '"', "", "")
	endif
EndFunc

Func AllClose($x)
	$m = 0
	for $i = 1 to StringLen ($x)
    if StringMid( $x, $i, 1) = ";" then
    	if ProcessExists(StringMid($x, $m + 1, $i - $m - 1)) then ProcessClose(ProcessExists(StringMid( $x, $m + 1, $i - $m - 1)))
    	$m = $i
    Endif
	Next
EndFunc

Func CLOSEClicked()
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "HH1", GUICtrlRead ($HH1) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "HH2", GUICtrlRead ($HH2) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "MM1", GUICtrlRead ($MM1) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "MM2", GUICtrlRead ($MM2) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "Prog", GUICtrlRead ($Prog) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "Prog2", GUICtrlRead ($Prog2) )
	IniWrite ( @ScriptDir & "\Autoit.ini", "Timers", "Shut", GUICtrlRead ($Shut) )
    Exit
EndFunc

Func InfoDataSet($x)
	WinSetTitle ( WinGetTitle( "[Погоняло]", "Таймер инета, для HC" ), "Таймер инета, для HC", "[Погоняло] - " & $x )
	GUICtrlSetData ( $Inet, $x)
	$out = "[" & @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & "] "
	if $last <> $x then
    FileWrite(@ScriptDir & "\" & $file, $out & $x & @CRLF)
	Endif
	$last = $x
EndFunc

Func CheckData ($x, $y, $z)
	if GUICtrlRead ($x) > $z then GUICtrlSetData ($x, $y) 
	if GUICtrlRead ($x) < $y then GUICtrlSetData ($x, $z) 
EndFunc

Func SnapShot ($prog, $out, $zero, $x, $y, $w, $h)
	if WinExists ($prog) then
    WinSetState ($prog, "", @SW_SHOW)
    WinSetState ($prog, "", @SW_RESTORE)
    sleep (250)
    WinActivate ($prog)
    sleep (250)
    $size2 = WinGetPos($prog, "")
;	Так как нужно вычленять определенный кусок экрана определенной программы,
;	то указывается откуда считать, с какого края окна
    if $zero = "LU" then ShellExecute($i_view32, '/capture=0 /crop=(' & $size2[0]+$x ',' $size2[1]+$y ',' $w ',' $h ') /bpp=1 /convert=' & @ScriptDir & '\' & $out)
    if $zero = "RU" then ShellExecute($i_view32, "/capture=0 /crop=(" & $size2[0]+$size2[2]+$x "," $size2[1]+$y "," $w "," $h ") /bpp=1 /convert=" & @ScriptDir & "\" & $out)
    if $zero = "LD" then ShellExecute($i_view32, "/capture=0 /crop=(" & $size2[0]+$x "," $size2[1]+$size2[3]+$y "," $w "," $h ") /bpp=1 /convert=" & @ScriptDir & "\" & $out)
    if $zero = "RD" then ShellExecute($i_view32, '/capture=0 /crop=(' & $size2[0]+$size2[2]+$x & ',' & $size2[1]+$size2[3]+$y & ',' & $w & ',' & $h & ') /bpp=1 /convert=' & @ScriptDir & '\' & $out)
    sleep (250)
    WinActivate ("[Погоняло]")
    Return True
	Else
    Return False
	Endif	
EndFunc

0


Вы здесь » Личный хомяк Максима » Autoit » Скрипт, включающий интернет соединение, поддерживающий и выключающий