#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_OutFile=Desktop_Locker.exe #AutoIt3Wrapper_icon=Desktop_Locker.ico #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_UseAnsi=y #AutoIt3Wrapper_Res_Comment=- #AutoIt3Wrapper_Res_Description=Desktop_Locker.exe #AutoIt3Wrapper_Res_Fileversion=0.2.0.0 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=n #AutoIt3Wrapper_Res_LegalCopyright=AZJIO #AutoIt3Wrapper_Res_Language=1049 #AutoIt3Wrapper_Run_AU3Check=n #AutoIt3Wrapper_Run_Obfuscator=y #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0 #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3" #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; @AZJIO 8.05.2011 (AutoIt3_v3.3.6.1) ; HotKeySet("{ESC}", "_Exit") ; Func _Exit() ; Exit ; EndFunc #NoTrayIcon #include #include #include #Include #Include Global Const $ES_CENTER = 1 Global Const $ES_PASSWORD = 32 Global Const $tagRECT = "long Left;long Top;long Right;long Bottom" Global $Password='', $k=0, $aSet, $Gui1, $ValSld Global $DW=@DesktopWidth, $DH=@DesktopHeight ; En $LngTitle='Desktop Locker' $LngAbout='About' $LngVer='Version' $LngCopy='Copy' $LngSite='Site' $LngLDP='Desktop Locker' $LngPsw='Password to unlock' $LngChB='Hide password' ; $LngMs1='You want to lock the screen?' $LngErPw1='The password is incorrect ..try again.' $LngErPw2='Please enter a password to unlock the screen'&@CRLF&'and press Enter.' $LngERe='Display output and restart' $LngDly='Delay' $LngMsB='Block mouse' $LngTrn='Transparency' $LngDsc='Desktop' $LngQLn='Quick Launch' $LngMPr='Main Menu' $LngLnk='Shortcut on' $LngSTp='Lock desktop with password' $LngLnkH='Create a shortcut with an encrypted password' $LngRgt='Startup' $LngRgtH='Losing a password will require professional help' $LngMs2='Message' $LngMs3='The key in the registry is missing, perhaps not right to write to the registry' $LngMs4='Key successfully added' $LngMs5='The key was successfully removed' $LngMs6='The key is exists, maybe not the right to delete' $LngErr='Error' $Lang_dll = DllOpen("kernel32.dll") $UserIntLang=DllCall ( $Lang_dll, "int", "GetUserDefaultUILanguage" ) If Not @error Then $UserIntLang=Hex($UserIntLang[0],4) DllClose($Lang_dll) ; Ru ; если русская локализация, то русский язык If $UserIntLang = 0419 Then ; $LngTitle='Desktop Locker' $LngAbout='О программе' $LngVer='Версия' $LngCopy='Копировать' $LngSite='Сайт' $LngLDP='Заблокировать рабочий стол' $LngPsw='Пароль для разблокировки' $LngChB='Скрыть пароль' ; $LngMs1='Вы хотите заблокировать просмотр и управление Рабочего стола?' $LngErPw1='Пароль неверный, попробуйте снова.' $LngErPw2='Пожалуйста, введите пароль для разблокировки экрана'&@CRLF&'и нажмите Enter.' $LngERe='Отображать выход и перезагрузка' $LngDly='Задержка' $LngMsB='Блокировать мышь' $LngTrn='Прозрачность' $LngDsc='Рабочий стол' $LngQLn='Быстрый запуск' $LngMPr='Главное меню' $LngLnk='Ярлык на' $LngSTp='Заблокировать рабочий стол с паролем' $LngLnkH='Создать ярлык с шифрованным паролем' $LngRgt='Автозагрузка' $LngRgtH='Потеря пароля потребует помощи профессионала' $LngMs2='Сообщение' $LngMs3='Ключ в реестре отсутствует, возможно нет прав на запись в реестр' $LngMs4='Ключ успешно добавлен' $LngMs5='Ключ успешно удалён' $LngMs6='Ключ существует, возможно нет прав на удаление' $LngErr='Ошибка' EndIf Global $Ini = @ScriptDir & '\DesktopLocker.ini' If Not FileExists($Ini) And DriveStatus(StringLeft(@ScriptDir, 1))<>'NOTREADY' Then _FileW() EndIf Func _FileW($i='1|0|0|1|255') $file = FileOpen($Ini,2) FileWrite($file, $i) FileClose($file) EndFunc Func _MsgFile() $file = FileOpen($Ini, 0) $Initext = FileRead($file) FileClose($file) $aSet = StringSplit($Initext, '|') If $aSet[0]<>5 Then $Initext='1|0|0|1|255' _FileW($Initext) $aSet = StringSplit($Initext, '|') EndIf Local $ChPsHd, $Inp0, $Inp1, $Inp2, $msg, $OK, $Password='' $Gui1 = GUICreate($LngLDP, 290, 270, -1, -1, $WS_CAPTION+$WS_SYSMENU) If Not @compiled Then GUISetIcon(@ScriptDir&'\Desktop_Locker.ico') GUICtrlCreateGroup($LngPsw, 5, 5, 200, 72) ; GUICtrlCreateLabel($LngPsw, 10, 13, 190, 17) $Inp1=GUICtrlCreateInput('', 10, 25, 190, 22) $Inp2=GUICtrlCreateInput('', 10, 25, 190, 22, $ES_PASSWORD) $ChPsHd=GUICtrlCreateCheckbox($LngChB, 10, 55, 170, 15) If $aSet[1] = $GUI_CHECKED Then GUICtrlSetState($Inp2, $GUI_FOCUS) GUICtrlSetState($Inp1, $GUI_HIDE) $Inp0=$Inp2 GUICtrlSetState($ChPsHd, $GUI_CHECKED) Else GUICtrlSetState($Inp1, $GUI_FOCUS) GUICtrlSetState($Inp2, $GUI_HIDE) $Inp0=$Inp1 GUICtrlSetState($ChPsHd, $GUI_UNCHECKED) EndIf GUICtrlCreateGroup('', 5, 78, 200, 79) $ShtDwn=GUICtrlCreateCheckbox($LngERe, 10, 90, 190, 15) If $aSet[2]=$GUI_CHECKED Then GUICtrlSetState(-1, 1) $DelayL=GUICtrlCreateLabel($LngDly&' :', 10, 113, 70, 17) $Delay=GUICtrlCreateCombo('', 80, 110, 60) GUICtrlSetData(-1,'0|1|10|30|60|120', '0') GUICtrlSetData(-1,$aSet[3], $aSet[3]) $MsBloc=GUICtrlCreateCheckbox($LngMsB, 10, 137, 190, 15) If $aSet[4]=$GUI_CHECKED Then GUICtrlSetState($MsBloc, $GUI_CHECKED) Else GUICtrlSetState($MsBloc, $GUI_UNCHECKED) EndIf $About=GUICtrlCreateButton('@', 235, 30, 30, 30) GUICtrlSetTip(-1, $LngAbout) GUICtrlSetFont(-1,13) GUICtrlCreateIcon ("shell32.dll", 48, 230, 91, 48, 48) $OK=GUICtrlCreateButton('OK', 215, 190, 60, 50) GUICtrlSetState(-1, $GUI_DEFBUTTON) GUICtrlSetFont(-1,13) If GUICtrlRead($ShtDwn)=4 Then GUICtrlSetState($Delay, $GUI_DISABLE) GUICtrlSetState($DelayL, $GUI_DISABLE) EndIf GUICtrlCreateGroup($LngTrn, 5, 159, 200, 50) $slider1 = GUICtrlCreateSlider(6, 173, 163, 30) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetTip(-1, $LngTrn) GUICtrlSetData(-1, 255-$aSet[5]) $ValSld=GUICtrlCreateLabel(255-$aSet[5], 169, 178, 30, 17) GUICtrlSetFont(-1,12) WinSetTrans($Gui1,"",$aSet[5]) GUICtrlCreateLabel($LngLnk&' :', 10, 218, 60, 17) $LinkCombo=GUICtrlCreateCombo('', 65, 215, 112, 22, $CBS_DROPDOWNLIST) GUICtrlSetData(-1, $LngDsc&'|'&$LngQLn&'|'&$LngMPr, $LngDsc) $CreateLnk=GUICtrlCreateButton('>', 180, 215, 22, 24) GUICtrlSetTip(-1, $LngLnkH) $Registry=GUICtrlCreateCheckbox($LngRgt, 10, 245, 180, 15) GUICtrlSetTip(-1, $LngRgtH) RegRead("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 'Desktop_Locker_456') If Not @Error Then GUICtrlSetState($Registry, $GUI_CHECKED) GUISetState() While 1 $msg = GUIGetMsg() Switch $msg Case $Registry ; Автозагрузка If GUICtrlRead($Registry)=$GUI_CHECKED Then $Password = GUICtrlRead($Inp0) If $Password = '' Then GUICtrlSetState($Registry, $GUI_UNCHECKED) _ColorError($Inp0) GUICtrlSetState($Inp0, $GUI_FOCUS) ContinueLoop EndIf $aSet[3] = GUICtrlRead($Delay) $aSet[4] = GUICtrlRead($MsBloc) $aSet[5]=255-GUICtrlRead($slider1) $Initext=$aSet[1]&'|'&$aSet[2]&'|'&$aSet[3]&'|'&$aSet[4]&'|'&$aSet[5] $bEncrypted = _StringEncrypt(1, $Password, $Password)&'J'&_StringEncrypt(1, $Initext, 'dk3wo6e9ru') RegWrite("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 'Desktop_Locker_456', "REG_SZ", '"'&@ScriptFullPath&'" '&$bEncrypted) RegRead("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 'Desktop_Locker_456') If @Error Then MsgBox(0, $LngErr, $LngMs3) GUICtrlSetState($Registry, $GUI_UNCHECKED) Else MsgBox(0, $LngMs2, $LngMs4) EndIf Else RegDelete("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 'Desktop_Locker_456') RegRead("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 'Desktop_Locker_456') If @Error Then MsgBox(0, $LngMs2, $LngMs5) Else MsgBox(0, $LngErr, $LngMs6) GUICtrlSetState($Registry, $GUI_CHECKED) EndIf EndIf Case $CreateLnk ; создание ярлыка $Password = GUICtrlRead($Inp0) If $Password = '' Then _ColorError($Inp0) GUICtrlSetState($Inp0, $GUI_FOCUS) ContinueLoop EndIf $aSet[3] = GUICtrlRead($Delay) $aSet[4] = GUICtrlRead($MsBloc) $aSet[5]=255-GUICtrlRead($slider1) $Initext=$aSet[1]&'|'&$aSet[2]&'|'&$aSet[3]&'|'&$aSet[4]&'|'&$aSet[5] $bEncrypted = _StringEncrypt(1, $Password, $Password)&'J'&_StringEncrypt(1, $Initext, 'dk3wo6e9ru') Switch GUICtrlRead($LinkCombo) Case $LngDsc $PathLnk=@DesktopDir & "\Desktop_Locker.lnk" Case $LngQLn $PathLnk=@AppDataDir&'\Microsoft\Internet Explorer\Quick Launch\Desktop_Locker.lnk' Case $LngMPr $PathLnk=@ProgramsDir & "\Desktop_Locker.lnk" EndSwitch FileCreateShortcut(@ScriptDir & "\Desktop_Locker.exe", $PathLnk, @ScriptDir, $bEncrypted, $LngSTp, @ScriptDir & "\Desktop_Locker.exe") Case $MsBloc, $Delay GUICtrlSetState($Inp0, $GUI_FOCUS) Case $OK ; Заблокировать рабочий стол $Password = GUICtrlRead($Inp0) If $Password = '' Then _ColorError($Inp0) GUICtrlSetState($Inp0, $GUI_FOCUS) ContinueLoop EndIf $Password=_StringEncrypt(1, $Password, $Password) $aSet[3] = GUICtrlRead($Delay) $aSet[4] = GUICtrlRead($MsBloc) $aSet[5]=255-GUICtrlRead($slider1) $Initext1=$aSet[1]&'|'&$aSet[2]&'|'&$aSet[3]&'|'&$aSet[4]&'|'&$aSet[5] If $Initext1<>$Initext Then _FileW($Initext1) GUIDelete($Gui1) ExitLoop Case $ShtDwn If GUICtrlRead($ShtDwn)=$GUI_CHECKED Then $stt=$GUI_ENABLE $aSet[2]=$GUI_CHECKED Else $stt=$GUI_DISABLE $aSet[2]=$GUI_UNCHECKED EndIf GUICtrlSetState($Delay, $stt) GUICtrlSetState($DelayL, $stt) GUICtrlSetState($Inp0, $GUI_FOCUS) Case $ChPsHd If GUICtrlRead($ChPsHd)=$GUI_CHECKED Then GUICtrlSetData($Inp2,GUICtrlRead($Inp1)) GUICtrlSetState($Inp2, $GUI_SHOW) GUICtrlSetState($Inp1, $GUI_HIDE) $Inp0=$Inp2 $aSet[1]=$GUI_CHECKED Else GUICtrlSetData($Inp1,GUICtrlRead($Inp2)) GUICtrlSetState($Inp1, $GUI_SHOW) GUICtrlSetState($Inp2, $GUI_HIDE) $Inp0=$Inp1 $aSet[1]=$GUI_UNCHECKED EndIf GUICtrlSetState($Inp0, $GUI_FOCUS) Case $About _About() Case -3 Exit EndSwitch WEnd Return $Password EndFunc GUIRegisterMsg(0x0114 , "WM_HSCROLL") If $CmdLine[0]>0 Then $aTmp = StringSplit($CmdLine[1], 'J') If @error Or $aTmp[0]<>2 Then MsgBox(0, $LngErr, $LngErr) Exit EndIf $Password = $aTmp[1] $bEncrypted = _StringEncrypt(0, $aTmp[2], 'dk3wo6e9ru') $aSet = StringSplit($bEncrypted, '|') If $aSet[0]<>5 Then $Initext='1|0|0|1|255' $aSet = StringSplit($Initext, '|') EndIf Else $Password = _MsgFile() EndIf HotKeySet('{ENTER}', '_Enter') $GuiLocked = GUICreate($LngTitle, $DW, $DH, 0, 0, $WS_POPUP, $WS_EX_TOPMOST) GUISetBkColor (0x0) GUICtrlCreateIcon ("shell32.dll", 48, $DW / 2 - 16, $DH / 2-190, 48, 48) GUISetFont(12, 800) $WrongPw = GUICtrlCreateLabel("", $DW / 2+155, $DH / 2 - 115, 30, 20) GUICtrlSetColor(-1, 0xFF0000) GUICtrlSetBkColor(-1, 0x0) GUICtrlCreateLabel($LngTitle, $DW / 2 - 150, $DH / 2 - 105, 300, 50, $ES_CENTER) GUICtrlSetFont(-1, 30, 800) _Color(-1) GUICtrlCreateLabel($LngErPw2, $DW / 2 - 230, $DH / 2 - 50, 460, 40, $ES_CENTER) _Color(-1) $InputPw = GUICtrlCreateInput("", $DW / 2 - 100, $DH / 2 , 200, 20, BitOR($ES_CENTER, $ES_PASSWORD), 0) _Color(-1) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") GUICtrlSetState(-1, $GUI_FOCUS) $ShtDw=GUICtrlCreateButton('1', $DW-200, $DH-100, 36, 32, 0x0040) GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 28, 1) GUICtrlSetState(-1, $GUI_HIDE) $ShtRe=GUICtrlCreateButton('1', $DW-140, $DH-97, 36, 26, 0x0040) GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -113, 1) GUICtrlSetState(-1, $GUI_HIDE) If $aSet[2]=$GUI_CHECKED Then If $aSet[3]=0 Then _Button() Else AdlibRegister('_Delay', $aSet[3]*60000) EndIf EndIf WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_HIDE) WinSetTrans($GuiLocked, '', $aSet[5]) GUISetState(@SW_SHOW, $GuiLocked) If $aSet[4] = 1 Then _MouseTrap($DW, $DH) While 1 Sleep(50) $msg = GUIGetMsg() If Not WinActive($GuiLocked) Then If ProcessExists('taskmgr.exe') Then ProcessClose('taskmgr.exe') WinActivate($GuiLocked) If $aSet[4] = 1 Then _MouseTrap($DW, $DH) EndIf Switch $msg Case $ShtDw Shutdown(1) Case $ShtRe Shutdown(2) EndSwitch WEnd Func _ColorError($Inp0) For $i = 1 to 4 GUICtrlSetBkColor ($Inp0, 0xff0000) Sleep(40) GUICtrlSetBkColor ($Inp0, -1 ) Sleep(40) Next EndFunc Func _Enter() $tmp=GUICtrlRead($InputPw) If _StringEncrypt(0, $Password, $tmp) == $tmp Then WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_SHOW) If $aSet[4] = 1 Then _MouseTrap() Exit Else $k+=1 GUICtrlSetData($WrongPw, $k) GUICtrlSetData($InputPw, "") AdlibRegister('_Tip', 50) EndIf EndFunc Func _Delay() AdlibUnRegister('_Delay') _Button() EndFunc Func _Button() GUICtrlSetState($ShtDw, $GUI_SHOW) GUICtrlSetState($ShtRe, $GUI_SHOW) EndFunc Func _Color($i) GUICtrlSetColor($i, 0xFFFFFF) GUICtrlSetBkColor($i, 0) EndFunc Func _Tip() AdlibUnRegister('_Tip') ToolTip($LngErPw1, $DW/2, $DH/2+20, "", 3, 3) Sleep(2000) ToolTip("") EndFunc ; UDF GuiEdit.au3 + Misc.au3 Func _MouseTrap($iLeft = 0, $iTop = 0, $iRight = 0, $iBottom = 0) Local $aResult If @NumParams == 0 Then $aResult = DllCall("user32.dll", "bool", "ClipCursor", "ptr", 0) If @error Or Not $aResult[0] Then Return SetError(1, _WinAPI_GetLastError(), False) Else If @NumParams == 2 Then $iRight = $iLeft + 1 $iBottom = $iTop + 1 EndIf Local $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, "Left", $iLeft) DllStructSetData($tRect, "Top", $iTop) DllStructSetData($tRect, "Right", $iRight) DllStructSetData($tRect, "Bottom", $iBottom) $aResult = DllCall("user32.dll", "bool", "ClipCursor", "ptr", DllStructGetPtr($tRect)) If @error Or Not $aResult[0] Then Return SetError(2, _WinAPI_GetLastError(), False) EndIf Return True EndFunc ;==>_MouseTrap Func _WinAPI_GetLastError($curErr = @error, $curExt = @extended) Local $aResult = DllCall("kernel32.dll", "dword", "GetLastError") Return SetError($curErr, $curExt, $aResult[0]) EndFunc ;==>_WinAPI_GetLastError Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam) #forceref $Msg, $wParam, $lParam Local $nScrollCode = BitAND($wParam, 0x0000FFFF) $aSet[5] = 255-BitShift($wParam, 16) If $nScrollCode = 5 Then WinSetTrans($Gui1,"",$aSet[5]) GUICtrlSetData($ValSld, 255-$aSet[5]) EndIf Return 'GUI_RUNDEFMSG' EndFunc Func _ChildCoor($Gui, $w, $h, $c=0, $d=0) Local $aWA = _WinAPI_GetWorkingArea(), _ $GP = WinGetPos($Gui), _ $wgcs=WinGetClientSize($Gui) Local $dLeft=($GP[2]-$wgcs[0])/2, _ $dTor=$GP[3]-$wgcs[1]-$dLeft If $c = 0 Then $GP[0]=$GP[0]+($GP[2]-$w)/2-$dLeft $GP[1]=$GP[1]+($GP[3]-$h-$dLeft-$dTor)/2 EndIf If $d>($aWA[2]-$aWA[0]-$w-$dLeft*2)/2 Or $d>($aWA[3]-$aWA[1]-$h-$dLeft+$dTor)/2 Then $d=0 If $GP[0]+$w+$dLeft*2+$d>$aWA[2] Then $GP[0]=$aWA[2]-$w-$d-$dLeft*2 If $GP[1]+$h+$dLeft+$dTor+$d>$aWA[3] Then $GP[1]=$aWA[3]-$h-$dLeft-$dTor-$d If $GP[0]<=$aWA[0]+$d Then $GP[0]=$aWA[0]+$d If $GP[1]<=$aWA[1]+$d Then $GP[1]=$aWA[1]+$d $GP[2]=$w $GP[3]=$h Return $GP EndFunc Func _WinAPI_GetWorkingArea() Local Const $SPI_GETWORKAREA = 48 Local $stRECT = DllStructCreate("long; long; long; long") Local $SPIRet = DllCall("User32.dll", "int", "SystemParametersInfo", "uint", $SPI_GETWORKAREA, "uint", 0, "ptr", DllStructGetPtr($stRECT), "uint", 0) If @error Then Return 0 If $SPIRet[0] = 0 Then Return 0 Local $sLeftArea = DllStructGetData($stRECT, 1) Local $sTopArea = DllStructGetData($stRECT, 2) Local $sRightArea = DllStructGetData($stRECT, 3) Local $sBottomArea = DllStructGetData($stRECT, 4) Local $aRet[4] = [$sLeftArea, $sTopArea, $sRightArea, $sBottomArea] Return $aRet EndFunc Func _About() Local $GP=_ChildCoor($Gui1, 210, 180) GUISetState(@SW_DISABLE, $Gui1) Local $font="Arial", $msg Local $Gui2 = GUICreate($LngAbout, $GP[2], $GP[3], $GP[0], $GP[1], 0x00C00000+0x00080000, -1, $Gui1) ; WS_CAPTION+WS_SYSMENU GUISetBkColor (0xffca48) GUICtrlCreateLabel($LngTitle, 0, 0, 210, 63, 0x01+0x0200) GUICtrlSetFont (-1,14, 600, -1, $font) GUICtrlSetColor(-1,0xa13d00) GUICtrlSetBkColor (-1, 0xfbe13f) GUICtrlCreateLabel ("-", 2,64,208,1,0x10) GUISetFont (9, 600, -1, $font) GUICtrlCreateLabel($LngVer&' 0.2 8.05.2011', 15, 100, 210, 17) GUICtrlCreateLabel($LngSite&':', 15, 115, 40, 17) $url=GUICtrlCreateLabel('http://azjio.ucoz.ru', 52, 115, 170, 17) GUICtrlSetCursor(-1, 0) GUICtrlSetColor(-1, 0x0000ff) GUICtrlCreateLabel('WebMoney:', 15, 130, 85, 17) $WbMn=GUICtrlCreateLabel('R939163939152', 90, 130, 125, 17) GUICtrlSetColor(-1,0xa21a10) GUICtrlSetTip(-1, $LngCopy) GUICtrlSetCursor(-1, 0) GUICtrlCreateLabel('Copyright AZJIO © 2010', 15, 145, 210, 17) GUISetState(@SW_SHOW, $Gui2) While 1 $msg = GUIGetMsg() Select Case $msg = $url ShellExecute ('http://azjio.ucoz.ru') Case $msg = $WbMn ClipPut('R939163939152') Case $msg = -3 GUISetState(@SW_ENABLE, $Gui1) GUIDelete($Gui2) ExitLoop EndSelect WEnd EndFunc