Jump to content

cambradford

Members
  • Posts

    9
  • Joined

  • Last visited

cambradford's Achievements

Seeker

Seeker (1/7)

0

Reputation

  1. It's a function I need to implement for a larger Java package.
  2. public static void runScript() throws Exception { try { ProcessBuilder pb = new ProcessBuilder("C:\\Program Files (x86)\\AutoIt3\\AutoIt3.exe\"", "\"C:\\Users\\Cameron\\workspace\\truecryptgui.au3\""); Process p = pb.start(); System.out.println("Script executed, TrueCrypt volume created!"); } catch (IOException e) { System.out.println("exception happened - here's what I know: "); e.printStackTrace(); System.exit(-1); } } This is what I have right now, it prompts me with a window to select truecryptgui.au3 manually, however if I run from the cmd -> "C:Program Files (x86)AutoIt3AutoIt3.exe" "C:UsersCameronworkspacetruecryptgui.au3" it functions automatically how I'd like it to. Does anybody know what I'm missing in my Java code to get this to perform correctly?
  3. Volume creation is not yet supported on Windows cmd, only mac/linux, therefore that is why I am trying to automate the GUI. What does not make sense, is I should be able to edit the $TC_Container_Location variable like I edited the other variables and it should place it wherever I set the path. Thank you for the inputBox reference, also I am doing a project of spinning up multiple truecrypt volumes and want to automate the process to increase speed.
  4. Hey guys, I am very unfamiliar with AutoIt3 and scripting in general. I've been playing with a piece of code I found on these forums a while back trying to automate TrueCrypt volume creation on Windows. The script performs as it should but I have two problems that I could use guidance on. 1) Specifying where the TrueCrypt volume is stored at. Right now it goes into the directory of the script. 2) Getting around the iniReader, storing the password in a settings.ini file is not the best approach, are there ways to prompt the user for this input? (as well as other configs) Here is what I'm working with #include <winapi.au3> #include <Constants.au3> AutoItSetOption("WinDetectHiddenText", 1) Opt("WinTitleMatchMode", 3) Global $PID_TC_Format = 0 Global $Encryption = iniRead("C:\Users\Cameron\workspace\settings.ini", "settings", "EncryptionAlgorithm", "AES") Global $Hash = iniRead("C:\Users\Cameron\workspace\settings.ini", "settings", "HashAlgorithm", "RIPEMD-160") Global $Size = iniRead("C:\Users\Cameron\workspace\settings.ini", "settings", "SizeInKB", "10000") Global $FileSystemType = iniRead("C:\Users\Cameron\workspace\settings.ini", "settings", "FileSystemType", "NTFS") Global $Password = iniRead("C:\Users\Cameron\workspace\settings.ini", "settings", "Password", "password") Global $Location = iniRead("C:\Users\Cameron\workspace\settings.ini", "settings", "Location", "location") ConsoleWrite("_TC_Container_Create("") returned " & _TC_Container_Create("") & @TAB & @error & @CRLF) Func _TC_Container_Create($TC_Container_Location = $Location, $TC_Container_Encryption = $Encryption, $TC_Container_Hash = $Hash, $TC_Container_Size_KB = $Size, $TC_Container_Password = $Password, $TC_Container_Filesystem = $FileSystemType) Local $b_TC_Volume_Creation_Wizard_failed = False, $hWnd_TC_Volume_Creation_Wizard = 0, $TC_Volume_Creation_Wizard_Error_Code = 0 ; NTFS min Size = 2829 KB ; FAT min Size = 275 KB ; ControlSetText() if it's just text you're sending. It's much faster. If Not $TC_Container_Location Then $TC_Container_Location = @ScriptDir & "\Test.tc" If $TC_Container_Size_KB < 275 Then $TC_Container_Size_KB = 275 If $TC_Container_Size_KB < 2829 Then $TC_Container_Filesystem = "FAT" If FileExists($TC_Container_Location) Then If MsgBox(262420, "TCMyFiles", "The Target File" & @CRLF & @CRLF & $TC_Container_Location & @CRLF & @CRLF & "already exists. Do you want to overwrite the file?") <> 6 Then SetError(99) Return 0 EndIf FileDelete($TC_Container_Location) Else $TC_Check_Location = FileOpen($TC_Container_Location, 10) If $TC_Check_Location <> -1 Then FileClose($TC_Check_Location) FileDelete($TC_Container_Location) Else SetError(96) Return 0 EndIf EndIf $PID_TC_Format = Run('"C:\Program Files\TrueCrypt\TrueCrypt Format.exe"', @ScriptDir, @SW_HIDE) ;$PID_TC_Format = Run('"' & @ScriptDir & '\TrueCrypt\TrueCrypt Format.exe"', @ScriptDir, @SW_SHOW) ProcessWait($PID_TC_Format, 5) If $PID_TC_Format = 0 Then MsgBox(0, 'Error', '"TrueCrypt Format.exe" new PID could not be detected.') SetError(98) Return 0 Else If WinWait("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:CustomDlg]", "", 10) = 0 Then MsgBox(0, 'Error', '"TrueCrypt Volume Creation Wizard" window not found...') SetError(97) Return 0 Else $hWnds = WinList("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:CustomDlg]", "") For $I = 0 To UBound($hWnds) - 1 If WinGetProcess($hWnds[$I][1]) = $PID_TC_Format Then $hWnd_TC_Volume_Creation_Wizard = $hWnds[$I][1] Next If $hWnd_TC_Volume_Creation_Wizard <> 0 Then ConsoleWrite('Step 01: Found TrueCrypt Volume Creation Wizard hWnd: ' & $hWnd_TC_Volume_Creation_Wizard & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 1 Else $b_TC_Volume_Creation_Wizard_failed = True EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Encrypt the system partition or entire system drive") Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 02: Create File Container' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 2 ExitLoop Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Type") Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 03: Select Standard Type' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 3 ExitLoop Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Location") Then ControlSetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]', $TC_Container_Location, 1) If ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]') = $TC_Container_Location Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 04: Set Container location to ' & $TC_Container_Location & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 4 ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Encryption Options") Then ControlCommand($hWnd_TC_Volume_Creation_Wizard, "", "[CLASS:ComboBox; INSTANCE:1]", "SelectString", $TC_Container_Encryption) If ControlCommand($hWnd_TC_Volume_Creation_Wizard, "", "[CLASS:ComboBox; INSTANCE:1]", "GetCurrentSelection", "") = $TC_Container_Encryption Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 05: Set Encryption Algorithm to ' & $TC_Container_Encryption & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 5 ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Size") Then If _WinAPI_GetWindowLong(ControlGetHandle($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:6]'), $GWL_STYLE) <> 1342373897 Then ControlClick($hWnd_TC_Volume_Creation_Wizard, "", ControlGetHandle($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:6]')) ElseIf _WinAPI_GetWindowLong(ControlGetHandle($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:6]'), $GWL_STYLE) = 1342373897 Then ConsoleWrite('Step 06: Select KB as Container Size' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 6 ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Size") Then ControlSetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]', $TC_Container_Size_KB, 1) If ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]') = $TC_Container_Size_KB Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 07: Set Container Size to ' & $TC_Container_Size_KB & ' KB' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 7 ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Password") Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:6]') ControlSetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]', $TC_Container_Password, 1) If ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]') = $TC_Container_Password Then ControlSetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:2]', $TC_Container_Password, 1) If ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:2]') = $TC_Container_Password Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 08: Set Container Password to "' & $TC_Container_Password & '"' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 8 ExitLoop EndIf EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd ControlClick("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", '', '[CLASS:Button; INSTANCE:1]') EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If WinExists("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", "") = 1 Then ControlClick("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", '', '[CLASS:Button; INSTANCE:1]') If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Format") Then ControlCommand($hWnd_TC_Volume_Creation_Wizard, "", "[CLASS:ComboBox; INSTANCE:1]", "SelectString", $TC_Container_Filesystem) If ControlCommand($hWnd_TC_Volume_Creation_Wizard, "", "[CLASS:ComboBox; INSTANCE:1]", "GetCurrentSelection", "") = $TC_Container_Filesystem Then ConsoleWrite('Step 09: Set Container File Format to ' & $TC_Container_Filesystem & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 9 ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Container_Creation_Progress = "" $TC_Container_Creation_Progress_Save = "" $TC_Timer = TimerInit() While 1 $TC_Container_Creation_Progress = StringReplace(ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Static; INSTANCE:12]'), "%", "") If ($TC_Container_Creation_Progress <> $TC_Container_Creation_Progress_Save) And $TC_Container_Creation_Progress <> 100 Then $TC_Timer = TimerInit() $TC_Container_Creation_Progress_Save = $TC_Container_Creation_Progress ConsoleWrite("Step 10: Container creation progress: " & $TC_Container_Creation_Progress & "%" & @CRLF) EndIf If $TC_Container_Creation_Progress = 100.000 Then ConsoleWrite("Step 10: Container creation progress: " & $TC_Container_Creation_Progress & "%" & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 10 ExitLoop EndIf If TimerDiff($TC_Timer) > 5000 Then ConsoleWrite("Step 10: No progress in 5 seconds... failure?" & @CRLF) $b_TC_Volume_Creation_Wizard_failed = True ExitLoop EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While 1 If WinExists("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", "The TrueCrypt volume has been successfully created.") = 1 Then ControlClick("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", '', '[CLASS:Button; INSTANCE:1]') ConsoleWrite("Step 11: Container creation finished successfully" & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 11 ExitLoop EndIf If TimerDiff($TC_Timer) > 15000 Then ConsoleWrite("Step 11: Progress at 100% but TC failed to notify about success for 15 seconds...failure?" & @CRLF) $b_TC_Volume_Creation_Wizard_failed = True ExitLoop EndIf WEnd EndIf EndIf EndIf SetError($TC_Volume_Creation_Wizard_Error_Code) If $b_TC_Volume_Creation_Wizard_failed = True Then Return 0 Else Return 1 EndIf EndFunc ;==>_TC_Container_Create Func OnAutoItExit() ProcessClose($PID_TC_Format) EndFunc ;==>OnAutoItExit
  5. ^Yes it is. The text file will just be in the format of ContainerLocation C:SomePathHere FileName SomeFileName etc.. So just 5-6 lines with two pieces of text, and I only need to retrieve the second piece.
  6. This is what I'd like to accomplish: Have a preconfigured text file of properties such as volumeproperties.txt -> read these values in to be used in Func _TC_Container_Create($TC_Container_Location, $TC_Container_Encryption = "AES", ... etc) then of course execute _TC_Container_Create func and create the Container with the values that were specified in volumeproperties.txt ^This is all that I need to accomplish here^ Secondly, regarding the confusion, in my function declaration $TC_Container_Location is not given some = "*abirtrary something*" like the other variables. Is there a clear reason for this, or am I able to implement a variable (in this case, the path where I'd like the volume to be created)
  7. Thank you very much BrewManNH! I have a few questions I'd like to throw out as well, considering I am not quite familiar with AutoIt or scripting and I just need to throw something together quickly. Will getFileProperty() scan a folder for my properties txt file, in my case, readthis.txt, and pull from there? Is it possible to set a container location instead of it defaulting to the folder that holds the script file? Just a bit confused here, any advice regarding what I'm trying to accomplish would be great. Thanks all.
  8. Here is what I'm working with, thanks for the speedy reply I want to run FileGetProperty to pull values from some text file that will go into my _TC_Container_Create to replace the variables that are hard-coded in. I think that shouldn't be too much of a pain, but for some reason my _TC_Container_Create() func will execute before the other. #include <winapi.au3> #include <Constants.au3> AutoItSetOption("WinDetectHiddenText", 1) Opt("WinTitleMatchMode", 3) Global $PID_TC_Format = 0 ConsoleWrite("_FileGetProperty returned " & _FileGetProperty("") & @TAB & @error & @crlf) ConsoleWrite("_TC_Container_Create("") returned " & _TC_Container_Create("") & @TAB & @error & @crlf) #include <File.au3> ; only used for the example script, not needed for the UDF #include <Array.au3> ; only used for the example script, not needed for the UDF $sFolder = FileSelectFolder("Select a folder to scan", "") $sFolder &= "" $aFiles = _FileListToArray($sFolder) For $I = 1 To $aFiles[0] $aDetails = _FileGetProperty($sFolder & $aFiles[$I]) ; Returns an array with all properties of the file _ArrayDisplay($aDetails) ConsoleWrite("File size of " & $sFolder & $aFiles[$I] & " = " & _FileGetProperty($sFolder & $aFiles[$I], "size") & @CRLF) ; displays in the console the Size of the file Next Func _FileGetProperty($FGP_Path, Const $FGP_PROPERTY = "") $FGP_Path = StringRegExpReplace($FGP_Path, '"C:\Users\Cameron\volumes\readthis.txt', "") ; strip the quotes, if any from the incoming string If Not FileExists($FGP_Path) Then Return SetError(1, 0, "") ; path not found Local Const $objShell = ObjCreate("Shell.Application") If @error Then Return SetError(3, 0, "") Local $iPropertyCount = 300 ; arbitrary number used, Windows 7 only returns 288 properties, Windows XP only returns 38 (future proofing) Local Const $FGP_File = StringTrimLeft($FGP_Path, StringInStr($FGP_Path, "\", 0, -1)) Local Const $FGP_Dir = StringTrimRight($FGP_Path, StringLen($FGP_File) + 1) Local Const $objFolder = $objShell.NameSpace($FGP_Dir) Local Const $objFolderItem = $objFolder.Parsename($FGP_File) Local $Return = "", $iError = 0 If $FGP_PROPERTY Then For $I = 0 To $iPropertyCount If $objFolder.GetDetailsOf($objFolder.Items, $I) = $FGP_PROPERTY Then $Return = $objFolder.GetDetailsOf($objFolderItem, $I) EndIf Next If $Return = "" Then $iError = 2 EndIf Else Local $av_ret[$iPropertyCount + 1][2] = [[0]] For $I = 1 To $iPropertyCount If $objFolder.GetDetailsOf($objFolder.Items, $I) Then $av_ret[$I][0] = $objFolder.GetDetailsOf($objFolder.Items, $I - 1) $av_ret[$I][1] = $objFolder.GetDetailsOf($objFolderItem, $I - 1) $av_ret[0][0] += 1 EndIf Next ReDim $av_ret[$av_ret[0][0] + 1][2] If Not $av_ret[1][0] Then $iError = 2 $av_ret = $Return Else $Return = $av_ret EndIf EndIf Return SetError($iError, 0, $Return) EndFunc ;==>_FileGetProperty Func _TC_Container_Create($TC_Container_Location, $TC_Container_Encryption = "AES", $TC_Container_Hash = "RIPEMD-160", $TC_Container_Size_KB = 10000, $TC_Container_Password = "test", $TC_Container_Filesystem = "NTFS") Local $b_TC_Volume_Creation_Wizard_failed = False, $hWnd_TC_Volume_Creation_Wizard = 0, $TC_Volume_Creation_Wizard_Error_Code = 0 ; NTFS min Size = 2829 KB ; FAT min Size = 275 KB ; ControlSetText() if it's just text you're sending. It's much faster. If Not $TC_Container_Location Then $TC_Container_Location = @ScriptDir & "\Test.tc" If $TC_Container_Size_KB < 275 Then $TC_Container_Size_KB = 275 If $TC_Container_Size_KB < 2829 Then $TC_Container_Filesystem = "FAT" If FileExists($TC_Container_Location) Then If MsgBox(262420, "TCMyFiles", "The Target File" & @CRLF & @CRLF & $TC_Container_Location & @CRLF & @CRLF & "already exists. Do you want to overwrite the file?") <> 6 Then SetError(99) Return 0 EndIf FileDelete($TC_Container_Location) Else $TC_Check_Location = FileOpen($TC_Container_Location,10) if $TC_Check_Location <> -1 then FileClose($TC_Check_Location) FileDelete($TC_Container_Location) Else SetError(96) Return 0 endif EndIf $PID_TC_Format = Run('"C:\Program Files\TrueCrypt\TrueCrypt Format.exe"', @ScriptDir, @SW_HIDE) ;$PID_TC_Format = Run('"' & @ScriptDir & '\TrueCrypt\TrueCrypt Format.exe"', @ScriptDir, @SW_SHOW) ProcessWait($PID_TC_Format, 5) If $PID_TC_Format = 0 Then MsgBox(0, 'Error', '"TrueCrypt Format.exe" new PID could not be detected.') SetError(98) Return 0 Else If WinWait("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:CustomDlg]", "", 10) = 0 Then MsgBox(0, 'Error', '"TrueCrypt Volume Creation Wizard" window not found...') SetError(97) Return 0 Else $hWnds = WinList("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:CustomDlg]", "") For $i = 0 To UBound($hWnds) - 1 If WinGetProcess($hWnds[$i][1]) = $PID_TC_Format Then $hWnd_TC_Volume_Creation_Wizard = $hWnds[$i][1] Next If $hWnd_TC_Volume_Creation_Wizard <> 0 Then ConsoleWrite('Step 01: Found TrueCrypt Volume Creation Wizard hWnd: ' & $hWnd_TC_Volume_Creation_Wizard & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 1 Else $b_TC_Volume_Creation_Wizard_failed = True EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Encrypt the system partition or entire system drive") Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 02: Create File Container' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 2 ExitLoop Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Type") Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 03: Select Standard Type' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 3 ExitLoop Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Location") Then ControlSetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]', $TC_Container_Location, 1) If ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]') = $TC_Container_Location Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 04: Set Container location to ' & $TC_Container_Location & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 4 ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Encryption Options") Then ControlCommand($hWnd_TC_Volume_Creation_Wizard, "", "[CLASS:ComboBox; INSTANCE:1]", "SelectString", $TC_Container_Encryption) If ControlCommand($hWnd_TC_Volume_Creation_Wizard, "", "[CLASS:ComboBox; INSTANCE:1]", "GetCurrentSelection", "") = $TC_Container_Encryption Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 05: Set Encryption Algorithm to ' & $TC_Container_Encryption & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 5 ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Size") Then If _WinAPI_GetWindowLong(ControlGetHandle($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:6]'), $GWL_STYLE) <> 1342373897 Then ControlClick($hWnd_TC_Volume_Creation_Wizard, "", ControlGetHandle($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:6]')) ElseIf _WinAPI_GetWindowLong(ControlGetHandle($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:6]'), $GWL_STYLE) = 1342373897 Then ConsoleWrite('Step 06: Select KB as Container Size' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 6 ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Size") Then ControlSetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]', $TC_Container_Size_KB, 1) If ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]') = $TC_Container_Size_KB Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 07: Set Container Size to ' & $TC_Container_Size_KB & ' KB' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 7 ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Password") Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:6]') ControlSetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]', $TC_Container_Password, 1) If ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:1]') = $TC_Container_Password Then ControlSetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:2]', $TC_Container_Password, 1) If ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Edit; INSTANCE:2]') = $TC_Container_Password Then ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ConsoleWrite('Step 08: Set Container Password to "' & $TC_Container_Password & '"' & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 8 ExitLoop EndIf EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd ControlClick("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", '', '[CLASS:Button; INSTANCE:1]') EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While TimerDiff($TC_Timer) < 5000 If WinExists("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", "") = 1 Then ControlClick("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", '', '[CLASS:Button; INSTANCE:1]') If StringInStr(WinGetText($hWnd_TC_Volume_Creation_Wizard), "Volume Format") Then ControlCommand($hWnd_TC_Volume_Creation_Wizard, "", "[CLASS:ComboBox; INSTANCE:1]", "SelectString", $TC_Container_Filesystem) If ControlCommand($hWnd_TC_Volume_Creation_Wizard, "", "[CLASS:ComboBox; INSTANCE:1]", "GetCurrentSelection", "") = $TC_Container_Filesystem Then ConsoleWrite('Step 09: Set Container File Format to ' & $TC_Container_Filesystem & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 9 ControlClick($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Button; INSTANCE:3]') ExitLoop EndIf Else $b_TC_Volume_Creation_Wizard_failed = True EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Container_Creation_Progress = "" $TC_Container_Creation_Progress_Save = "" $TC_Timer = TimerInit() While 1 $TC_Container_Creation_Progress = StringReplace(ControlGetText($hWnd_TC_Volume_Creation_Wizard, '', '[CLASS:Static; INSTANCE:12]'), "%", "") If ($TC_Container_Creation_Progress <> $TC_Container_Creation_Progress_Save) AND $TC_Container_Creation_Progress <> 100 Then $TC_Timer = TimerInit() $TC_Container_Creation_Progress_Save = $TC_Container_Creation_Progress ConsoleWrite("Step 10: Container creation progress: " & $TC_Container_Creation_Progress & "%" & @CRLF) EndIf If $TC_Container_Creation_Progress = 100.000 Then ConsoleWrite("Step 10: Container creation progress: " & $TC_Container_Creation_Progress & "%" & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 10 ExitLoop endif If TimerDiff($TC_Timer) > 5000 Then ConsoleWrite("Step 10: No progress in 5 seconds... failure?" & @CRLF) $b_TC_Volume_Creation_Wizard_failed = True ExitLoop EndIf WEnd EndIf If $b_TC_Volume_Creation_Wizard_failed = False Then $TC_Timer = TimerInit() While 1 If WinExists("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", "The TrueCrypt volume has been successfully created.") = 1 Then ControlClick("[TITLE:TrueCrypt Volume Creation Wizard; CLASS:#32770]", '', '[CLASS:Button; INSTANCE:1]') ConsoleWrite("Step 11: Container creation finished successfully" & @CRLF) $TC_Volume_Creation_Wizard_Error_Code = 11 ExitLoop EndIf If TimerDiff($TC_Timer) > 15000 Then ConsoleWrite("Step 11: Progress at 100% but TC failed to notify about success for 15 seconds...failure?" & @CRLF) $b_TC_Volume_Creation_Wizard_failed = True ExitLoop EndIf WEnd EndIf EndIf EndIf SetError($TC_Volume_Creation_Wizard_Error_Code) If $b_TC_Volume_Creation_Wizard_failed = true Then Return 0 Else Return 1 EndIf EndFunc ;==>_TC_Container_Create Func OnAutoItExit() ProcessClose($PID_TC_Format) EndFunc ;==>OnAutoItExit
  9. How does AutoIt handle multiple functions when it comes to which one to execute? I have a getProperties func and a func that creates a volume. I need to get the properties from a text file and plug those into certain variables in my volume func. No matter how I seem to order the executions, the volume func always runs first, which is completely useless. Could someone give me some guidance or general advice with whats going on here? Many thanks.
×
×
  • Create New...