Login automático y alargar inactividad de sesion IExplorer
Publicado: 20 Feb 2010, 18:57
Esto permite con IE, autologearse $Url $User y $Pwd creditos a Funkey
Otro para los bancos o para empresas grandes, cuando te echa fuera del explorador por inactividad en el uso... para mantenerlo sin estar en el créditos para Monter Bajar fichero:
Código: Seleccionar todo
#include <IE.au3>
$Url = 'http://www.autoitscript.com/forum/index.php?app=core&module=global§ion=login'
$User = 'user'
$Pwd = 'pwd'
$test = _IEAutoLogin($Url, $User, $Pwd)
Func _IEAutoLogin($sUrl, $sUsername, $sPwd)
;funkey 09.09.09
$oIE = _IECreate($sUrl)
_IEErrorNotify(False)
_IEErrorHandlerRegister()
$oForms = _IEFormGetCollection($oIE)
If @error Then
Return SetError(1, _IEErrorHandlerDeRegister(), $oIE) ;'no forms --> no login'
Else
$Index = 0
For $oForm In $oForms
$oFormElements = _IEFormElementGetCollection($oForm)
If IsObj($oFormElements) Then
$IndexElement = 0
For $oElement In $oFormElements
If $oElement.Type = 'password' Then
$oPwd = _IEFormElementGetObjByName($oForm, $oElement.Name)
_IEFormElementSetValue($oPwd, $sPwd)
For $i = $IndexElement - 1 To 0 Step -1
$oUser = _IEFormElementGetCollection($oForm, $i)
If $oUser.Type = 'text' Then
_IEFormElementSetValue($oUser, $sUsername)
ExitLoop
EndIf
Next
If $oForm.action <> "0" And Not StringInStr($oForm.action, '.php') Then ;submit
_IEFormSubmit($oForm, 0)
_IELoadWait($oIE)
Else ;click
For $i = $IndexElement + 1 To $IndexElement + 10 ;check the next 10 elements
$oButton = _IEFormElementGetCollection($oForm, $i)
If $oButton.Type = 'submit' Then
_IEAction($oButton, "click")
ExitLoop
EndIf
Next
EndIf
Return SetExtended(_IEErrorHandlerDeRegister(), $oIE)
EndIf
$IndexElement += 1
Next
EndIf
$Index += 1
Next
EndIf
Return SetError(2, _IEErrorHandlerDeRegister(), $oIE) ;no password-field found
EndFunc ;==>_IEAutoLogin
Código: Seleccionar todo
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=Beta
#AutoIt3Wrapper_Icon=rob\bpm-ico\LogOnOff.ico
#AutoIt3Wrapper_Outfile=G:\util\LogOnOff.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=http://monter.FM/
#AutoIt3Wrapper_Res_Description=Keeps alive user session, prevents from suspension. After longer inactivity, script performs auto-logoff.
#AutoIt3Wrapper_Res_Fileversion=1.2.0.0
#AutoIt3Wrapper_Res_LegalCopyright=monter.FM
#AutoIt3Wrapper_Res_Language=1045
#AutoIt3Wrapper_Res_Field=Release date|27.01.2010
#AutoIt3Wrapper_Res_Field=AutoIt3 ver.|%AutoItVer%
#AutoIt3Wrapper_Res_Icon_Add=rob\bpm-ico\LogOnOff1.ico
#AutoIt3Wrapper_Res_Icon_Add=rob\bpm-ico\LogOnOff2.ico
#AutoIt3Wrapper_Res_File_Add=LogOnOff.english.lng
#AutoIt3Wrapper_Res_File_Add=LogOnOff.polski.lng
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Date.au3>
#include <File.au3>
#include <Timers.au3>
#include <Misc.au3>
#include <Process.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <UpdownConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include 'AU3\GUIOnChangeRegister.au3' ;Mat's UDF
$fnScript = 'LogOnOff' ;full script name
$pScript = StringSplit(@ScriptName, '.')
$pScript = $pScript[1]
$script = $pScript
If $script <> 'LogOnOff' Then $script = 'LogOnOff' ;proper script name (if user changed it)
FileInstall('.\rob\bpm-ico\LogOnOff.ico', @TempDir & '\', 1)
FileInstall('.\rob\bpm-ico\LogOnOff1.ico', @TempDir & '\', 1)
FileInstall('.\rob\bpm-ico\LogOnOff2.ico', @TempDir & '\', 1)
$icon = @TempDir & '\' & $script & '.ico'
$icon1 = @TempDir & '\' & $script & '1.ico'
$icon2 = @TempDir & '\' & $script & '2.ico'
TraySetIcon($icon)
FileInfo()
$title = $fnScript & ' ' & $sVer
TraySetToolTip($title)
OnAutoItExitRegister('OnExit')
Global $serverURL, $counTimes, $update, $updState, $updCheck, $lng, $currFileLang, $langFiList, $lngList, $rcntUsed, $cboLang, $intval, $loops, $timremnS, $lOffDly, $monOff, $logoff, $paused, $loop, $lOffTime
Global $l_grpSetts, $l_tipIntval, $l_tipLoops, $l_tipLogofDly, $l_cbxMonOff, $l_tipMonOff, $l_cboLogoff, $l_tipLogoff, $l_lblIntval, $l_lblLoops, $l_lblLogofDly, $l_btnSave, $l_btnSaved, $l_btnDefRestore, $l_btnDefaults, $l_btnPausWork0, $l_btnPausWork1, $l_btnSuspend, $l_lblAutOff, $l_lblAutOffSus, $l_btnLogoff, $l_btnUninst, $l_tipLang, $l_tipLangEdit, $l_tipAbout, $l_trSetts, $l_trLogoff, $l_trSuspend, $l_trPause0, $l_trPause1, $l_trPaused ;, $l_cbxNoLogoff, $l_tipNoLogoff, $l_cbxLogoffForce, $l_tipLogoffForce
Global $l_trAbout, $l_trExit, $l_pausQry, $l_pausMsg0, $l_pausMsg1, $l_msgLogoff1, $l_msgLogoffNo, $l_msgLogoff2, $l_msgLogoffBrk, $l_msgLogoffEsc, $l_msgUpdateCheck, $l_msgUpdateError, $l_msgUpdateDownload, $l_msgUpdateFailed, $l_msgUpdateOk, $l_msgAdmLock, $l_msgDisclaimer, $l_msgFileMoving, $l_msgExitQuery, $l_msgUninstall, $l_msgUninstallProcess, $l_msgUninstallDelOthLangs, $l_msgWarning, $l_msgError, $l_lblAboutTitle, $l_lblAboutTxt, $l_lblBuilt, $l_lblWww, $l_lblWwwApp, $l_lblWwwForum
$ini = @ScriptDir & '\' & $script & '.ini'
If FileExists($ini) And $CmdLine[0] = 0 Then
If _Singleton(@ScriptName, 1) = 0 Then
$runAlr = 1
WinSetState($script, '', @SW_SHOW)
WinActivate($script)
Exit
EndIf
EndIf
$dirMonter = @AppDataDir & '\monter.FM' ;directory for monter.FM's apps
$fileAutoUpd = @TempDir & '\' & $script & '.upd' ;file checking upgrade from monter's server
$fileBat = @TempDir & '\' & $script & '.bat' ;temporary file for deleting old exe and launching new version script
$esc = 0
$brk = 0
$sex = 0
$syn = 0
$synTm = 0
$letSuspend = 0
If FileExists($fileAutoUpd) Then FileDelete($fileAutoUpd)
If FileExists($fileBat) Then FileDelete($fileBat)
$version = IniRead($ini, 'Main', 'version', $sVer)
$currFileLang = @ScriptDir & '\' & IniRead($ini, 'Main', 'currentLangFile', $script & '.english.lng')
If Not FileExists($currFileLang) Then $currFileLang = ''
LangCheck()
LangRead()
LangRefresh()
If $rcntUsed = '' Or ($CmdLine[0] > 0 And $CmdLine[1] = '-i') Then Install()
If ($CmdLine[0] > 0 And $CmdLine[1] = '-u') Then
FileCreateShortcut($dirMonter & '\' & @ScriptName, @ProgramsDir & '\monter.FM\' & $fnScript & '.lnk', $dirMonter, '', $title, $dirMonter & '\' & @ScriptName, '', 0)
FileCreateShortcut($dirMonter & '\' & @ScriptName, @StartupDir & '\' & $fnScript & '.lnk', $dirMonter, '-h', $title, $dirMonter & '\' & @ScriptName, '', 0)
EndIf
If $sVer > $version Then ;below converting older ini sections to the newest
IniWrite($ini, 'Main', 'version', $sVer)
IniWrite($ini, 'Main', 'logoff', IniRead($ini, 'Main', 'logoffForced', 1) + 1)
If IniRead($ini, 'Main', 'noLogoff', '') = 1 Then IniWrite($ini, 'Main', 'logoff', 0)
IniDelete($ini, 'Main', 'logoffForced')
IniDelete($ini, 'Main', 'noLogoff')
EndIf
IniCheck()
IniReadF()
$kaCzki = '' ;useful for polish translation only
$kaCzke = ''
If (StringInStr('0415', @OSLang) And Not FileExists(@ScriptDir & '\' & $script & '.polski.lng')) Or $lng = 'PL' Then
$kaCzki = 'ka'
$kaCzke = 'ka'
If $sex = 1 Then
$kaCzki = 'czki'
$kaCzke = 'czkę'
EndIf
EndIf
UpdateCheck()
FileInstall('.\rob\monter.FM.gif', @TempDir & '\', 1)
$monterGif = @TempDir & '\monter.FM.gif'
Const $wi = 323
Const $he = 240
$loffCurr = StringSplit($l_cboLogoff, '|')
For $i = 2 To 0 Step -1
If $logoff = $i Then $logoffCurr = $loffCurr[Abs($i - 3)]
Next
#Region ### START Koda GUI section ### Form=LogOnOff-mainSetts.kxf
$frmMain = GUICreate($title, $wi, $he, -1, -1)
GUISetIcon($icon)
$grpSetts = GUICtrlCreateGroup($l_grpSetts, 3, 0, 244, 189)
$inpIntval = GUICtrlCreateInput($intval, 202, 17, 41, 21, BitOR($ES_RIGHT, $ES_NUMBER))
GUICtrlSetTip(-1, $l_tipIntval)
GUICtrlSetLimit(-1, 3)
$udIntval = GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 999, 4)
GUICtrlSetTip(-1, $l_tipIntval)
$inpLoops = GUICtrlCreateInput($loops, 208, 53, 35, 21, BitOR($ES_RIGHT, $ES_NUMBER))
GUICtrlSetTip(-1, $l_tipLoops)
GUICtrlSetLimit(-1, 2)
$udLoops = GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 99, 1)
GUICtrlSetTip(-1, $l_tipLoops)
$inpLogofDly = GUICtrlCreateInput($lOffDly, 208, 92, 35, 21, BitOR($ES_RIGHT, $ES_NUMBER))
GUICtrlSetTip(-1, $l_tipLogofDly)
GUICtrlSetLimit(-1, 2)
$udLogofDly = GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 99, 2)
GUICtrlSetTip(-1, $l_tipLogofDly)
For $c = $inpIntval To $inpLogofDly Step 2
GUICtrlOnChangeRegister($c, 'LogoffTimeRefresh', $c) ;refreshing remaining time to automatic logoff
Next
$cbxMonOff = GUICtrlCreateCheckbox($l_cbxMonOff & ' ', 7, 125, 220, 17, BitOR($BS_CHECKBOX, $BS_RIGHTBUTTON, $BS_RIGHT, $WS_TABSTOP))
$tipMonOff = GUICtrlSetTip(-1, $l_tipMonOff)
If $monOff = 1 Then
GUICtrlSetState($cbxMonOff, $GUI_CHECKED)
Else
GUICtrlSetState($cbxMonOff, $GUI_UNCHECKED)
EndIf
$cboLogoff = GUICtrlCreateCombo('', 84, 152, 159, 21)
GUICtrlSetData(-1, $l_cboLogoff, $logoffCurr)
GUICtrlSetTip(-1, StringFormat($l_tipLogoff))
$lblIntval = GUICtrlCreateLabel($l_lblIntval, 4, 20, 195, 17, $SS_RIGHT)
GUICtrlSetTip(-1, $l_tipIntval)
$lblLoops = GUICtrlCreateLabel($l_lblLoops, 4, 56, 195, 17, $SS_RIGHT)
GUICtrlSetTip(-1, $l_tipLoops)
$lblLogofDly = GUICtrlCreateLabel(StringFormat($l_lblLogofDly), 4, 88, 195, 35, $SS_RIGHT)
GUICtrlSetTip(-1, $l_tipLogofDly)
If $logoff = 0 Then
GUICtrlSetState($lblLogofDly, $GUI_DISABLE)
GUICtrlSetState($inpLogofDly, $GUI_DISABLE)
GUICtrlSetState($udLogofDly, $GUI_DISABLE)
EndIf
AdlibRegister('LogoffTimeShow')
GUICtrlCreateGroup('', -99, -99, 1, 1)
$btnSave = GUICtrlCreateButton($l_btnSave, 252, 5, 67, 27, BitOR($BS_DEFPUSHBUTTON, $BS_MULTILINE, $WS_GROUP))
SaveIniCompare()
$btnDefRestore = GUICtrlCreateButton($l_btnDefRestore, 252, 36, 67, 35, BitOR($BS_MULTILINE, $WS_GROUP))
DefaultsCompare()
$btnPausWork = GUICtrlCreateButton($l_btnPausWork0, 252, 75, 67, 35, BitOR($BS_MULTILINE, $WS_GROUP))
$btnSuspend = GUICtrlCreateButton($l_btnSuspend, 252, 114, 67, 35, BitOR($BS_MULTILINE, $WS_GROUP))
$lblAutOff = GUICtrlCreateLabel('', 4, 192, 180, 43, BitOR($SS_CENTER, $SS_SUNKEN))
GUICtrlSetBkColor(-1, 0xFFFFE0)
GUICtrlSetColor(-1, 0x000000)
$btnLogoff = GUICtrlCreateButton($l_btnLogoff, 188, 192, 59, 43, BitOR($BS_MULTILINE, $WS_GROUP))
$btnUninst = GUICtrlCreateButton($l_btnUninst, 252, 165, 67, 25)
$cboLang = GUICtrlCreateCombo('', 252, 194, 45, 25, BitOR($CBS_DROPDOWN, $CBS_SORT, $CBS_UPPERCASE))
GUICtrlSetData(-1, $lngList, $lng)
GUICtrlSetTip(-1, $l_tipLang)
$lblLangEdit = GUICtrlCreateLabel(' E ', 301, 196, 16, 17, BitOR($SS_CENTER, $WS_BORDER))
GUICtrlSetFont(-1, 8, 800, 0, 'Tahoma')
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetTip(-1, $l_tipLangEdit)
GUICtrlSetCursor(-1, 0)
If FileExists($monterGif) Then
$picMonter = GUICtrlCreatePic($monterGif, 253, 221, 64, 14, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
Else
$picMonter = GUICtrlCreateLabel('monter.FM', 258, 221, 0, 0, BitOR($SS_NOTIFY, $WS_GROUP))
EndIf
GUICtrlSetTip($picMonter, $l_tipAbout)
GUICtrlSetCursor($picMonter, 0)
If $CmdLine[0] = 0 Then GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Opt('TrayMenuMode', 3)
$trSetts = TrayCreateItem($l_trSetts)
GUICtrlSetFont($trSetts, 9, 900, 1, 'MS Sans Serif', 5)
TrayCreateItem('')
$trPause = TrayCreateItem($l_trPause0)
$trSuspend = TrayCreateItem($l_trSuspend)
$trLogoff = TrayCreateItem($l_trLogoff)
$trAbout = TrayCreateItem($l_trAbout)
TrayCreateItem('')
$trExit = TrayCreateItem($l_trExit)
TraySetState()
msg()
If $paused = 2 Then $paused = 0
If $paused = 1 Then
AdlibUnRegister('IdleCheck')
AdlibUnRegister('LogoffTimeShow')
GUICtrlSetData($btnPausWork, $l_btnPausWork1)
GUISetIcon($icon1)
TraySetIcon($icon1)
TraySetToolTip($title & ' - ' & $l_trPaused)
TrayItemSetText($trPause, $l_trPause1)
GUICtrlSetBkColor($lblAutOff, 0xEEEEEE)
GUICtrlSetState($lblAutOff, $GUI_DISABLE)
GUICtrlSetState($lblIntval, $GUI_DISABLE)
GUICtrlSetState($inpIntval, $GUI_DISABLE)
GUICtrlSetState($udIntval, $GUI_DISABLE)
GUICtrlSetState($lblLoops, $GUI_DISABLE)
GUICtrlSetState($inpLoops, $GUI_DISABLE)
GUICtrlSetState($udLoops, $GUI_DISABLE)
GUICtrlSetState($lblLogofDly, $GUI_DISABLE)
GUICtrlSetState($inpLogofDly, $GUI_DISABLE)
GUICtrlSetState($udLogofDly, $GUI_DISABLE)
GUICtrlSetState($cbxMonOff, $GUI_DISABLE)
GUICtrlSetState($cboLogoff, $GUI_DISABLE)
$pausQry = MsgBox(36, $title, StringFormat($l_pausQry), 30)
If $pausQry = 6 Then
msg($l_pausMsg0, -1000)
$paused = 0
IniWrite($ini, 'Main', 'paused', $paused)
AdlibRegister('IdleCheck')
AdlibRegister('LogoffTimeShow')
GUICtrlSetData($btnPausWork, $l_btnPausWork0)
GUISetIcon($icon)
TraySetIcon($icon)
TraySetToolTip($title)
TrayItemSetText($trPause, $l_trPause0)
GUICtrlSetBkColor($lblAutOff, 0xFFFFE0)
GUICtrlSetState($lblAutOff, $GUI_ENABLE)
GUICtrlSetState($lblIntval, $GUI_ENABLE)
GUICtrlSetState($inpIntval, $GUI_ENABLE)
GUICtrlSetState($udIntval, $GUI_ENABLE)
GUICtrlSetState($lblLoops, $GUI_ENABLE)
GUICtrlSetState($inpLoops, $GUI_ENABLE)
GUICtrlSetState($udLoops, $GUI_ENABLE)
GUICtrlSetState($lblLogofDly, $GUI_ENABLE)
GUICtrlSetState($inpLogofDly, $GUI_ENABLE)
GUICtrlSetState($udLogofDly, $GUI_ENABLE)
GUICtrlSetState($cbxMonOff, $GUI_ENABLE)
GUICtrlSetState($cboLogoff, $GUI_ENABLE)
ElseIf $pausQry = 7 Or @error Then
msg($l_pausMsg1, -3000)
EndIf
EndIf
$loop = 1
If StringMid(@UserName, StringInStr(@UserName, '.'), 1) = 'a' Then $sex = 1 ;used in polish translation only
MousMov()
$loop = 1
If $paused = 0 Then
AdlibRegister('IdleCheck') ;measuring idle time
AdlibRegister('LogoffTimeShow') ;showing remaining time to logoff
EndIf
AdlibRegister('SyncWin', 6000) ;useful if mobsync.exe activated
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Sleep(333)
GUISetState(@SW_HIDE)
Case $GUI_EVENT_MINIMIZE
Sleep(333)
GUISetState(@SW_HIDE)
Case $btnSave
IniWrite($ini, 'Main', 'interval', $intval)
IniWrite($ini, 'Main', 'loops', $loops)
IniWrite($ini, 'Main', 'logOffDelay', $lOffDly)
IniWrite($ini, 'Main', 'monitorOff', $monOff)
IniWrite($ini, 'Main', 'logoff', $logoff)
GUICtrlSetData($btnSave, $l_btnSaved)
GUICtrlSetState($btnSave, $GUI_DISABLE)
SaveIniCompare()
DefaultsCompare()
Case $btnDefRestore
For $c = $inpIntval To $inpLogofDly Step 2
GUICtrlOnChangeUnregister($c)
Next
$intval = 590
$loops = 3
$lOffDly = 60
$monOff = 1
$logoff = 2
GUICtrlSetData($inpIntval, $intval)
GUICtrlSetData($inpLoops, $loops)
GUICtrlSetData($inpLogofDly, $lOffDly)
GUICtrlSetState($cbxMonOff, $GUI_CHECKED)
$loffCurr = StringSplit($l_cboLogoff, '|')
GUICtrlSetData($cboLogoff, '')
GUICtrlSetData($cboLogoff, $l_cboLogoff, $loffCurr[1])
If $paused = 0 Then
GUICtrlSetState($lblLogofDly, $GUI_ENABLE)
GUICtrlSetState($inpLogofDly, $GUI_ENABLE)
GUICtrlSetState($udLogofDly, $GUI_ENABLE)
EndIf
SaveIniCompare()
DefaultsCompare()
For $c = $inpIntval To $inpLogofDly Step 2
GUICtrlOnChangeRegister($c, 'LogoffTimeRefresh', $c)
Next
Case $btnPausWork
SwitchPause()
Case $btnSuspend
Shutdown(32)
Case $btnLogoff
LogoffNow()
Case $cbxMonOff
SwitchMonOff()
SaveIniCompare()
DefaultsCompare()
Case $cboLogoff
LogoffChange()
SaveIniCompare()
DefaultsCompare()
Case $cboLang
LangRefresh()
LangChange()
Case $lblLangEdit
LangEdit()
Case $picMonter
About()
Case $btnUninst
Uninstall()
EndSwitch
$nMsg = TrayGetMsg()
Switch $nMsg
Case $trExit
ExitQuery()
Case $trLogoff
LogoffNow()
Case $trPause
SwitchPause()
Case $trSuspend
Shutdown(32)
Case $trSetts
GUISetState(@SW_SHOWNORMAL)
Case $trAbout
About()
EndSwitch
WEnd
Func SaveIniCompare()
If $intval = IniRead($ini, 'Main', 'interval', 590) And $loops = IniRead($ini, 'Main', 'loops', 3) And $lOffDly = IniRead($ini, 'Main', 'logOffDelay', 60) And $monOff = IniRead($ini, 'Main', 'monitorOff', 1) And $logoff = IniRead($ini, 'Main', 'logoff', 2) Then
GUICtrlSetData($btnSave, $l_btnSaved)
GUICtrlSetState($btnSave, $GUI_DISABLE)
Else
GUICtrlSetData($btnSave, $l_btnSave)
GUICtrlSetState($btnSave, $GUI_ENABLE)
EndIf
EndFunc ;==>SaveIniCompare
Func DefaultsCompare()
If $intval = 590 And $loops = 3 And $lOffDly = 60 And $monOff = 1 And $logoff = 2 Then
GUICtrlSetData($btnDefRestore, $l_btnDefaults)
GUICtrlSetState($btnDefRestore, $GUI_DISABLE)
If $paused = 0 Then
GUICtrlSetState($lblLogofDly, $GUI_ENABLE)
GUICtrlSetState($inpLogofDly, $GUI_ENABLE)
GUICtrlSetState($udLogofDly, $GUI_ENABLE)
EndIf
Else
GUICtrlSetData($btnDefRestore, $l_btnDefRestore)
GUICtrlSetState($btnDefRestore, $GUI_ENABLE)
EndIf
EndFunc ;==>DefaultsCompare
Func IdleCheck()
If _Timer_GetIdleTime() > ($intval * 1000) And $loop >= $loops Then
If $logoff <> 0 Then
MousMov()
Logoff()
Else
Suspend()
EndIf
ElseIf _Timer_GetIdleTime() > ($intval * 1000) Then
MousMov()
If $monOff = 1 And $loop > 1 Then MonitorOff()
EndIf
If _Timer_GetIdleTime() < 500 Then $loop = 1
EndFunc ;==>IdleCheck
Func MousMov()
$mousPos = MouseGetPos()
MouseMove($mousPos[0] - 2, $mousPos[1] - 2)
MouseMove($mousPos[0], $mousPos[1], 0)
$loop = $loop + 1
Sleep(500)
EndFunc ;==>MousMov
Func SyncWin() ;hiding the synchronizing window (mobsync.exe)
If $synTm >= 20 Or $syn = 1 Then
AdlibUnRegister('SyncWin')
ElseIf $syn = 0 Then
WinWait('Synchroni', '', 1)
WinActivate('Synchroni')
If WinActive('Synchroni') Then
$mousPos = MouseGetPos()
$winSynXY = WinGetPos('Synchroni')
MouseMove($winSynXY[0] + 16, $winSynXY[1] + 16, 0)
MouseClick('left')
Send('{DOWN 4}{ENTER}')
MouseMove($mousPos[0], $mousPos[1], 0)
$syn = 1
EndIf
$synTm = $synTm + 1
EndIf
EndFunc ;==>SyncWin
Func Logoff()
If WinExists('Synchronizacja uko', 'Wystąpił błąd') Then WinClose('Synchronizacja uko', 'Wystąpił błąd')
GUISetIcon($icon2)
TraySetIcon($icon2)
SoundPlay(@WindowsDir & '\media\chord.wav', 1)
SoundPlay(@WindowsDir & '\media\chord.wav')
$esc = 1
$brk = 0
msg(StringFormat($l_msgLogoff1, $kaCzki, @UserName) & @CRLF & $l_msgLogoffNo, ($lOffDly * 1000), -1, -1, -1)
If _Timer_GetIdleTime() < ($lOffDly * 1000) Then $brk = 1
If $loop >= $loops And $brk = 0 And $paused = 0 Then
GUISetIcon($icon2)
TraySetIcon($icon2)
SoundPlay(@WindowsDir & '\media\ding.wav', 1)
SoundPlay(@WindowsDir & '\media\ding.wav')
$brk = 0
If $brk = 0 Then msg(StringFormat($l_msgLogoff2, $kaCzke, @UserName) & @CRLF & $l_msgLogoffNo, 10000, -1, -1, -1, 2)
If _Timer_GetIdleTime() < 10000 Then $brk = 1
If $logoff = 2 Then
$sdn = 4
ElseIf $logoff = 1 Then
$sdn = 16
EndIf
If $brk = 0 And $paused = 0 Then
If @Compiled Then
$counTimes = $counTimes + 1
IniWrite($ini, 'Main', 'countTimes', $counTimes)
Shutdown($sdn)
Else
AdlibUnRegister('IdleCheck')
AdlibUnRegister('LogoffTimeShow')
msg('@Compiled script would do Shutdown(' & $sdn & ') now.')
GUIDelete($frmMain)
Exit
EndIf
If WinExists('Synchroni') Then WinKill('Synchroni'); I wish it worked
EndIf
EndIf
$esc = 0
ToolTip('')
EndFunc ;==>Logoff
Func LogoffBrk()
ToolTip('')
TrayTip('', '', 1)
If $paused = 0 Then
GUISetIcon($icon)
TraySetIcon($icon)
Else
GUISetIcon($icon1)
TraySetIcon($icon1)
EndIf
ToolTip($l_msgLogoffBrk, Int(@DesktopWidth / 2), Int(@DesktopHeight / 2), $title, 1)
Sleep(1500)
ToolTip('')
$loop = 1
EndFunc ;==>LogoffBrk
Func LogoffTimeRefresh($cid)
$intval = GUICtrlRead($inpIntval)
$loops = GUICtrlRead($inpLoops)
$lOffDly = GUICtrlRead($inpLogofDly)
If $intval < 4 Then $intval = 4
If $loops < 1 Then $loops = 1
If $lOffDly < 2 Then $lOffDly = 2
GUICtrlSetData($inpIntval, $intval)
GUICtrlSetData($inpLoops, $loops)
GUICtrlSetData($inpLogofDly, $lOffDly)
SaveIniCompare()
DefaultsCompare()
EndFunc ;==>LogoffTimeRefresh
Func LogoffTimeShow()
$timremnS = ($intval * ($loops - $loop + 1)) + $lOffDly - Round((_Timer_GetIdleTime() / 1000))
If $logoff = 0 Then $timremnS = ($intval * ($loops - $loop + 1)) - Round((_Timer_GetIdleTime() / 1000))
If $timremnS > 3599 Then
$h = Int($timremnS / 3600)
$m = Int((($timremnS / 3600) - $h) * 60)
$s = Round((((($timremnS / 3600) - $h) * 60) - $m) * 60)
$lOffTime = $h & 'h ' & StringFormat('%.2d', $m) & 'm ' & StringFormat('%.2d', $s) & 's'
ElseIf $timremnS > 59 Then
$m = Int($timremnS / 60)
$s = Round((($timremnS / 60) - $m) * 60)
$lOffTime = $m & 'm ' & StringFormat('%.2d', $s) & 's'
Else
$lOffTime = $timremnS & 's'
EndIf
If $logoff > 0 Then
GUICtrlSetData($lblAutOff, StringFormat($l_lblAutOff & ' ' & $lOffTime, $kaCzki, @UserName))
Else
GUICtrlSetData($lblAutOff, StringFormat($l_lblAutOffSus & ' ' & $lOffTime))
EndIf
EndFunc ;==>LogoffTimeShow
Func LogoffNow()
HotKeySet('{ESC}', 'LogoffEsc')
GUISetIcon($icon2)
TraySetIcon($icon2)
If WinExists('Synchronizacja uko', 'Wystąpił błąd') Then WinClose('Synchronizacja uko', 'Wystąpił błąd')
SoundPlay(@WindowsDir & '\media\ding.wav')
$brk = 0
msg(StringFormat($l_msgLogoff2, $kaCzke, @UserName) & @CRLF & $l_msgLogoffEsc, 5000, -1, -1)
If $logoff = 2 Then
$sdn = 4
ElseIf $logoff = 1 Then
$sdn = 16
EndIf
If $brk = 0 Then
If @Compiled Then
$counTimes = $counTimes + 1
IniWrite($ini, 'Main', 'countTimes', $counTimes)
Shutdown($sdn)
Else
AdlibUnRegister('IdleCheck')
AdlibUnRegister('LogoffTimeShow')
msg('@Compiled script would do Shutdown(' & $sdn & ') now.')
GUIDelete($frmMain)
Exit
EndIf
If WinExists('Synchroni') Then WinKill('Synchroni'); I wish it worked
EndIf
HotKeySet('{ESC}')
$brk = 0
ToolTip('')
EndFunc ;==>LogoffNow
Func LogoffEsc()
$brk = 1
If $paused = 0 Then
GUISetIcon($icon)
TraySetIcon($icon)
Else
GUISetIcon($icon1)
TraySetIcon($icon1)
EndIf
ToolTip($l_msgLogoffBrk, Int(@DesktopWidth / 2), Int(@DesktopHeight / 2), $title, 1)
Sleep(2000)
ToolTip('')
$loop = 1
EndFunc ;==>LogoffEsc
Func SwitchPause()
If $paused = 0 Then
GUICtrlSetData($btnPausWork, $l_btnPausWork1)
GUISetIcon($icon1)
TraySetIcon($icon1)
TraySetToolTip($title & ' - ' & $l_trPaused)
TrayItemSetText($trPause, $l_trPause1)
GUICtrlSetBkColor($lblAutOff, 0xEEEEEE)
GUICtrlSetState($lblAutOff, $GUI_DISABLE)
GUICtrlSetState($lblIntval, $GUI_DISABLE)
GUICtrlSetState($inpIntval, $GUI_DISABLE)
GUICtrlSetState($udIntval, $GUI_DISABLE)
GUICtrlSetState($lblLoops, $GUI_DISABLE)
GUICtrlSetState($inpLoops, $GUI_DISABLE)
GUICtrlSetState($udLoops, $GUI_DISABLE)
GUICtrlSetState($lblLogofDly, $GUI_DISABLE)
GUICtrlSetState($inpLogofDly, $GUI_DISABLE)
GUICtrlSetState($udLogofDly, $GUI_DISABLE)
GUICtrlSetState($cbxMonOff, $GUI_DISABLE)
GUICtrlSetState($cboLogoff, $GUI_DISABLE)
$paused = 1
If $letSuspend <> 1 Then
AdlibUnRegister('IdleCheck')
AdlibUnRegister('LogoffTimeShow')
EndIf
If $letSuspend = 1 Then $paused = 2
Else
GUICtrlSetData($btnPausWork, $l_btnPausWork0)
GUISetIcon($icon)
TraySetIcon($icon)
TraySetToolTip($title)
TrayItemSetText($trPause, $l_trPause0)
GUICtrlSetBkColor($lblAutOff, 0xFFFFE0)
GUICtrlSetState($lblAutOff, $GUI_ENABLE)
GUICtrlSetState($lblIntval, $GUI_ENABLE)
GUICtrlSetState($inpIntval, $GUI_ENABLE)
GUICtrlSetState($udIntval, $GUI_ENABLE)
GUICtrlSetState($lblLoops, $GUI_ENABLE)
GUICtrlSetState($inpLoops, $GUI_ENABLE)
GUICtrlSetState($udLoops, $GUI_ENABLE)
GUICtrlSetState($lblLogofDly, $GUI_ENABLE)
GUICtrlSetState($inpLogofDly, $GUI_ENABLE)
GUICtrlSetState($udLogofDly, $GUI_ENABLE)
GUICtrlSetState($cbxMonOff, $GUI_ENABLE)
GUICtrlSetState($cboLogoff, $GUI_ENABLE)
$paused = 0
AdlibRegister('IdleCheck')
AdlibRegister('LogoffTimeShow')
EndIf
IniWrite($ini, 'Main', 'paused', $paused)
EndFunc ;==>SwitchPause
Func SwitchMonOff()
If $monOff = 1 Then
GUICtrlSetState($cbxMonOff, $GUI_UNCHECKED)
$monOff = 0
Else
GUICtrlSetState($cbxMonOff, $GUI_CHECKED)
$monOff = 1
EndIf
EndFunc ;==>SwitchMonOff
Func MonitorOff()
Opt('WinTitleMatchMode', 4)
Monitor('off')
Opt('WinTitleMatchMode', 1)
EndFunc ;==>MonitorOff
Func Monitor($io_control = 'on') ;Kerberuz's script
Local $WM_SYSCommand = 274
Local $SC_MonitorPower = 61808
Local $HWND = WinGetHandle('classname=Progman')
Switch StringUpper($io_control)
Case 'OFF'
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $HWND, 'int', $WM_SYSCommand, 'int', $SC_MonitorPower, 'int', 2)
Case 'ON'
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $HWND, 'int', $WM_SYSCommand, 'int', $SC_MonitorPower, 'int', -1)
Case Else
MsgBox(32, $title, 'Command usage: on/off', 5)
EndSwitch
EndFunc ;==>Monitor
Func LogoffChange()
$logoffCurr = GUICtrlRead($cboLogoff)
$loffCurr = StringSplit($l_cboLogoff, '|')
For $i = 2 To 0 Step -1
If $logoffCurr = $loffCurr[Abs($i - 3)]Then $logoff = $i
Next
If $logoff = 0 Then
GUICtrlSetState($lblLogofDly, $GUI_DISABLE)
GUICtrlSetState($inpLogofDly, $GUI_DISABLE)
GUICtrlSetState($udLogofDly, $GUI_DISABLE)
GUICtrlSetData($lblAutOff, StringFormat($l_lblAutOff & ' ' & $lOffTime, $kaCzki, @UserName))
Else
GUICtrlSetState($lblLogofDly, $GUI_ENABLE)
GUICtrlSetState($inpLogofDly, $GUI_ENABLE)
GUICtrlSetState($udLogofDly, $GUI_ENABLE)
GUICtrlSetData($lblAutOff, StringFormat($l_lblAutOffSus & ' ' & $lOffTime))
EndIf
EndFunc ;==>LogoffChange
Func Suspend()
$letSuspend = 1
SwitchPause()
Global $WM_POWERBROADCAST = 536 ;Jos's func
Global $PBT_APMRESUMESUSPEND = 0x0007
Global $PBT_APMRESUMESTANDBY = 0x0008
GUIRegisterMsg($WM_POWERBROADCAST, 'Standby')
While 1
Sleep(10)
If _Timer_GetIdleTime() < 500 Then
$loop = 1
$letSuspend = 0
SwitchPause()
ExitLoop
ElseIf $letSuspend = 1 And $paused = 0 Then
ExitLoop
EndIf
WEnd
EndFunc ;==>Suspend
Func Standby($HWND, $Msg, $wParam, $lParam)
If $wParam = ($PBT_APMRESUMESUSPEND Or $wParam = $PBT_APMRESUMESTANDBY) And IniRead($ini, 'Main', 'paused', 0) = 0 Then
$loop = 1
$letSuspend = 1
SwitchPause()
EndIf
EndFunc ;==>Standby
Func IniCheck()
If IniRead($ini, 'Main', 'version', '') = '' Then IniWrite($ini, 'Main', 'version', $sVer)
If IniRead($ini, 'Main', 'countTimes', '') = '' Then IniWrite($ini, 'Main', 'countTimes', 0)
If IniRead($ini, 'Main', 'update', '') = '' Then IniWrite($ini, 'Main', 'update', '3-' & _NowCalcDate())
If IniRead($ini, 'Main', 'rcntUsed', '') = '' Then IniWrite($ini, 'Main', 'rcntUsed', _DateDiff('s', '1980/01/01 00:00:00', _NowCalc()))
If IniRead($ini, 'Main', 'interval', '') = '' Then IniWrite($ini, 'Main', 'interval', 590)
If IniRead($ini, 'Main', 'loops', '') = '' Then IniWrite($ini, 'Main', 'loops', 3)
If IniRead($ini, 'Main', 'logOffDelay', '') = '' Then IniWrite($ini, 'Main', 'logOffDelay', 60)
If IniRead($ini, 'Main', 'monitorOff', '') = '' Then IniWrite($ini, 'Main', 'monitorOff', 1)
If IniRead($ini, 'Main', 'logoff', '') = '' Then IniWrite($ini, 'Main', 'logoff', 2)
If IniRead($ini, 'Main', 'paused', '') = '' Then IniWrite($ini, 'Main', 'paused', 0)
$version = IniRead($ini, 'Main', 'version', $sVer)
EndFunc ;==>IniCheck
Func IniReadF()
$counTimes = IniRead($ini, 'Main', 'countTimes', 0)
$update = IniRead($ini, 'Main', 'update', '2-' & _NowCalcDate())
$updState = StringLeft($update, 1)
$updCheck = StringTrimLeft($update, 2)
$rcntUsed = IniRead($ini, 'Main', 'rcntUsed', _DateDiff('s', '1980/01/01 00:00:00', _NowCalc()))
$intval = IniRead($ini, 'Main', 'interval', 590)
$loops = IniRead($ini, 'Main', 'loops', 3)
$lOffDly = IniRead($ini, 'Main', 'logOffDelay', 60)
$monOff = IniRead($ini, 'Main', 'monitorOff', 1)
$logoff = IniRead($ini, 'Main', 'logoff', 2)
$paused = IniRead($ini, 'Main', 'paused', 0)
EndFunc ;==>IniReadF
Func LangCheck()
If @Compiled And ($CmdLine[0] > 0 And $CmdLine[1] = '-u') Then
$lang = 'english'
For $i = 1 To 2
If FileExists(@ScriptDir & '\' & $script & '.' & $lang & '.lng') Then FileDelete(@ScriptDir & '\' & $script & '.' & $lang & '.lng')
$lang = 'polski'
Next
EndIf
FileInstall('LogOnOff.english.lng', @ScriptDir & '\', 1)
FileInstall('LogOnOff.polski.lng', @ScriptDir & '\', 1)
EndFunc ;==>LangCheck
Func LangRead()
If $currFileLang = '' Then
$currFileLang = @ScriptDir & '\' & $script & '.english.lng'
If StringInStr('0415', @OSLang) Then $currFileLang = @ScriptDir & '\' & $script & '.polski.lng'
EndIf
If Not FileExists($currFileLang) Then
$currFileLang = @ScriptDir & '\' & $script & '.english.lng'
LangCheck()
LangRead()
Else
$lngRdSect = IniReadSectionNames($currFileLang)
$lng = $lngRdSect[1]
$l_grpSetts = IniRead($currFileLang, $lng, 'grpSetts', 'Settings')
$l_tipIntval = IniRead($currFileLang, $lng, 'tipIntval', 'Enter seconds between 4 and 999')
$l_tipLoops = IniRead($currFileLang, $lng, 'tipLoops', 'Enter number of cycles between 1 do 99')
$l_tipLogofDly = IniRead($currFileLang, $lng, 'tipLogofDly', 'Enter seconds between 2 and 999')
$l_cbxMonOff = IniRead($currFileLang, $lng, 'cbxMonOff', 'Activate screensaver')
$l_tipMonOff = IniRead($currFileLang, $lng, 'tipMonOff', 'Turns monitor off after the first maintaining session cycle')
$l_cboLogoff = IniRead($currFileLang, $lng, 'cboLogoff', 'Force logoff|Soft logoff|No logoff')
$l_tipLogoff = IniRead($currFileLang, $lng, 'tipLogoff', "Force logoff - regardless of not saved or opened files etc.\n\rSoft logoff - if there are any unsaved files, computer waits for user's action\n\rNo logoff - after set time the application stops countdown and the computer can be suspended")
$l_lblIntval = IniRead($currFileLang, $lng, 'lblIntval', "Computer's idle time (s)")
$l_lblLoops = IniRead($currFileLang, $lng, 'lblLoops', 'Number of alive user session cycles')
$l_lblLogofDly = IniRead($currFileLang, $lng, 'lblLogofDly', 'Displaying time warning message\n\rabout approaching logoff (s)')
$l_btnSave = IniRead($currFileLang, $lng, 'btnSave', 'Save')
$l_btnSaved = IniRead($currFileLang, $lng, 'btnSaved', 'Saved')
$l_btnDefRestore = IniRead($currFileLang, $lng, 'btnDefRestore', 'Restore defaults')
$l_btnDefaults = IniRead($currFileLang, $lng, 'btnDefaults', 'Defaults')
$l_btnPausWork0 = IniRead($currFileLang, $lng, 'btnPausWork0', 'Pause work')
$l_btnPausWork1 = IniRead($currFileLang, $lng, 'btnPausWork1', 'Resume work')
$l_btnSuspend = IniRead($currFileLang, $lng, 'btnSuspend', 'Suspend now')
$l_lblAutOff = IniRead($currFileLang, $lng, 'lblAutOff', 'User%s %s \n\rwill be logged off\n\rin')
$l_lblAutOffSus = IniRead($currFileLang, $lng, 'lblAutOffSus', 'Application will\n\rfinish countdown\n\rin')
$l_btnLogoff = IniRead($currFileLang, $lng, 'btnLogoff', 'Logoff now')
$l_btnUninst = IniRead($currFileLang, $lng, 'btnUninst', 'Uninstall')
$l_tipLang = IniRead($currFileLang, $lng, 'tipLang', 'Choose language')
$l_tipLangEdit = IniRead($currFileLang, $lng, 'tipLangEdit', 'Edit current language file')
$l_tipAbout = IniRead($currFileLang, $lng, 'tipAbout', 'About...')
$l_trSetts = IniRead($currFileLang, $lng, 'trSetts', 'Show settings')
$l_trLogoff = IniRead($currFileLang, $lng, 'trLogoff', 'Logoff now')
$l_trSuspend = IniRead($currFileLang, $lng, 'trSuspend', 'Suspend now')
$l_trPause0 = IniRead($currFileLang, $lng, 'trPause0', 'Pause')
$l_trPause1 = IniRead($currFileLang, $lng, 'trPause1', 'Resume')
$l_trPaused = IniRead($currFileLang, $lng, 'trPaused', 'paused')
$l_trAbout = IniRead($currFileLang, $lng, 'trAbout', 'About...')
$l_trExit = IniRead($currFileLang, $lng, 'trExit', 'Exit')
$l_pausQry = IniRead($currFileLang, $lng, 'pausQry', 'The program was paused previously.\n\rDo you want to reactivate it?')
$l_pausMsg0 = IniRead($currFileLang, $lng, 'pausMsg0', 'Now application will resume.')
$l_pausMsg1 = IniRead($currFileLang, $lng, 'pausMsg1', 'Application will stay paused.')
$l_msgLogoff1 = IniRead($currFileLang, $lng, 'msgLogoff1', 'User%s %s will logoff in a moment...')
$l_msgLogoffNo = IniRead($currFileLang, $lng, 'msgLogoffNo', 'Press any key or move the mouse to cancel logoff.')
$l_msgLogoff2 = IniRead($currFileLang, $lng, 'msgLogoff2', 'User%s %s logoff is now proceeding...')
$l_msgLogoffBrk = IniRead($currFileLang, $lng, 'msgLogoffBrk', 'Logoff is cancelled.')
$l_msgLogoffEsc = IniRead($currFileLang, $lng, 'msgLogoffEsc', 'Press "Esc" key to cancel logoff.')
$l_msgUpdateCheck = IniRead($currFileLang, $lng, 'msgUpdateCheck', 'Checking update, wait a moment...')
$l_msgUpdateError = IniRead($currFileLang, $lng, 'msgUpdateError', 'Network error. Update failed.')
$l_msgUpdateDownload = IniRead($currFileLang, $lng, 'msgUpdateDownload', 'Downloading the newest version, wait a moment...')
$l_msgUpdateFailed = IniRead($currFileLang, $lng, 'msgUpdateFailed', 'Download failed. Check network configuration.')
$l_msgUpdateOk = IniRead($currFileLang, $lng, 'msgUpdateOk', 'Update completed. Launching new version')
$l_msgAdmLock = IniRead($currFileLang, $lng, 'msgAdmLock', "Hello Admin.\n\rDue to security risk, this application won't work on current login.")
$l_msgDisclaimer = IniRead($currFileLang, $lng, 'msgDisclaimer', "ATTENTION!\n\rThis application keeps alive user session during inactivity of the computer.\n\rActive session time may be adjusted in settings.\n\rThe longer idle time with logged in user, the bigger risk for user's files, documents and data.\n\r\n\rThe author of this software is not responsible for possible damage.\n\rIf you are aware%s of the risk and understood%s this warning - click ""Yes"".")
$l_msgFileMoving = IniRead($currFileLang, $lng, 'msgFileMoving', 'Moving this app to the proper folder, wait a moment...')
$l_msgExitQuery = IniRead($currFileLang, $lng, 'msgExitQuery', 'Do you want to exit application?')
$l_msgUninstall = IniRead($currFileLang, $lng, 'msgUninstall', 'You are about to uninstall this application. Do you want to continue?')
$l_msgUninstallProcess = IniRead($currFileLang, $lng, 'msgUninstallProcess', 'Uninstalling in progress')
$l_msgUninstallDelOthLangs = IniRead($currFileLang, $lng, 'msgUninstallDelOthLangs', "Do you want to delete user's (other than default) language files?")
$l_msgWarning = IniRead($currFileLang, $lng, 'msgWarning', 'Warning!')
$l_msgError = IniRead($currFileLang, $lng, 'msgError', 'ERROR!')
$l_lblAboutTitle = IniRead($currFileLang, $lng, 'lblAboutTitle', 'About')
$l_lblAboutTxt = IniRead($currFileLang, $lng, 'lblAboutTxt', 'Program keeps alive user session and prevents from suspension. After longer inactivity application performs auto-logoff.')
$l_lblBuilt = IniRead($currFileLang, $lng, 'lblBuilt', 'built on AutoIt')
$l_lblWww = IniRead($currFileLang, $lng, 'lblWww', "Author's site")
$l_lblWwwApp = IniRead($currFileLang, $lng, 'lblWwwApp', "Application's site (PL)")
$l_lblWwwForum = IniRead($currFileLang, $lng, 'lblWwwForum', 'Autoit3 forum')
$kaCzki = ''
$kaCzke = ''
If $lng = 'PL' Then
$kaCzki = 'ka'
$kaCzke = 'ka'
If $sex = 1 Then
$kaCzki = 'czki'
$kaCzke = 'czkę'
EndIf
EndIf
EndIf
EndFunc ;==>LangRead
Func LangRefresh()
$langFiList = ''
$lngList = ''
$srchFiLang = FileFindFirstFile(@ScriptDir & '\' & $script & '.*.lng')
If $srchFiLang = -1 Then
MsgBox(48, 'Error', 'No language files found. Restart the program.')
LangCheck()
Exit
EndIf
While 1
$srchLang = FileFindNextFile($srchFiLang) ;searching for new language files (to find your own one)
If @error Then ExitLoop
$sectLang = IniReadSectionNames(@ScriptDir & '\' & $srchLang)
$langFiList = $srchLang & '|' & $langFiList
$lngList = $sectLang[1] & '|' & $lngList
WEnd
$langFiList = StringTrimRight($langFiList, 1)
$lngList = StringTrimRight($lngList, 1)
If $lng = '' Then
If StringInStr('0415', @OSLang) Then
$lang = 'polski'
Else
$lang = 'english'
EndIf
$currFileLang = @ScriptDir & '\' & $script & '.' & $lang & '.lng'
$lngRdSect = IniReadSectionNames($currFileLang)
$lng = $lngRdSect[1]
EndIf
EndFunc ;==>LangRefresh
Func LangChange()
$lng = GUICtrlRead($cboLang)
$lFLst = StringSplit($langFiList, '|')
$lLst = StringSplit($lngList, '|')
For $i = 1 To $lFLst[0]
If $lng = $lLst[$i] Then
$currFileLang = @ScriptDir & '\' & $lFLst[$i]
ExitLoop
EndIf
Next
LangRead()
LangRefreshGui()
EndFunc ;==>LangChange
Func LangEdit()
Run('notepad.exe ' & $currFileLang)
EndFunc ;==>LangEdit
Func LangRefreshGui() ;we don't need to restart the program, result of switching language is immediate
GUICtrlSetData($grpSetts, $l_grpSetts)
GUICtrlSetTip($inpIntval, $l_tipIntval)
GUICtrlSetTip($udIntval, $l_tipIntval)
GUICtrlSetTip($lblIntval, $l_tipIntval)
GUICtrlSetTip($inpLoops, $l_tipLoops)
GUICtrlSetTip($udLoops, $l_tipLoops)
GUICtrlSetTip($lblLoops, $l_tipLoops)
GUICtrlSetTip($inpLogofDly, $l_tipLogofDly)
GUICtrlSetTip($udLogofDly, $l_tipLogofDly)
GUICtrlSetTip($lblLogofDly, $l_tipLogofDly)
GUICtrlSetData($lblIntval, $l_lblIntval)
GUICtrlSetData($lblLoops, $l_lblLoops)
GUICtrlSetData($lblLogofDly, StringFormat($l_lblLogofDly))
GUICtrlSetData($cbxMonOff, $l_cbxMonOff & ' ')
GUICtrlSetTip($cbxMonOff, $l_tipMonOff)
GUICtrlSetData($cboLogoff, '')
$loffCurr = StringSplit($l_cboLogoff, '|')
For $i = 2 To 0 Step -1
If $logoff = $i Then $logoffCurr = $loffCurr[Abs($i - 3)]
Next
GUICtrlSetData($cboLogoff, $l_cboLogoff, $logoffCurr)
GUICtrlSetTip($cboLogoff, StringFormat($l_tipLogoff))
SaveIniCompare()
DefaultsCompare()
GUICtrlSetData($btnPausWork, $l_btnPausWork0)
If $paused >= 1 Then GUICtrlSetData($btnPausWork, $l_btnPausWork1)
GUICtrlSetData($lblAutOff, StringFormat($l_lblAutOff & ' ' & $lOffTime, $kaCzki, @UserName))
If $logoff = 0 Then GUICtrlSetData($lblAutOff, StringFormat($l_lblAutOffSus & ' ' & $lOffTime))
GUICtrlSetData($btnSuspend, $l_btnSuspend)
GUICtrlSetData($btnLogoff, $l_btnLogoff)
GUICtrlSetData($btnUninst, $l_btnUninst)
GUICtrlSetData($cboLang, '')
GUICtrlSetData($cboLang, $lngList, $lng)
GUICtrlSetTip($cboLang, $l_tipLang)
GUICtrlSetTip($lblLangEdit, $l_tipLangEdit)
GUICtrlSetTip($picMonter, $l_tipAbout)
TraySetToolTip($title)
TrayItemSetText($trSetts, $l_trSetts)
TrayItemSetText($trSuspend, $l_trSuspend)
TrayItemSetText($trLogoff, $l_trLogoff)
TrayItemSetText($trPause, $l_trPause0)
If $paused >= 1 Then
TrayItemSetText($trPause, $l_trPause1)
TraySetToolTip($title & ' - ' & $l_trPaused)
EndIf
TrayItemSetText($trAbout, $l_trAbout)
TrayItemSetText($trExit, $l_trExit)
EndFunc ;==>LangRefreshGui
Func UpdateCheck() ;20.12.2009 - works for main (single) file in the project
$serverURL = 'monter.homeip.net'
$datDiff = _DateDiff('D', $updCheck, _NowCalcDate())
If $datDiff >= $updState Then
$pcol = 'ftp://'
For $i = 1 To 3
msg($l_msgUpdateCheck & ' (' & $i & '/3)')
InetGet($pcol & $serverURL & '/skrypty/bin/' & $script & '.upd', $fileAutoUpd, 1, 0)
Sleep(1500)
If FileExists($fileAutoUpd) And FileGetSize($fileAutoUpd) > 30 Then ExitLoop
If $i = 1 Then $pcol = 'http://'
If $i = 2 Then HttpSetProxy(2, $serverURL & ':8068')
Next
ToolTip('')
HttpSetProxy(1)
If Not FileExists($fileAutoUpd) Then Sleep(2500)
If Not FileExists($fileAutoUpd) Or FileGetSize($fileAutoUpd) < 30 Then
msg($l_msgUpdateError, -4000, -1, -1, -1, 3)
$updState = 1
Else
$nVer = IniRead($fileAutoUpd, $script & '.exe', 'version', '0.0.0.0')
$nVer = StringFormat('%.2f', Number(StringReplace($nVer, '.', '')) / 1000)
$nSize = IniRead($fileAutoUpd, $script & '.exe', 'size', '999999999')
If $nVer > $sVer Then
$pcol = 'ftp://'
$nFile = IniReadSectionNames($fileAutoUpd)
$nFile = $nFile[1]
For $i = 1 To 3
msg($l_msgUpdateDownload & ' (' & $i & '/3)')
InetGet($pcol & $serverURL & '/skrypty/bin/' & $nFile, @TempDir & '\' & $script & '.exe', 1, 0)
If FileGetSize(@TempDir & '\' & $script & '.exe') = $nSize Then ExitLoop
If $i = 1 Then $pcol = 'http://'
If $i = 2 Then HttpSetProxy(2, $serverURL & ':8068')
Next
If FileGetSize(@TempDir & '\' & $script & '.exe') < IniRead($fileAutoUpd, $script & '.exe', 'size', 0) Then
msg($l_msgUpdateFailed, -3000, -1, -1, -1, 3)
$updState = 1
Else
If FileExists($fileBat) Then FileDelete($fileBat)
Sleep(1000)
$baTemp = FileOpen($fileBat, 1)
FileWriteLine($baTemp, '@echo off' & @CRLF & 'echo Update in process: ' & $script & '...' & @CRLF & 'ping -n 6 ' & $serverURL & ' >nul' & @CRLF & 'if exist "' & @TempDir & '\' & $script & '.exe" del "' & @ScriptDir & '\' & $script & '.exe" >nul' & @CRLF & 'move "' & @TempDir & '\' & $script & '.exe" "' & @ScriptDir & '\" >nul')
FileWriteLine($baTemp, 'ping -n 3 ' & $serverURL & ' >nul' & @CRLF & 'if exist "' & @ScriptDir & '\' & $script & '.exe" "' & @ScriptDir & '\' & $script & '.exe" -u' & @CRLF & 'exit' & @CRLF & 'cls')
FileClose($baTemp)
EndIf
msg($l_msgUpdateOk & ' ' & $script & ' ' & $nVer & '...', -3000, -1, -1, -1)
$updState = 3
IniWrite($ini, 'Main', 'update', $updState & '-' & _NowCalcDate())
If FileExists($fileAutoUpd) Then FileDelete($fileAutoUpd)
Run(@ComSpec & ' /c "' & $fileBat & '" -u', '', @SW_HIDE)
If ProcessExists($script & '.exe') Then ProcessClose($script & '.exe')
Exit
Else
$updState = 7
If ($CmdLine[0] > 0 And $CmdLine[1] = '-u') Then $updState = 3
EndIf
EndIf
IniWrite($ini, 'Main', 'update', $updState & '-' & _NowCalcDate())
EndIf
If FileExists($fileAutoUpd) Then FileDelete($fileAutoUpd)
EndFunc ;==>UpdateCheck
Func Install() ;08.11.2009 (@StartupDir '-h', no @DesktopDir), IniWrite $sVer
If @Compiled Then
If Not FileExists($dirMonter) Then DirCreate($dirMonter)
FileChangeDir($dirMonter)
If @ScriptDir <> $dirMonter Then
If StringLeft(@UserName, 3) = 'adm' And IniRead($ini, 'Main', 'admUnlock', '') <> '1' Then ;undocumented ini option for admin testing :-)
IniWrite($ini, 'Main', 'admUnlock', 0)
MsgBox(16, $title, StringFormat($l_msgAdmLock))
If IniRead($ini, 'Main', 'admUnlock', '') <> '1' Then Exit
EndIf
$yA = ''
$eA = ''
If StringInStr('0415', @OSLang) Then
$yA = 'y'
$eA = 'e'
If $sex = 1 Then
$yA = 'a'
$eA = 'a'
EndIf
EndIf
$disclmr = MsgBox(308, $title, StringFormat($l_msgDisclaimer, $yA, $eA))
If $disclmr = 6 Then
$del = 1
If StringLeft(@ScriptDir, 3) <> StringLeft(@AppDataDir, 3) Then $del = 0
msg($l_msgFileMoving)
$list = ProcessList($script & '.exe')
For $i = 1 To $list[0][0]
$pid = WinGetProcess($script)
ProcessClose($pid)
Next
Sleep(1000)
FileCopy(@ScriptFullPath, $dirMonter & '\' & $script & '.exe', 9)
If Not FileExists(@ProgramsDir & '\monter.FM\') Then DirCreate(@ProgramsDir & '\monter.FM\')
FileCreateShortcut($dirMonter & '\' & $script & '.exe', @ProgramsDir & '\monter.FM\' & $fnScript & '.lnk', $dirMonter, '', $title, $dirMonter & '\' & $script & '.exe', '', 0)
FileCreateShortcut($dirMonter & '\' & $script & '.exe', @StartupDir & '\' & $fnScript & '.lnk', $dirMonter, '-h', $title, $dirMonter & '\' & $script & '.exe', '', 0)
msg()
$baTemp = FileOpen($fileBat, 1)
If $del = 1 Then FileWriteLine($baTemp, '@ping -n 4 ' & $serverURL & ' >nul' & @CRLF & '@if exist "' & @ScriptFullPath & '" del "' & @ScriptFullPath & '" >nul')
FileWriteLine($baTemp, '@ping -n 1 ' & $serverURL & ' >nul' & @CRLF & '@if exist "' & $dirMonter & '\' & $script & '.exe' & '" "' & $dirMonter & '\' & $script & '.exe' & '" -h' & @CRLF & '@exit' & @CRLF & '@cls')
FileClose($baTemp)
If FileExists($ini) Then FileDelete($ini)
If FileExists(@ScriptDir & '\' & $script & '.*.lng') Then FileDelete(@ScriptDir & '\' & $script & '.*.lng')
$lang = 'english'
For $i = 1 To 2
If FileExists($dirMonter & '\' & $script & '.' & $lang & '.lng') Then FileDelete($dirMonter & '\' & $script & '.' & $lang & '.lng')
$lang = 'polski'
Next
Sleep(2000)
Run(@ComSpec & ' /c "' & $fileBat & '" -u', '', @SW_HIDE)
For $i = 1 To 2
If ProcessExists(@ScriptName) Then ProcessClose(@ScriptName)
Sleep(2000)
Next
Exit
Else
If FileExists(@ScriptDir & '\' & $script & '.*.lng') Then FileDelete(@ScriptDir & '\' & $script & '.*.lng')
If FileExists(@ScriptDir & '\' & $script & '.ini') Then FileDelete(@ScriptDir & '\' & $script & '.ini')
Exit
EndIf
EndIf
EndIf
IniWrite($ini, 'Main', 'version', $sVer)
EndFunc ;==>Install
Func ExitQuery()
$exitQry = MsgBox(292, $title, $l_msgExitQuery, 8)
If $exitQry = 6 Then
Exit
Else
$loop = 0
msg()
EndIf
EndFunc ;==>ExitQuery
Func Uninstall() ;29.11.2009 OK
$uninQry = MsgBox(308, $title, $l_msgUninstall, 8)
If $uninQry = 6 Then
AdlibUnRegister('IdleCheck')
AdlibUnRegister('LogoffTimeShow')
AdlibUnRegister('SyncWin')
GUIDelete($frmMain)
msg($l_msgUninstallProcess & ' ' & $title & '...')
If FileExists($ini) Then FileDelete($ini)
If FileExists(@ProgramsDir & '\monter.FM\' & $fnScript & '.lnk') Then FileDelete(@ProgramsDir & '\monter.FM\' & $fnScript & '.lnk')
If Not FileExists(@ProgramsDir & '\monter.FM\*.*') Then DirRemove(@ProgramsDir & '\monter.FM')
If FileExists(@StartupDir & '\' & $fnScript & '.lnk') Then FileDelete(@StartupDir & '\' & $fnScript & '.lnk')
$lngpx = 'polski'
For $i = 1 To 2
If FileExists(@ScriptDir & '\' & $script & '.' & $lngpx & '.lng') Then FileDelete(@ScriptDir & '\' & $script & '.' & $lngpx & '.lng')
$lngpx = 'english'
Next
If FileExists(@ScriptDir & '\' & $script & '.*.lng') Then
$delOthLangs = MsgBox(292, $title, $l_msgUninstallDelOthLangs, 8)
If $delOthLangs = 6 Then FileDelete(@ScriptDir & '\' & $script & '.*.lng')
EndIf
If FileExists($fileBat) Then FileDelete($fileBat)
Sleep(1000)
$baTemp = FileOpen($fileBat, 1)
FileWriteLine($baTemp, 'echo Uninstall in process: ' & $title & '...' & @CRLF & ':loop' & @CRLF & 'ping -n 3 monter.homeip.net' & @CRLF & 'del "' & $dirMonter & '\' & $script & '.exe"')
FileWriteLine($baTemp, 'ping -n 2 monter.homeip.net' & @CRLF & 'if exist "' & $dirMonter & '\' & $script & '.exe" goto loop')
FileWriteLine($baTemp, 'ping -n 6 monter.homeip.net' & @CRLF & 'del "' & $fileBat & '"' & @CRLF & 'exit' & @CRLF & 'cls')
FileClose($baTemp)
Sleep(1000)
Run(@ComSpec & ' /c "' & $fileBat & '"', '', @SW_HIDE)
Exit
EndIf
EndFunc ;==>Uninstall
Func About()
$frmAbout = GUICreate($title & ' - ' & $l_lblAboutTitle, 280, 144, -1, -1, -1, $WS_EX_WINDOWEDGE, $frmMain)
$lblAboutTxt = GUICtrlCreateLabel($l_lblAboutTxt, 25, 8, 261, 49)
$lblBuilt = GUICtrlCreateLabel($title & ' ' & $l_lblBuilt & ' ' & @AutoItVersion & '.', 25, 60, 224, 15)
$lblWww = GUICtrlCreateLabel($l_lblWww, 25, 78, 80, 17)
GUICtrlSetFont(-1, 9, 400, 4, 'MS Sans Serif')
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'http://monter.fm/')
If Not FileExists($monterGif) Then FileInstall('.\rob\monter.FM.gif', @TempDir & '\', 1)
$picMonterAbout = GUICtrlCreatePic($monterGif, 107, 78, 64, 14, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'http://monter.fm/')
GUICtrlCreateLabel($dateRlse, 185, 81, 50, 15)
GUICtrlSetFont(-1, 7, 400, 0, 'Tahoma')
$lblWwwApp = GUICtrlCreateLabel($l_lblWwwApp, 25, 96, 127, 17)
GUICtrlSetFont(-1, 9, 400, 4, 'MS Sans Serif')
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'http://monter.homeip.net/skrypty/LogOnOff.html')
$lblWwwForum = GUICtrlCreateLabel($l_lblWwwForum, 164, 96, 127, 17)
GUICtrlSetFont(-1, 9, 400, 4, 'MS Sans Serif')
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'http://www.autoitscript.com/forum/index.php?showtopic=106100')
$btnOkAbt = GUICtrlCreateButton('OK', 113, 114, 51, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
If $nMsg = $GUI_EVENT_CLOSE Or $nMsg = $btnOkAbt Then ExitLoop
If $nMsg = $picMonterAbout Or $nMsg = $lblWww Then Link('http://monter.fm/')
If $nMsg = $lblWwwApp Then Link('http://monter.homeip.net/skrypty/LogOnOff.html')
If $nMsg = $lblWwwForum Then Link('http://www.autoitscript.com/forum/index.php?showtopic=106100')
WEnd
GUIDelete($frmAbout)
EndFunc ;==>About
Func Link($s_StartPath) ;from Rob Saunders' script
$s_StartStr = @ComSpec & ' /c start "" '
Run($s_StartStr & $s_StartPath, '', @SW_HIDE)
EndFunc ;==>Link
Func FileInfo()
If @Compiled Then
Global $sVer = StringFormat('%.2f', Number(StringReplace(FileGetVersion(@ScriptFullPath), '.', '')) / 1000) ;script's version in x.xx format
Global $dateRlse = FileGetVersion(@ScriptFullPath, 'Release date')
Else
Opt('TrayIconDebug', 1)
$strRes = '#AutoIt3Wrapper_' ;section identifying script's version and release date from #AutoIt3Wrapper fields
For $ln = 1 To 50
$srchRes = StringInStr(FileReadLine(@ScriptFullPath, $ln), $strRes)
If $srchRes > 0 Then
$lr = $ln
ExitLoop
EndIf
Next
$strRes = '#AutoIt3Wrapper_Res_Fileversion='
Dim $lnRes[3]
For $i = 1 To 2
For $ln = $lr To $lr + 16
$srchRes = StringInStr(FileReadLine(@ScriptFullPath, $ln), $strRes)
If $srchRes > 0 Then
$lnRes[$i] = $ln
ExitLoop
EndIf
Next
$strRes = '#AutoIt3Wrapper_Res_Field=Release date|'
Next
Global $sVer = StringFormat('%.2f', Number(StringReplace(StringTrimLeft(FileReadLine(@ScriptFullPath, $lnRes[1]), 32), '.', '')) / 1000)
$rd = FileGetTime(@ScriptFullPath, 0, 0)
_FileWriteToLine(@ScriptFullPath, $lnRes[2], '#AutoIt3Wrapper_Res_Field=Release date|' & $rd[2] & '.' & $rd[1] & '.' & $rd[0], 1)
Global $dateRlse = $rd[2] & '.' & $rd[1] & '.' & $rd[0]
FileSetTime(@ScriptFullPath, $rd[0] & $rd[1] & $rd[2] & $rd[3] & $rd[4] & $rd[5], 0)
EndIf
EndFunc ;==>FileInfo
Func msg($txt = '', $ms = 1500, $title = -1, $ttX = -1, $ttY = -2, $icn = 1, $tray = -1)
If $ms >= 0 And $ms < 250 Then $ms = 250
If $ms = -1 Then $ms = 1500
If $ms < -1 Then
$ms = Abs($ms)
$clr = 1
EndIf
If $title = -1 Then
$scN = StringSplit(@ScriptName, '.')
$title = $scN[1]
If IsDeclared('fnScript') And IsDeclared('sVer') Then $title = $fnScript & ' ' & $sVer
EndIf
If $ttX = -1 Then $ttX = Int(@DesktopWidth / 2)
If $ttY = -1 Then $ttY = Int(@DesktopHeight / 2)
If $ttY = -2 Then $ttY = @DesktopHeight - 64
If $icn = 2 Then $txt = $l_msgWarning & @CRLF & $txt
If $icn = 3 Then $txt = $l_msgError & @CRLF & $txt
If $tray = -1 Then ToolTip($txt, $ttX, $ttY, $title, $icn, 2)
If $tray = 1 Then TrayTip($title, $txt, $ms, $icn)
Do
$ms = $ms - 200
Sleep(200)
If _Timer_GetIdleTime() < 200 And $esc = 1 Then $brk = 1
If $brk = 1 Then
LogoffBrk()
ExitLoop
EndIf
Until $ms <= 0
If IsDeclared('clr') Then ToolTip('')
EndFunc ;==>msg
Func OnExit()
BlockInput(0)
If Not IsDeclared('runAlr') Then
If IsDeclared('monterGif') And FileExists($monterGif) Then FileDelete($monterGif)
If IsDeclared('icon') And FileExists($icon) Then FileDelete($icon)
If IsDeclared('icon1') And FileExists($icon1) Then FileDelete($icon1)
If IsDeclared('icon2') And FileExists($icon2) Then FileDelete($icon2)
If FileExists($ini) Then IniWrite($ini, 'Main', 'currentLangFile', StringTrimLeft($currFileLang, StringInStr($currFileLang, '\', 0, -1)))
EndIf
EndFunc ;==>OnExit