Jump to content

This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies. Find out more here. X


Password Protected Auto Ejector

  • This topic is locked This topic is locked
3 replies to this topic

#1 Solarlight27



  • Active Members
  • Pip
  • 50 posts

Posted 06 March 2012 - 09:33 PM

FYI Here's the code to my collection of programs which do in fact encrypt my flash drive IF I have the checker program in my startup folder:

My problem here is that the project runs fine the first time around, however when i replug in my flash drive the program doesn't work, it doesn't ask for a password again like it should in theory.
I've tried loops, for statements, recursion (as seen below) and the project either creates infinite windows which comes just short of killing my CP with lag or it just runs the one time and that's it.

So I'm looking towards you the experienced Autoit community members, any ideas/suggestions?

Below is the code to the lot of my programs that are run with one another:

Thank You All!

Checks to see if my drive is plugged in via seeing if a file exits on a removable drive
#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker #Obfuscator_Parameters=/cs #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** Local $letter = DriveGetDrive("REMOVABLE") Func _check() For $i = 1 To $letter[0] If FileExists(StringUpper($letter[$i]) & "AutoIt3ProgramsRe-AnimationSequence(LOCKED).exe") Then   Run (StringUpper($letter[$i]) & "AutoIt3ProgramsRe-AnimationSequence(LOCKED).exe")   ;Run ("C:UserskidsAppDataRoamingMicrosoftWindowsStart MenuProgramsStartupChecker.exe") Else   Sleep(180000)   _check() EndIf Next EndFuncFor $i = 1 To $letter[0] Local $file = FileExists(StringUpper($letter[$i]) & "AutoIt3ProgramsRe-AnimationSequence(LOCKED).exe") If $file <> 0 Then _check() EndIf Next

It's what "encrypts" my drive
Local $Password = InputBox("Security Check", "Enter your password.", "", "*") Local $letter = DriveGetDrive("REMOVABLE") For $i = 1 To $letter[0] If ($Password = "password") Then BlockInput(1) Run(StringUpper($letter[$i]) & "Re-Animation Sequence.exe") Sleep(2000) BlockInput(0) Exit Else Run(StringUpper($letter[$i]) & "AutoIt3Programsruneject.exe") Sleep(2000) Exit EndIf Next While 1     MouseGetPos()     Sleep(5) WEnd

It runs the ejection program and inserts the correct text and commands to make it run
Local $letter = DriveGetDrive("REMOVABLE") For $i = 1 To $letter[0] Run(StringUpper($letter[$i]) & "AutoIt3Programseject.exe") If WinActive("Ejecting...") == 0 Then Do If WinActive("Ejecting...") == 0 Then Run("F:AutoIt3Programseject.exe") ElseIf WinActive("Ejecting...") == 0 Then Run("G:AutoIt3Programseject.exe") ElseIf WinActive("Ejecting...") == 0 Then Run("H:AutoIt3Programseject.exe") ElseIf WinActive("Ejecting...") == 0 Then Run("I:AutoIt3Programseject.exe") ElseIf WinActive("Ejecting...") == 0 Then Run("J:AutoIt3Programseject.exe") Else MsgBox(4096, "DriveGetDrive", "It appears an error occurred.") EndIf Until (WinActive("Ejecting...") <> 0) EndIf BlockInput(1) Send ("{BACKSPACE}{BACKSPACE}{BACKSPACE}" & StringUpper($letter[$i]) & "{ENTER}") Sleep (1000) Send ("{ENTER}") BlockInput(0) Next

Re-Animation Sequence
It runs my 2 bats that run my frequently used files
Local $letter = DriveGetDrive("REMOVABLE") For $i = 1 To $letter[0] If @error Then Exit ElseIf FileExists(StringUpper($letter[$i]) & "Re-AnimationSequence2.bat") Then     Run (StringUpper($letter[$i]) & "Re-AnimationSequence2.bat") ElseIf FileExists(StringUpper($letter[$i]) & "Re-AnimationSequence.bat") Then     Run (StringUpper($letter[$i]) & "Re-AnimationSequence.bat") EndIf If FileExists(StringUpper($letter[$i]) & "AutoIt3ProgramshotkeyKEY.exe") Then     Run (StringUpper($letter[$i]) & "AutoIt3ProgramshotkeyKEY.exe") EndIf Next

