#NoTrayIcon #region: - Options Opt('MustDeclareVars', 1) Opt('TrayIconDebug', 0) Opt('TrayIconHide', 1) #endregion HotKeySet('^{BREAK}', '_Pro_Exit') HotKeySet('{PGUP}', '_Disable_Settings') HotKeySet('{PGDN}', '_Enable_Settings') Global $sLogFilePacth = 'C:\options_control.log' Global $sMsg = 'Попытка изминения глобальных настроек' Global $sProgramPath = 'C:\proga.exe' Global $fEnableSettings, $iTimeEnableSettings $fEnableSettings = 0 $iTimeEnableSettings = 1000*60*2; 2 min If StringRight($sProgramPath, 1) == '\' Then $sProgramPath = StringTrimRight($sProgramPath, 1) Run($sProgramPath) #region: - Sleep, Exit While 1 Sleep(100) _Check_Settings_Win() _Check_Run_Program() WEnd Func _Pro_Exit() Exit EndFunc #endregion Func _Check_Settings_Win() If $fEnableSettings == 1 Then Return Local $STitle = WinGetTitle('[CLASS:Active]') If NOT StringInStr($STitle, 'Options') Then Return; с этим неадо быть осторожней. Лучше сделать 100% сопоставление с заголовком окна WinClose($STitle) FileWriteLine($sLogFilePacth, StringFormat ('[%s.%s.%4s] [%s:%s:%s] [%s] %s', @MDAY, @MON, @YEAR, @HOUR, @MIN, @SEC, @UserName, $sMsg)) MsgBox(16, 'Внимание!', 'У вашей учетной записи недостаточно прав доступа' & @CRLF & 'для изсинения глобальных настроек' & @CRLF & @CRLF & 'Пожалуйста, обратитесь к Администратору') EndFunc Func _Check_Run_Program() If ProcessExists(StringRegExpReplace($sProgramPath, '.+?\\(.+)', '\1')) Then Return Run('shutdown -l -t 60', @SystemDir, @SW_HIDE) EndFunc Func _Disable_Settings() $fEnableSettings = 0 EndFunc Func _Enable_Settings() $fEnableSettings = 1 Sleep($iTimeEnableSettings) $fEnableSettings = 0 EndFunc |