eject (trust me it works and isn't this issue..)
Got if from Autoit forums example section

#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <WinApi.au3> ;Prototypes ;BOOL EjectVolume(TCHAR cDriveLetter); ;HANDLE OpenVolume(TCHAR cDriveLetter); ;BOOL LockVolume(HANDLE hVolume); ;BOOL DismountVolume(HANDLE hVolume); ;BOOL PreventRemovalOfVolume(HANDLE hVolume, BOOL fPrevent); ;BOOL AutoEjectVolume(HANDLE hVolume); ;BOOL CloseVolume(HANDLE hVolume); ;StringFormat Output $szVolumeFormat = ".%s" $szRootFormat = "%s" $szErrorFormat = "Error %d: %sn" ;------------------------------------------ ;Arbitrary variables ;;Global Const $INVALID_HANDLE_VALUE = 0 ;------------------------------------------ ;DeviceIoControl Contants Global Const $FSCTL_LOCK_VOLUME = int(0x090018) Global Const $FSCTL_DISMOUNT_VOLUME = int(0x00090020) Global Const $IOCTL_STORAGE_EJECT_MEDIA  = int(0x002D4808) Global Const $IOCTL_STORAGE_MEDIA_REMOVAL = int(0x002D4804) ;------------------------------------------ ;Retry Constants Global Const $LOCK_TIMEOUT = 10000     ; 10 Seconds Global Const $LOCK_RETRIES = 20 $OpenVolume = InputBox("Ejecting...", "Enter the drive to eject", "G:") ConsoleWrite("Trying to Eject the drive " & EjectVolume($OpenVolume) & @crlf) Func ReportError($szMsg)     ConsoleWrite(StringFormat($szErrorFormat, _WinAPI_GetLastErrorMessage (), $szMsg) & @CRLF)     Exit EndFunc   ;==>ReportError Func OpenVolume($cDriveLetter)     ;HANDLE hVolume     ;UINT uDriveType     ;TCHAR szVolumeName[8]     ;TCHAR szRootName[5]     ;DWORD dwAccessFlags     $szRootName = StringFormat($szRootFormat, $cDriveLetter)     $uDriveType = DriveGetType($szRootName);     ConsoleWrite($szRootName & @tab & $uDriveType & @crlf)     Switch $uDriveType         Case "Removable"             $dwAccessFlags = 6         Case "CDROM"             $dwAccessFlags = 2         Case Else             ConsoleWrite("Cannot eject.  Drive type is incorrect." & @CRLF)             Return $INVALID_HANDLE_VALUE     EndSwitch     $szVolumeName = StringFormat($szVolumeFormat, $cDriveLetter)     ;$szVolumeName = $szVolumeFormat & $cDriveLetter     ConsoleWrite($szVolumeName & @crlf )     $hVolume = _WinAPI_CreateFile ($szVolumeName, 2,$dwAccessFlags, 6)     #cs         hVolume = CreateFile(   szVolumeName,         dwAccessFlags,         FILE_SHARE_READ | FILE_SHARE_WRITE,         NULL,         OPEN_EXISTING,         0,         NULL );     #ce     If ($hVolume == $INVALID_HANDLE_VALUE) Then ReportError("CreateFile");     Return $hVolume; EndFunc   ;==>OpenVolume Func CloseVolume($hVolume)     Return _WinAPI_CloseHandle ($hVolume); EndFunc   ;==>CloseVolume Func LockVolume($hVolume)     Local $dwBytesReturned     Local $dwSleepAmount     Local $nTryCount     local $iRead     $dwSleepAmount = $LOCK_TIMEOUT / $LOCK_RETRIES;     ; Do this in a loop until a timeout period has expired     For $nTryCount = 0 To $nTryCount < $LOCK_RETRIES         If _Device_Control($hVolume, $FSCTL_LOCK_VOLUME, $iRead) Then             Return True         Else             Sleep($dwSleepAmount);         EndIf     Next     Return False; EndFunc   ;==>LockVolume Func DismountVolume($hVolume)     ConsoleWrite("Dismount " & $hVolume & @crlf)     Local $dwBytesReturned, $iRead     local $aResult = _Device_Control($hVolume, $FSCTL_DISMOUNT_VOLUME, $iRead)     msgbox(0,"",$aResult)     Return $aResult     ;Return $dwBytesReturned EndFunc   ;==>DismountVolume Func PreventRemovalOfVolume($hVolume, $fPreventRemoval)     Local $dwBytesReturned     Local $aResult     Local $lpInbuffer,$nInBufferSize,$lpOutBuffer,$nOutBufferSize,$lpOverlapped     $PMRBUFFER = DllStructCreate("bool PreventMediaRemoval")     DllStructSetData($PMRBUFFER,"PreventMediaRemoval",$fPreventRemoval)     $lpBytesReturned    = DllStructCreate("int Read")     $pRead   = DllStructGetPtr($lpBytesReturned, "Read")     $aResult = Dllcall("kernel32.dll","int","DeviceIoControl","hwnd",$hVolume,"uint",$IOCTL_STORAGE_MEDIA_REMOVAL,"ptr",DllStructGetPtr($PMRBUFFER),"uint",DllStructGetSize($PMRBUFFER), _     "ptr",$lpOutBuffer,"uint",$nOutBufferSize,"ptr",$pRead,"ptr",$lpOverlapped)     if $aResult = 0 then msgbox(0,"",_WinAPI_GetLastErrorMessage())     Return $aResult <> 0      ;& PMRBuffer, sizeof (PREVENT_MEDIA_REMOVAL),     ;NULL, 0,     ; & dwBytesReturned,     ;NULL); EndFunc   ;==>PreventRemovalOfVolume Func AutoEjectVolume($hVolume)     Local $aResult, $iRead;     $aResult = _Device_Control($hVolume, $IOCTL_STORAGE_EJECT_MEDIA, $iRead)     Return $aResult EndFunc   ;==>AutoEjectVolume Func EjectVolume($cDriveLetter)     Local $hVolume;     Local $fRemoveSafely = False;     Local $fAutoEject = False;     ; Open the volume.     $hVolume = OpenVolume($cDriveLetter);     If $hVolume == $INVALID_HANDLE_VALUE Then Return False     ; Lock and dismount the volume.     If LockVolume($hVolume) And DismountVolume($hVolume) Then         $fRemoveSafely = True;         ConsoleWrite("Volume Locked and Dismounted, trying to Eject " & @crlf)         ; Set prevent removal to false and Eject the volume.         If PreventRemovalOfVolume($hVolume, False) And AutoEjectVolume($hVolume) Then             $fAutoEject = True;         EndIf     Else         ConsoleWrite("Volume can't be locked or dismounted, please close possible opened files" & @crlf)     EndIf     ; Close the volume so other processes can use the drive.     If CloseVolume($hVolume) = False Then         Return False;     EndIf     If $fAutoEject Then         ConsoleWrite(StringFormat("Media in drive %s has been ejected safely.n", $cDriveLetter))     Else         If $fRemoveSafely Then             ConsoleWrite(StringFormat("Media in drive %s can be safely removed.n", $cDriveLetter))         EndIf     EndIf     Return True; EndFunc   ;==>EjectVolume Func _Device_Control($hDevice, $dwIoControlAutoit, ByRef $iRead)     Local $aResult     Local $lpInbuffer,$nInBufferSize,$lpOutBuffer,$nOutBufferSize,$lpOverlapped     $tRead   = DllStructCreate("int Data")     $aResult = Dllcall("kernel32.dll","int","DeviceIoControl","hwnd",$hDevice,"uint",$dwIoControlAutoit,"ptr",$lpInBuffer,"uint",0, _     "ptr",$lpOutBuffer,"uint",0,"ptr",DllStructGetPtr($tRead),"ptr",$lpOverlapped)     $iRead   = DllStructGetData($tRead, "Data")     ConsoleWrite("Device Control " & $iRead & @CRLF)     Return $aResult<>0 EndFunc   ;==>_Device_Control

Edited by chause4, 07 March 2012 - 09:08 PM.

#2 guinness


    I've a handle on the fiction

  • Developers
  • 15,704 posts

Posted 06 March 2012 - 09:39 PM

You got that last code from here >> http://www.autoitscript.com/forum/topic/48585-autoejectit-v-10/page__view__findpost__p__365605 it's always best to link where you got the code from.

Example List: _AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUISetIcon()_Icon_Clear()/_Icon_Set()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingFileInstallrGeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIGetBkColor()LockFile()PasswordValidPasteBinPosts Per DayPreExpandQueue()SciTE JumpSHELLHOOKShunting-YardSignature CreatorStack()StringAddLF()/StringStripLF()StringEOLToCRLF()WM_COPYDATAMore Examples...
Updated: 12/04/2014

#3 Solarlight27



  • Active Members
  • Pip
  • 50 posts

Posted 07 March 2012 - 09:09 PM

Yup, got it, but even still and one know why I'm having these issues??

#4 Melba23


    I'm old - what's your excuse?

  • Moderators
  • 19,879 posts

Posted 23 March 2012 - 09:25 PM


Thread locked because you have now opened a new one. Stick to just the one in future. :oops:

StringSize - Automatically size controls to fit text                                                               ExtMsgBox - A user customisable replacement for MsgBox
Toast - Small GUIs which pop out of the Systray                                                                Marquee - Scrolling tickertape GUIs
Scrollbars - Automatically sized scrollbars with a single command                                   GUIFrame - Subdivide GUIs into many adjustable frames
GUIExtender - Extend and retract multiple sections within a GUI                                      NoFocusLines - Remove the dotted focus lines from buttons, sliders, radios and checkboxes
ChooseFileFolder - Single and multiple selections from specified path tree structure      Notify - Small notifications on the edge of the display
Date_Time_Convert - Easily convert date/time formats, including the language               GUIListViewEx - Insert, delete, move, drag, sort and edit ListView items

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users