Archive
Archive for March, 2016
AutoIt script to export a Testing Anywhere tamx codebase to text files
2016/03/01
Leave a comment
- Being confronted with a legacy codebase of over 750 tamx automated test scripts and
- the limited Testing Anywhere IDE .
- Normal view – essentially links to property dialogues – without helpful search,
- Expert view not being used with no cross-file, let alone codebase search, and just another partial view of the actual underlying code which is only available encrypted in the tamx files;
- Server Backup diff feature rudimentary and not being used.
- I came up with this AutoIT script (Testing Anywhere – but not Anything – won’t allow automation of its own window) which:
- collects, given a flat file listing of their paths, the Testing Anywhere (tested with 9.2) automated test scripts (tamx),
- from a list of networked (and drive-letter-mapped: fill out hash to guide the path translation) test automation computers,
- to a local directory (root=$localpathpattern, plus remote path) as
- .txt, using TA‘s built-in export function) and
- .tax (using line-by-line copy from TA expert view).
- To improve resilience despite automation errors, the script keeps track of files exported in 2 ways, through
- a list tamxlistdone.txt
- comparison of file dates and exports only tamx files updated since last save as txt/tax.
- You can try the script out opening the tamx files in a text editor instead of the Testing Anywhere editor if you set $isdryrun = True.
- Compile this script to an AutoIt exe and make it a Scheduled Task to update your searchable codebase overnight.
- Benefits:
- Use for better cross automation project search (e.g. for magic strings and other literals, like log messages emitted)
- and to put into better source control than TA provides: Export the .txt./.tax into a Git repository, to be able to monitor your progress/collaborators.
- Sorry: no round tripping.
- There are some stubs in the script to implement uploading changes, since Expert view allows line-by-line paste from the clipboard.
- However, it seems Expert view represents only another partial view of the underlying code which a textual paste is likely to break.
- In addition, even with test scripts that are run, switching to Expert View can result in intractable syntax errors that prevent user from saving, even from switching back to normal view without.
- Had to obfuscate the script – message me if you cannot figure how to fill in the config section at the top.
Global Const $0 = 1
Global Const $1 = 0
Global Const $2 = 1
Global Const $3 = 2
Func _0($4, $5, $6 = 0, $7 = 0, $8 = 0, $9 = "wparam", $a = "lparam", $b = "lresult")
Local $c = DllCall("user32.dll", $b, "SendMessageW", "hwnd", $4, "uint", $5, $9, $6, $a, $7)
If @error Then Return SetError(@error, @extended, "")
If $8 >= 0 And $8 _0
Global Const $d = 1
Global Const $e = 2
Global Const $f = 0
Global Const $g = 1
Global Const $h = 2
Global Const $i = 0
Global Const $j = 1
Func _2(Const $k = @error, Const $l = @extended)
Local $c = DllCall("kernel32.dll", "dword", "GetLastError")
Return SetError($k, $l, $c[0])
EndFunc ;==>_2
Global Const $m = "Debug Window hidden text"
Global $n = "AutoIt Debug Report"
Global $o = 0
Global $p = True, $q = True
Global $r = 0
Global $s
Global $t = False
Func _8(Const $u, Const $k = @error, Const $l = @extended)
If IsNumber($u) = 0 And IsString($u) = 0 And IsBool($u) = 0 Then Return SetError(1, 0, 0)
If _a($u) = 0 Then Return SetError(3, 0, 0)
Return SetError($k, $l, 1)
EndFunc ;==>_8
Func _a($v, $w = False, $x = False, Const $k = @error, $l = @extended)
If $o 6 Then Return SetError($k, $l, 0)
$l = _k($v, $w)
If $x Then Exit
Return SetError($k, $l, 1)
EndFunc ;==>_a
Func _h()
Local $y = Opt("WinDetectHiddenText", $0)
Local $0z = WinExists($n, $m)
If $0z Then
If $r = 0 Then
$r = ControlGetHandle($n, $m, "Edit1")
$p = False
EndIf
EndIf
Opt("WinDetectHiddenText", $y)
$q = False
If Not $p Then Return 0
Local Const $10 = 0x00CF0000
Local Const $11 = 0x00100000
Local Const $12 = 0x00200000
Local Const $13 = 2048
Local Const $14 = 0xC5
Local Const $15 = 32
Local $16 = 580, $17 = 280
GUICreate($n, $16, $17, -1, -1, $10)
Local $18 = GUICtrlCreateLabel($m, 0, 0, 1, 1)
GUICtrlSetState($18, $15)
Local $19 = GUICtrlCreateEdit("", 4, 4, $16 - 8, $17 - 8, BitOR($11, $12, $13))
$r = GUICtrlGetHandle($19)
GUICtrlSetBkColor($19, 0xFFFFFF)
GUICtrlSendMsg($19, $14, 0, 0)
GUISetState()
$p = True
Return 1
EndFunc ;==>_h
#Au3Stripper_Off
Func __Debug_ReportWindowWrite($sData)
#Au3Stripper_On
If $q Then _h()
Local Const $1a = 0x000E
Local Const $1b = 0xB1
Local Const $1c = 0xC2
Local $1d = _0($r, $1a, 0, 0, 0, "int", "int")
_0($r, $1b, $1d, $1d, 0, "int", "int")
_0($r, $1c, True, $v, 0, "int", "wstr")
EndFunc ;==>__Debug_ReportWindowWrite
Func _j()
Local $0z = WinExists($n)
If $0z Then
If $r = 0 Then
$r = WinGetHandle($n)
Return 0
EndIf
EndIf
Local $1e = Run("Notepad.exe")
$r = WinWait("[CLASS:Notepad]")
If $1e WinGetProcess($r) Then
Return SetError(3, 0, 0)
EndIf
WinActivate($r)
WinSetTitle($r, "", String($n))
Return 1
EndFunc ;==>_j
#Au3Stripper_Off
Func __Debug_ReportNotepadWrite($sData)
#Au3Stripper_On
If $r = 0 Then _j()
ControlCommand($r, "", "Edit1", "EditPaste", String($v))
EndFunc ;==>__Debug_ReportNotepadWrite
Func _k($v, $w = False, $1f = @extended)
Local $1g = @CRLF
If $t And ($v "") Then $v = @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " " & $v
If $w Then
$1f = _2()
Local Const $1h = 0x1000
Local $c = DllCall("kernel32.dll", "dword", "FormatMessageW", "dword", $1h, "ptr", 0, "dword", $1f, "dword", 0, "wstr", "", "dword", 4096, "ptr", 0)
$1g = " : " & $c[5]
EndIf
$v &= $1g
Local $1i = BlockInput(1)
BlockInput(0)
$v = StringReplace($v, "'", "''")
Execute($s & "'" & $v & "')")
If Not $1i Then BlockInput(1)
Return $1f
EndFunc ;==>_k
Func _r(ByRef $1j, $1k)
If Not IsArray($1j) Then Return SetError(1, 0, -1)
Local $1l = UBound($1j, $2) - 1
If IsArray($1k) Then
If UBound($1k, $1) 1 Or UBound($1k, $2) = Number($1o[1]) Then
$1m = $1o[1] - 1
Do
$1m += 1
$1k &= $1m & ";"
Until $1m = $1o[2]
EndIf
EndSwitch
Next
$1k = StringSplit(StringTrimRight($1k, 1), ";")
EndIf
If $1k[1] $1l Then Return SetError(5, 0, -1)
Local $1q = 0
Switch UBound($1j, $1)
Case 1
For $1p = 1 To $1k[0]
$1j[$1k[$1p]] = ChrW(0xFAB1)
Next
For $1r = 0 To $1l
If $1j[$1r] == ChrW(0xFAB1) Then
ContinueLoop
Else
If $1r $1q Then
$1j[$1q] = $1j[$1r]
EndIf
$1q += 1
EndIf
Next
ReDim $1j[$1l - $1k[0] + 1]
Case 2
Local $1s = UBound($1j, $3) - 1
For $1p = 1 To $1k[0]
$1j[$1k[$1p]][0] = ChrW(0xFAB1)
Next
For $1r = 0 To $1l
If $1j[$1r][0] == ChrW(0xFAB1) Then
ContinueLoop
Else
If $1r $1q Then
For $1t = 0 To $1s
$1j[$1q][$1t] = $1j[$1r][$1t]
Next
EndIf
$1q += 1
EndIf
Next
ReDim $1j[$1l - $1k[0] + 1][$1s + 1]
Case Else
Return SetError(2, 0, False)
EndSwitch
Return UBound($1j, $2)
EndFunc ;==>_r
Func _14(Const ByRef $1j, $1u, $1v = 0, $1w = 0, $1x = 0, $1y = 0, $1z = 1, $20 = -1, $21 = False)
If $1v = Default Then $1v = 0
If $1w = Default Then $1w = 0
If $1x = Default Then $1x = 0
If $1y = Default Then $1y = 0
If $1z = Default Then $1z = 1
If $20 = Default Then $20 = -1
If $21 = Default Then $21 = False
If Not IsArray($1j) Then Return SetError(1, 0, -1)
Local $1l = UBound($1j) - 1
If $1l = -1 Then Return SetError(3, 0, -1)
Local $1s = UBound($1j, $3) - 1
Local $22 = False
If $1y = 2 Then
$1y = 0
$22 = True
EndIf
If $21 Then
If UBound($1j, $1) = 1 Then Return SetError(5, 0, -1)
If $1w $1s Then $1w = $1s
If $1v $1w Then Return SetError(4, 0, -1)
Else
If $1w $1l Then $1w = $1l
If $1v $1w Then Return SetError(4, 0, -1)
EndIf
Local $23 = 1
If Not $1z Then
Local $24 = $1v
$1v = $1w
$1w = $24
$23 = -1
EndIf
Switch UBound($1j, $1)
Case 1
If Not $1y Then
If Not $1x Then
For $1p = $1v To $1w Step $23
If $22 And VarGetType($1j[$1p]) VarGetType($1u) Then ContinueLoop
If $1j[$1p] = $1u Then Return $1p
Next
Else
For $1p = $1v To $1w Step $23
If $22 And VarGetType($1j[$1p]) VarGetType($1u) Then ContinueLoop
If $1j[$1p] == $1u Then Return $1p
Next
EndIf
Else
For $1p = $1v To $1w Step $23
If $1y = 3 Then
If StringRegExp($1j[$1p], $1u) Then Return $1p
Else
If StringInStr($1j[$1p], $1u, $1x) > 0 Then Return $1p
EndIf
Next
EndIf
Case 2
Local $25
If $21 Then
$25 = $1l
If $20 > $25 Then $20 = $25
If $20 $25 Then $20 = $25
If $20 0 Then Return $1p
Else
If StringInStr($1j[$1p][$1t], $1u, $1x) > 0 Then Return $1p
EndIf
EndIf
Next
EndIf
Next
Case Else
Return SetError(2, 0, -1)
EndSwitch
Return SetError(6, 0, -1)
EndFunc ;==>_14
Global Const $26 = 0
Global Const $27 = 1
Global Const $28 = 0
Global Const $29 = 2
Global Const $2a = 0
Global Const $2b = 1
Global Const $2c = 2
Global Const $2d = 4
Func _1x($2e, ByRef $2f, $2g = $2b, $2h = "")
$2f = 0
If $2g = Default Then $2g = $2b
If $2h = Default Then $2h = ""
Local $2i = True
If BitAND($2g, $2c) Then
$2i = False
$2g -= $2c
EndIf
Local $2j = $f
If BitAND($2g, $2d) Then
$2j = $g
$2g -= $2d
EndIf
Local $2k = 0
If $2g $2b Then
$2g = $2a
$2k = $h
EndIf
If $2h Then
Local $2l = FileReadToArray($2e)
If @error Then Return SetError(@error, 0, 0)
Local $1l = UBound($2l) + $2g
If $2i Then
Local $1s = UBound(StringSplit($2l[0], $2h, $2j + $h))
Local $2m[$1l][$1s]
Local $2n, $2o
For $1p = 0 To $1l - $2g - 1
$2o = StringSplit($2l[$1p], $2h, $2j + $h)
$2n = UBound($2o)
If $2n $1s Then
Return SetError(3, 0, 0)
EndIf
For $1t = 0 To $2n - 1
$2m[$1p + $2g][$1t] = $2o[$1t]
Next
Next
If $1s _1x
Func _1y($2e, Const ByRef $1j, $2r = Default, $2s = Default, $2h = "|")
Local $8 = 0
If Not IsArray($1j) Then Return SetError(2, 0, $8)
Local $2t = UBound($1j, $1)
If $2t > 2 Then Return SetError(4, 0, 0)
Local $2u = UBound($1j) - 1
If $2s = Default Or $2s > $2u Then $2s = $2u
If $2r $2s Then Return SetError(5, 0, $8)
If $2h = Default Then $2h = "|"
Local $2p = $2e
If IsString($2e) Then
$2p = FileOpen($2e, $29)
If $2p = -1 Then Return SetError(1, 0, $8)
EndIf
Local $2v = 0
$8 = 1
Switch $2t
Case 1
For $1p = $2r To $2s
If Not FileWrite($2p, $1j[$1p] & @CRLF) Then
$2v = 3
$8 = 0
ExitLoop
EndIf
Next
Case 2
Local $2w = ""
For $1p = $2r To $2s
$2w = $1j[$1p][0]
For $1t = 1 To UBound($1j, $3) - 1
$2w &= $2h & $1j[$1p][$1t]
Next
If Not FileWrite($2p, $2w & @CRLF) Then
$2v = 3
$8 = 0
ExitLoop
EndIf
Next
EndSwitch
If IsString($2e) Then FileClose($2p)
Return SetError($2v, 0, $8)
EndFunc ;==>_1y
Func _24($2e, ByRef $2x, ByRef $2y, ByRef $2z, ByRef $30)
Local $1j = StringRegExp($2e, "^\h*((?:\\\\\?\\)*(\\\\[^\?\/\\]+|[A-Za-z]:)?(.*[\/\\]\h*)?((?:[^\.\/\\]|(?(?=\.[^\/\\]*\.)\.))*)?([^\/\\]*))$", $j)
If @error Then
ReDim $1j[5]
$1j[0] = $2e
EndIf
$2x = $1j[1]
If StringLeft($1j[2], 1) == "/" Then
$2y = StringRegExpReplace($1j[2], "\h*[\/\\]+\h*", "\/")
Else
$2y = StringRegExpReplace($1j[2], "\h*[\/\\]+\h*", "\\")
EndIf
$1j[2] = $2y
$2z = $1j[3]
$30 = $1j[4]
Return $1j
EndFunc ;==>_24
Global Const $31 = '{66087055-AD66-4C7C-9A18-38A2310B8337}'
Global Const $32 = '{E09D739D-CCD4-44EE-8EBA-3FBF8BE4FC58}'
Global Const $33 = '{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}'
Global Const $34 = 4
Global Const $35 = 2
Global Const $36 = 0x00021808
Global Const $37 = "struct;long X;long Y;endstruct"
Global Const $38 = "struct;long Left;long Top;long Right;long Bottom;endstruct"
Global Const $39 = "struct;word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds;endstruct"
Global Const $3a = "struct;byte GUID[16];ulong NumberOfValues;ulong Type;ptr Values;endstruct"
Global Const $3b = "uint Count;" & $3a
Global Const $3c = "uint Version;ptr Callback;bool NoThread;bool NoCodecs"
Global Const $3d = "byte CLSID[16];byte FormatID[16];ptr CodecName;ptr DllName;ptr FormatDesc;ptr FileExt;" & "ptr MimeType;dword Flags;dword Version;dword SigCount;dword SigSize;ptr SigPattern;ptr SigMask"
Global Const $3e = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader" & ((@OSVersion = "WIN_XP") ? "" : ";" & $38 & ";uint uChevronState")
Global Const $3f = "struct;ulong Data1;ushort Data2;ushort Data3;byte Data4[8];endstruct"
Global Const $3g = Ptr(-1)
Global Const $3h = Ptr(-1)
Global Const $3i = 0x0100
Global Const $3j = 0x2000
Global Const $3k = 0x8000
Global Const $3l = BitShift($3i, 8)
Global Const $3m = BitShift($3j, 8)
Global Const $3n = BitShift($3k, 8)
Global Const $3o = "dword Size;dword Flags;handle hCursor;" & $37
Global Const $3p = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
Func _2t($3q, $3r, $3s, $3t, $3u, $3v, $3w, $3x, $3y)
Local $c = DllCall("gdi32.dll", "bool", "BitBlt", "handle", $3q, "int", $3r, "int", $3s, "int", $3t, "int", $3u, "handle", $3v, "int", $3w, "int", $3x, "dword", $3y)
If @error Then Return SetError(@error, @extended, False)
Return $c[0]
EndFunc ;==>_2t
Func _30($3z)
Local $c = DllCall("user32.dll", "handle", "CopyIcon", "handle", $3z)
If @error Then Return SetError(@error, @extended, 0)
Return $c[0]
EndFunc ;==>_30
Func _32($40, $3t, $3u)
Local $c = DllCall("gdi32.dll", "handle", "CreateCompatibleBitmap", "handle", $40, "int", $3t, "int", $3u)
If @error Then Return SetError(@error, @extended, 0)
Return $c[0]
EndFunc ;==>_32
Func _33($40)
Local $c = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $40)
If @error Then Return SetError(@error, @extended, 0)
Return $c[0]
EndFunc ;==>_33
Func _3g($40)
Local $c = DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $40)
If @error Then Return SetError(@error, @extended, False)
Return $c[0]
EndFunc ;==>_3g
Func _3h($41)
Local $c = DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $41)
If @error Then Return SetError(@error, @extended, False)
Return $c[0]
EndFunc ;==>_3h
Func _3i($3z)
Local $c = DllCall("user32.dll", "bool", "DestroyIcon", "handle", $3z)
If @error Then Return SetError(@error, @extended, False)
Return $c[0]
EndFunc ;==>_3i
Func _3m($40, $42, $43, $3z)
Local $c = DllCall("user32.dll", "bool", "DrawIcon", "handle", $40, "int", $42, "int", $43, "handle", $3z)
If @error Then Return SetError(@error, @extended, False)
Return $c[0]
EndFunc ;==>_3m
Func _4n()
Local $44 = DllStructCreate($3o)
Local $45 = DllStructGetSize($44)
DllStructSetData($44, "Size", $45)
Local $46 = DllCall("user32.dll", "bool", "GetCursorInfo", "struct*", $44)
If @error Or Not $46[0] Then Return SetError(@error + 10, @extended, 0)
Local $47[5]
$47[0] = True
$47[1] = DllStructGetData($44, "Flags") 0
$47[2] = DllStructGetData($44, "hCursor")
$47[3] = DllStructGetData($44, "X")
$47[4] = DllStructGetData($44, "Y")
Return $47
EndFunc ;==>_4n
Func _4o($4)
Local $c = DllCall("user32.dll", "handle", "GetDC", "hwnd", $4)
If @error Then Return SetError(@error, @extended, 0)
Return $c[0]
EndFunc ;==>_4o
Func _4p()
Local $c = DllCall("user32.dll", "hwnd", "GetDesktopWindow")
If @error Then Return SetError(@error, @extended, 0)
Return $c[0]
EndFunc ;==>_4p
Func _4y($3z)
Local $48 = DllStructCreate($3p)
Local $46 = DllCall("user32.dll", "bool", "GetIconInfo", "handle", $3z, "struct*", $48)
If @error Or Not $46[0] Then Return SetError(@error + 10, @extended, 0)
Local $49[6]
$49[0] = True
$49[1] = DllStructGetData($48, "Icon") 0
$49[2] = DllStructGetData($48, "XHotSpot")
$49[3] = DllStructGetData($48, "YHotSpot")
$49[4] = DllStructGetData($48, "hMask")
$49[5] = DllStructGetData($48, "hColor")
Return $49
EndFunc ;==>_4y
Func _5g($4a)
Local $c = DllCall("user32.dll", "int", "GetSystemMetrics", "int", $4a)
If @error Then Return SetError(@error, @extended, 0)
Return $c[0]
EndFunc ;==>_5g
Func _5v($4b)
Local $4c = DllStructCreate($3f)
_5w($4b, $4c)
If @error Then Return SetError(@error + 10, @extended, 0)
Return $4c
EndFunc ;==>_5v
Func _5w($4b, $4c)
Local $c = DllCall("ole32.dll", "long", "CLSIDFromString", "wstr", $4b, "struct*", $4c)
If @error Then Return SetError(@error, @extended, False)
Return $c[0]
EndFunc ;==>_5w
Func _72($4, $40)
Local $c = DllCall("user32.dll", "int", "ReleaseDC", "hwnd", $4, "handle", $40)
If @error Then Return SetError(@error, @extended, False)
Return $c[0]
EndFunc ;==>_72
Func _74($40, $4d)
Local $c = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $40, "handle", $4d)
If @error Then Return SetError(@error, @extended, False)
Return $c[0]
EndFunc ;==>_74
Func _7w($4c)
Local $c = DllCall("ole32.dll", "int", "StringFromGUID2", "struct*", $4c, "wstr", "", "int", 40)
If @error Or Not $c[0] Then Return SetError(@error, @extended, "")
Return SetExtended($c[0], $c[2])
EndFunc ;==>_7w
Func _89($4e, $4f = 0, $4g = True)
Local $4h = "wstr"
If Not IsString($4e) Then $4h = "struct*"
Local $c = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $4f, "dword", 0, $4h, $4e, "int", -1, "ptr", 0, "int", 0, "ptr", 0, "ptr", 0)
If @error Or Not $c[0] Then Return SetError(@error + 20, @extended, "")
Local $4i = DllStructCreate("char[" & $c[0] & "]")
$c = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $4f, "dword", 0, $4h, $4e, "int", -1, "struct*", $4i, "int", $c[0], "ptr", 0, "ptr", 0)
If @error Or Not $c[0] Then Return SetError(@error + 10, @extended, "")
If $4g Then Return DllStructGetData($4i, 1)
Return $4i
EndFunc ;==>_89
Global Const $4j = 'struct;dword OSVersionInfoSize;dword MajorVersion;dword MinorVersion;dword BuildNumber;dword PlatformId;wchar CSDVersion[128];endstruct'
Global Const $4k = _9d()
Func _9d()
Local $4l = DllStructCreate($4j)
DllStructSetData($4l, 1, DllStructGetSize($4l))
Local $46 = DllCall('kernel32.dll', 'bool', 'GetVersionExW', 'struct*', $4l)
If @error Or Not $46[0] Then Return SetError(@error, @extended, 0)
Return BitOR(BitShift(DllStructGetData($4l, 2), -8), DllStructGetData($4l, 3))
EndFunc ;==>_9d
Global $4m = 0
Global $4n = 0
Global $4o = 0
Global $4p = True
Func _gg($4q, $4r, $4s, $4t, $4u, $4v = 0x00021808)
Local $c = DllCall($4m, "int", "GdipCloneBitmapArea", "float", $4r, "float", $4s, "float", $4t, "float", $4u, "int", $4v, "handle", $4q, "handle*", 0)
If @error Then Return SetError(@error, @extended, 0)
If $c[0] Then Return SetError(10, $c[0], 0)
Return $c[7]
EndFunc ;==>_gg
Func _gk($4q, $4w = 0)
Local $c = DllCall($4m, "int", "GdipCreateBitmapFromHBITMAP", "handle", $4q, "handle", $4w, "handle*", 0)
If @error Then Return SetError(@error, @extended, 0)
If $c[0] Then Return SetError(10, $c[0], 0)
Return $c[3]
EndFunc ;==>_gk
Func _hi()
Local $4x = _hk()
Local $4y = _hn()
Local $4z = DllStructCreate("byte[" & $4y & "]")
Local $c = DllCall($4m, "int", "GdipGetImageEncoders", "uint", $4x, "uint", $4y, "struct*", $4z)
If @error Then Return SetError(@error, @extended, 0)
If $c[0] Then Return SetError(10, $c[0], 0)
Local $50 = DllStructGetPtr($4z)
Local $51, $52[$4x + 1][14]
$52[0][0] = $4x
For $53 = 1 To $4x
$51 = DllStructCreate($3d, $50)
$52[$53][1] = _7w(DllStructGetPtr($51, "CLSID"))
$52[$53][2] = _7w(DllStructGetPtr($51, "FormatID"))
$52[$53][3] = _89(DllStructGetData($51, "CodecName"))
$52[$53][4] = _89(DllStructGetData($51, "DllName"))
$52[$53][5] = _89(DllStructGetData($51, "FormatDesc"))
$52[$53][6] = _89(DllStructGetData($51, "FileExt"))
$52[$53][7] = _89(DllStructGetData($51, "MimeType"))
$52[$53][8] = DllStructGetData($51, "Flags")
$52[$53][9] = DllStructGetData($51, "Version")
$52[$53][10] = DllStructGetData($51, "SigCount")
$52[$53][11] = DllStructGetData($51, "SigSize")
$52[$53][12] = DllStructGetData($51, "SigPattern")
$52[$53][13] = DllStructGetData($51, "SigMask")
$50 += DllStructGetSize($51)
Next
Return $52
EndFunc ;==>_hi
Func _hj($54)
Local $55 = _hi()
If @error Then Return SetError(@error, 0, "")
For $53 = 1 To $55[0][0]
If StringInStr($55[$53][6], "*." & $54) > 0 Then Return $55[$53][1]
Next
Return SetError(-1, -1, "")
EndFunc ;==>_hj
Func _hk()
Local $c = DllCall($4m, "int", "GdipGetImageEncodersSize", "uint*", 0, "uint*", 0)
If @error Then Return SetError(@error, @extended, -1)
If $c[0] Then Return SetError(10, $c[0], -1)
Return $c[1]
EndFunc ;==>_hk
Func _hn()
Local $c = DllCall($4m, "int", "GdipGetImageEncodersSize", "uint*", 0, "uint*", 0)
If @error Then Return SetError(@error, @extended, -1)
If $c[0] Then Return SetError(10, $c[0], -1)
Return $c[2]
EndFunc ;==>_hn
Func _jt($56)
Local $c = DllCall($4m, "int", "GdipDisposeImage", "handle", $56)
If @error Then Return SetError(@error, @extended, False)
If $c[0] Then Return SetError(10, $c[0], False)
Return True
EndFunc ;==>_jt
Func _jx($56)
Local $c = DllCall($4m, "int", "GdipGetImageHeight", "handle", $56, "uint*", 0)
If @error Then Return SetError(@error, @extended, -1)
If $c[0] Then Return SetError(10, $c[0], -1)
Return $c[2]
EndFunc ;==>_jx
Func _k4($56)
Local $c = DllCall($4m, "int", "GdipGetImageWidth", "handle", $56, "uint*", -1)
If @error Then Return SetError(@error, @extended, -1)
If $c[0] Then Return SetError(10, $c[0], -1)
Return $c[2]
EndFunc ;==>_k4
Func _k9($56, $2z, $57, $58 = 0)
Local $4c = _5v($57)
Local $c = DllCall($4m, "int", "GdipSaveImageToFile", "handle", $56, "wstr", $2z, "struct*", $4c, "struct*", $58)
If @error Then Return SetError(@error, @extended, False)
If $c[0] Then Return SetError(10, $c[0], False)
Return True
EndFunc ;==>_k9
Func _l3(ByRef $58, $4b, $59, $5a, $5b)
Local $4x = DllStructGetData($58, "Count")
Local $5c = DllStructGetPtr($58, "GUID") + ($4x * _l5())
Local $5d = DllStructCreate($3a, $5c)
_5w($4b, $5c)
DllStructSetData($5d, "Type", $5a)
DllStructSetData($5d, "NumberOfValues", $59)
DllStructSetData($5d, "Values", $5b)
DllStructSetData($58, "Count", $4x + 1)
EndFunc ;==>_l3
Func _l4($4x)
Local $5e = $3b
For $1p = 2 To $4x
$5e &= ";struct;byte[16];ulong;ulong;ptr;endstruct"
Next
Return DllStructCreate($5e)
EndFunc ;==>_l4
Func _l5()
Local $5d = DllStructCreate($3a)
Return DllStructGetSize($5d)
EndFunc ;==>_l5
Func _ny()
If $4m = 0 Then Return SetError(-1, -1, False)
$4n -= 1
If $4n = 0 Then
DllCall($4m, "none", "GdiplusShutdown", "ulong_ptr", $4o)
DllClose($4m)
$4m = 0
EndIf
Return True
EndFunc ;==>_ny
Func _nz($5f = Default, $5g = False)
$4n += 1
If $4n > 1 Then Return True
If $5f = Default Then $5f = "gdiplus.dll"
$4m = DllOpen($5f)
If $4m = -1 Then
$4n = 0
Return SetError(1, 2, False)
EndIf
Local $5h = FileGetVersion($5f)
$5h = StringSplit($5h, ".")
If $5h[1] > 5 Then $4p = False
Local $5i = DllStructCreate($3c)
Local $5j = DllStructCreate("ulong_ptr Data")
DllStructSetData($5i, "Version", 1)
Local $c = DllCall($4m, "int", "GdiplusStartup", "struct*", $5j, "struct*", $5i, "ptr", 0)
If @error Then Return SetError(@error, @extended, False)
If $c[0] Then Return SetError(10, $c[0], False)
$4o = DllStructGetData($5j, "Data")
If $5g Then Return $4m
Return SetExtended($5h[1], True)
EndFunc ;==>_nz
Func _ob($2z, $5k = True)
Local $4a = _oc(".\:", $2z)
If ($4a > 0) And (StringMid($2z, $4a, 1) = '.') Then
If $5k Then
Return StringMid($2z, $4a + 1)
Else
Return StringMid($2z, $4a)
EndIf
Else
Return ""
EndIf
EndFunc ;==>_ob
Func _oc($5l, $5m)
Local $2h, $5n
For $53 = 1 To StringLen($5l)
$2h = StringMid($5l, $53, 1)
$5n = StringInStr($5m, $2h, 0, -1)
If $5n > 0 Then Return $5n
Next
EndFunc ;==>_oc
Global $5o = $36
Global $5p = 100
Global $5q = 24
Global $5r = $35
Global Const $5s = 0
Global Const $5t = 1
Global Const $5u = 0x00CC0020
Func _p6($2z = "", $5v = 0, $5w = 0, $5x = -1, $5y = -1, $5z = True)
Local $60 = False
If $5x = -1 Then $5x = _5g($5s) - 1
If $5y = -1 Then $5y = _5g($5t) - 1
If $5x < $5v Then Return SetError(-1, 0, $60)
If $5y _p6
Func _p8($2z, $4q, $66 = True)
_nz()
If @error Then Return SetError(-1, -1, False)
Local $67 = StringUpper(_ob($2z))
Local $68 = _hj($67)
If $68 = "" Then Return SetError(-2, -2, False)
Local $56 = _gk($4q)
If @error Then Return SetError(-3, -3, False)
Local $69, $58
Switch $67
Case "BMP"
Local $42 = _k4($56)
Local $43 = _jx($56)
Local $6a = _gg($56, 0, 0, $42, $43, $5o)
_jt($56)
$56 = $6a
Case "JPG", "JPEG"
$58 = _l4(1)
$69 = DllStructCreate("int Quality")
DllStructSetData($69, "Quality", $5p)
_l3($58, $33, 1, $34, DllStructGetPtr($69))
Case "TIF", "TIFF"
$58 = _l4(2)
$69 = DllStructCreate("int ColorDepth;int Compression")
DllStructSetData($69, "ColorDepth", $5q)
DllStructSetData($69, "Compression", $5r)
_l3($58, $31, 1, $34, DllStructGetPtr($69, "ColorDepth"))
_l3($58, $32, 1, $34, DllStructGetPtr($69, "Compression"))
EndSwitch
Local $6b = 0
If IsDllStruct($58) Then $6b = $58
Local $60 = _k9($56, $2z, $68, $6b)
_jt($56)
If $66 Then _3h($4q)
_ny()
Return SetError($60 = False, 0, $60)
EndFunc ;==>_p8
Global Const $6c = 1
Global Const $6d = 2
Global Const $6e = 0x001D
Global Const $6f = 0x001E
Global Const $6g = 0x001F
Global Const $6h = 0x0020
Global Const $6i = 0x1003
Global Const $6j = 0x0028
Global Const $6k = 0x0029
Global Const $6l = 0x007F
Global Const $6m = 0x0400
Func _q5($6n = 0, $6o = 0, $2g = 0, $6p = '')
If Not $6n Then $6n = 0x0400
Local $6q = 'wstr'
If Not StringStripWS($6p, $d + $e) Then
$6q = 'ptr'
$6p = 0
EndIf
Local $46 = DllCall('kernel32.dll', 'int', 'GetDateFormatW', 'dword', $6n, 'dword', $2g, 'struct*', $6o, $6q, $6p, 'wstr', '', 'int', 2048)
If @error Or Not $46[0] Then Return SetError(@error, @extended, '')
Return $46[5]
EndFunc ;==>_q5
Func _q8($6n, $5a)
Local $46 = DllCall('kernel32.dll', 'int', 'GetLocaleInfoW', 'dword', $6n, 'dword', $5a, 'wstr', '', 'int', 2048)
If @error Or Not $46[0] Then Return SetError(@error + 10, @extended, '')
Return $46[3]
EndFunc ;==>_q8
Func _qt($6r, $4v = Default)
Local Const $6s = 128
If $4v = Default Then $4v = 0
$6r = Int($6r)
If $6r 7 Then Return SetError(1, 0, "")
Local $6o = DllStructCreate($39)
DllStructSetData($6o, "Year", BitAND($4v, $6s) ? 2007 : 2006)
DllStructSetData($6o, "Month", 1)
DllStructSetData($6o, "Day", $6r)
Return _q5(BitAND($4v, $6d) ? $6m : $6l, $6o, 0, BitAND($4v, $6c) ? "ddd" : "dddd")
EndFunc ;==>_qt
Func _qw($6t)
If StringIsInt($6t) Then
Select
Case Mod($6t, 4) = 0 And Mod($6t, 100) 0
Return 1
Case Mod($6t, 400) = 0
Return 1
Case Else
Return 0
EndSelect
EndIf
Return SetError(1, 0, 0)
EndFunc ;==>_qw
Func _qx($1m)
$1m = Int($1m)
Return $1m >= 1 And $1m _qx
Func _qy($6u)
Local $6v[4], $6w[4]
_r7($6u, $6v, $6w)
If Not StringIsInt($6v[1]) Then Return 0
If Not StringIsInt($6v[2]) Then Return 0
If Not StringIsInt($6v[3]) Then Return 0
$6v[1] = Int($6v[1])
$6v[2] = Int($6v[2])
$6v[3] = Int($6v[3])
Local $6x = _rq($6v[1])
If $6v[1] 2999 Then Return 0
If $6v[2] 12 Then Return 0
If $6v[3] $6x[$6v[2]] Then Return 0
If $6w[0] < 1 Then Return 1
If $6w[0] _qy
Func _r6($6u, $6y)
Local $6v[4], $6w[4]
Local $6z = "", $70 = ""
Local $71, $72, $73 = ""
If Not _qy($6u) Then
Return SetError(1, 0, "")
EndIf
If $6y 5 Or Not IsInt($6y) Then
Return SetError(2, 0, "")
EndIf
_r7($6u, $6v, $6w)
Switch $6y
Case 0
$73 = _q8($6m, $6g)
If Not @error And Not ($73 = '') Then
$6z = $73
Else
$6z = "M/d/yyyy"
EndIf
If $6w[0] > 1 Then
$73 = _q8($6m, $6i)
If Not @error And Not ($73 = '') Then
$70 = $73
Else
$70 = "h:mm:ss tt"
EndIf
EndIf
Case 1
$73 = _q8($6m, $6h)
If Not @error And Not ($73 = '') Then
$6z = $73
Else
$6z = "dddd, MMMM dd, yyyy"
EndIf
Case 2
$73 = _q8($6m, $6g)
If Not @error And Not ($73 = '') Then
$6z = $73
Else
$6z = "M/d/yyyy"
EndIf
Case 3
If $6w[0] > 1 Then
$73 = _q8($6m, $6i)
If Not @error And Not ($73 = '') Then
$70 = $73
Else
$70 = "h:mm:ss tt"
EndIf
EndIf
Case 4
If $6w[0] > 1 Then
$70 = "hh:mm"
EndIf
Case 5
If $6w[0] > 1 Then
$70 = "hh:mm:ss"
EndIf
EndSwitch
If $6z "" Then
$73 = _q8($6m, $6e)
If Not @error And Not ($73 = '') Then
$6z = StringReplace($6z, "/", $73)
EndIf
Local $74 = _r8($6v[1], $6v[2], $6v[3])
$6v[3] = StringRight("0" & $6v[3], 2)
$6v[2] = StringRight("0" & $6v[2], 2)
$6z = StringReplace($6z, "d", "@")
$6z = StringReplace($6z, "m", "#")
$6z = StringReplace($6z, "y", "&")
$6z = StringReplace($6z, "@@@@", _qt($74, 0))
$6z = StringReplace($6z, "@@@", _qt($74, 1))
$6z = StringReplace($6z, "@@", $6v[3])
$6z = StringReplace($6z, "@", StringReplace(StringLeft($6v[3], 1), "0", "") & StringRight($6v[3], 1))
$6z = StringReplace($6z, "####", _rb($6v[2], 0))
$6z = StringReplace($6z, "###", _rb($6v[2], 1))
$6z = StringReplace($6z, "##", $6v[2])
$6z = StringReplace($6z, "#", StringReplace(StringLeft($6v[2], 1), "0", "") & StringRight($6v[2], 1))
$6z = StringReplace($6z, "&&&&", $6v[1])
$6z = StringReplace($6z, "&&", StringRight($6v[1], 2))
EndIf
If $70 "" Then
$73 = _q8($6m, $6j)
If Not @error And Not ($73 = '') Then
$71 = $73
Else
$71 = "AM"
EndIf
$73 = _q8($6m, $6k)
If Not @error And Not ($73 = '') Then
$72 = $73
Else
$72 = "PM"
EndIf
$73 = _q8($6m, $6f)
If Not @error And Not ($73 = '') Then
$70 = StringReplace($70, ":", $73)
EndIf
If StringInStr($70, "tt") Then
If $6w[1] 12 Then $6w[1] = $6w[1] - 12
EndIf
EndIf
$6w[1] = StringRight("0" & $6w[1], 2)
$6w[2] = StringRight("0" & $6w[2], 2)
$6w[3] = StringRight("0" & $6w[3], 2)
$70 = StringReplace($70, "hh", StringFormat("%02d", $6w[1]))
$70 = StringReplace($70, "h", StringReplace(StringLeft($6w[1], 1), "0", "") & StringRight($6w[1], 1))
$70 = StringReplace($70, "mm", StringFormat("%02d", $6w[2]))
$70 = StringReplace($70, "ss", StringFormat("%02d", $6w[3]))
$6z = StringStripWS($6z & " " & $70, $d + $e)
EndIf
Return $6z
EndFunc ;==>_r6
Func _r7($6u, ByRef $75, ByRef $76)
Local $77 = StringSplit($6u, " T")
If $77[0] > 0 Then $75 = StringSplit($77[1], "/-.")
If $77[0] > 1 Then
$76 = StringSplit($77[2], ":")
If UBound($76) _r8
Func _rb($7f, $4v = Default)
If $4v = Default Then $4v = 0
$7f = Int($7f)
If Not _qx($7f) Then Return SetError(1, 0, "")
Local $6o = DllStructCreate($39)
DllStructSetData($6o, "Year", @YEAR)
DllStructSetData($6o, "Month", $7f)
DllStructSetData($6o, "Day", 1)
Return _q5(BitAND($4v, $6d) ? $6m : $6l, $6o, 0, BitAND($4v, $6c) ? "MMM" : "MMMM")
EndFunc ;==>_rb
Func _rf()
Return _r6(@YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC, 0)
EndFunc ;==>_rf
Func _rq($6t)
Local $7g = [12, 31, (_qw($6t) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
Return $7g
EndFunc ;==>_rq
Opt("wintitlematchmode", 2)
Global $7h = 5
Global $7i
Global $7j
Global $1p
Global $7k
Global $7l
$7m = True
Global $7n = "c:\temp"
Global $7o = "debugconsole"
Global $7p = "(?i)(?:ares|midas)"
Global $7q = "(?i)(g:|b:)"
Global $7r = "G:\skydrive\conf\lang\autoit\tamx2txt\tamxlist.txt"
Global $7s = "G:\skydrive\conf\lang\autoit\tamx2txt\tamxlistdone.txt"
Global $7t = "G:;;skydrive;;conf;;lang;;autoit;;tamx2txt"
Global $7u[2][2] = [["ares;;g", "midas;;c"], ["G:", "B:"]]
Global $7k
Global $7v, $7w
Global $7x = 100
Global $7y = "(?i).*"
Global $7z = True
Global $80 = True
Global $7m = True
Local $81 = True
Global $82 = True
Global $83
Global $84
Global $85
If $82 Then
$83 = ""
$84 = "notepad.exe"
If @ComputerName = "ARES" Then
$85 = "TextPad"
Else
$85 = "Notepad"
EndIf
Else
$83 = "C:\Program Files (x86)\Testing Anywhere 9.2\Testing Anywhere"
$84 = "TATestEditor.exe"
$85 = "Testing Anywhere Client - Test Editor"
EndIf
_tv($7y, 1)
Func _tq($86, $7u)
Local $87
$87 = StringStripWS($86, 3)
$87 = StringRegExpReplace($87, "^file://", "")
$87 = StringStripWS($87, 3)
For $1p = 0 To UBound($7u, 2) - 1
$88 = $7u[1][$1p]
$89 = $7u[0][$1p]
_tw(1149, "cleanedpath~~" & $87 & "~~$searchstring~~" & "^\b" & $88 & "\b" & "~~$replacestring:" & $89)
$87 = StringRegExpReplace($87, "(?i)^" & $88 & "", ";;;;" & $89)
$8a = @error
If @extended And $7m Then _tw(1152, "~~replaced:$toclean~~" & $86 & "~~$cleaned~~" & $87)
If $8a Then
_tw(1154, "~~pathconversion~~@error~~" & @error & "~~extended~~" & @extended)
Return 0
EndIf
Next
Return $87
EndFunc ;==>_tq
Func _tr($8b, $7t = "g:;;skydrive;;conf;;lang;;autoit;;tamx2txt")
$8c = _tq($8b, $7p)
_tw(1162, "input:$txtpath~~" & $8c & "~~$searchstring~~" & "(?:;;{2})(" & $7p & ".*)" & "~~replace~~" & $7t & ";;" & "$1" & ".txt")
$8c = StringRegExpReplace($8c, "(?:;;{2})(" & $7p & ".*)", $7t & ";;" & "$1" & ".txt")
$8a = @error
If @extended And $7m Then _tw(1165, "~~replaced $tamxpath~~" & $8b & "~~$txtpath~~" & $8c)
If $8a Then
_tw(1167, "~~pathconversion~~$tamxpath~~" & $8b & "~~@error~~" & @error & "~~extended~~" & @extended)
Return 0
Else
If $7m Then _tw(1170, "result:$txtpath~~" & $8c)
Return $8c
EndIf
EndFunc ;==>_tr
Func _ts($8c, $7t = "g:;;skydrive;;conf;;lang;;autoit;;tamx2txt")
$8b = _tq($8c, $7q)
_tw(1176, "~~pathconversion~~$tamxpath~~" & $8b & @CRLF)
_tw(1177, "$tamxpath~~" & $8b & "~~$searchstring" & "(?i:)(?:;;{2})(" & $7t & ";;" & $7p & ".*)" & ".(txt|tax)" & "~~$replacestring~~" & "$1" & ".tamx")
$8b = StringRegExpReplace($8b, "(?i:)(?:;;{2})" & $7t & ";;(" & $7p & ".*)" & ".(txt|tax)", "$1" & ".tamx")
$8a = @error
If @extended Or $7m Then _tw(1180, "~~replaced $txtpath~~" & $8c & "~~to $tamxpath~~" & $8b)
If $8a Then
_tw(1182, "~~pathconversion~~$txtpath~~" & $8c & "~~@error~~" & @error & "~~extended~~" & @extended)
Return 0
Else
Return $8b
EndIf
EndFunc ;==>_ts
Func _tt($8d, $7z = 1)
Local $8c, $8b, $8e, $8f, $8g, $7i
$7i = _tu($8d, $8c, $8b)
If ($7i = 0) Then
_tw(1192, "getistoeclude return for $path~~" & $8d & "~~WARNING: cannot convert")
Return 1
EndIf
$8g = Not (FileExists($8b))
If $8g Then
_tw(1197, "getistoeclude return for $path~~" & $8d & "~~WARNING: excluding not found $tamxpath~~" & $8b)
Return 1
EndIf
$8f = Not (FileExists($8c))
If $8f Then
_tw(1202, "getistoeclude:$txtdoesnotexist: let's include it to make it exist~~" & $8c)
Return 0
Else
$8h = FileGetTime($8b, $26, $27)
$8i = FileGetTime($8c, $26, $27)
$8e = ($8h $8i)) And $7z)
_tw(1208, "getistoeclude return for $path~~" & $8d & "~~$isnotupdated~~" & $8e)
Return $8e
EndIf
EndFunc ;==>_tt
Func _tu($8d, ByRef $8c, ByRef $8b)
$8j = _tq($8d, $7q)
_tw(1214, "~~pathconversion~~$path~~" & $8d & "~~$cleanedpath~~" & $8j)
If ($7z And (StringRight($8d, 5) = ".tamx")) Then
$8b = $8d
$8c = _tr($8d)
Else
If (Not $7z) And ((StringRight($8d, 4) = ".txt") Or (StringRight($8d, 4) = ".tax")) Then
$8c = $8d
$8b = _ts($8d)
Else
_tw(1223, "~~bad path~~@error~~" & $8d & @CRLF)
Return 0
EndIf
EndIf
Return 1
EndFunc ;==>_tu
Func _tv($7y, $7z = 1)
$7x = $7h * $7x
_1x($7r, $7k, 0)
Local $8j
Local $8k = 0
Local $8l = 0
Local $8m = (UBound($7k) - 1)
_tw(1236, "$upper" & $8m)
For $1p = $8m To 0 Step -1
$8j = _tq($7k[$1p], $7u)
_tw(1239, "$cleanedpath~~" & $8j)
$8k = Not (StringRegExp($8j, $7y, $i))
If Not $8k Then $8l = _tt($8j, $7z)
If $8k Or $8l Then
_tw(1243, "~~At least 1 Sanity Check failed for:~~" & $7k[$1p] & "~~$isexcludedbyfilemaskregex~~" & $8k & "~~$istoExclude~~" & $8l)
$7i = _r($7k, $1p)
If @error Then
_tw(1246, "~~deleting~~" & $7k[$1p] & "~~@error~~" & @error & "~~extended~~" & @extended & @CRLF)
Else
_tw(1248, "~~deleted~~" & $8j & "~~files left:" & $7i)
EndIf
Else
$7k[$1p] = $8j
EndIf
Next
For $1p = 0 To UBound($7k) - 1
Local $8n = $7k[$1p]
_tw(1256, "Worker thread for $filepath~~" & $8n)
$8o = FileReadToArray($7s)
If @error Then
_tw(1259, "error opening~~" & $7s)
Else
If (_14($8o, $8n) > 0) Then
_tw(1262, "skipping~~" & $8n)
ContinueLoop
EndIf
EndIf
$7v = ProcessExists($84)
_tw(1267, "for clean slate close $taepid ~~" & $7v)
While $7v
ProcessClose($7v)
_tw(1270, "processclosed for:" & $7v)
$7v = ProcessExists($84)
If @error Then _tw(1272, "prcoessclose error~~" & @error)
_tw(1273, "processexists still?~~" & $7v)
If @error Then _tw(1274, "prcoessclose error~~" & @error)
WEnd
Local $8p
If (StringLen($83) > 0) Then $8p = "\"
$8q = '"' & $83 & $8p & $84 & '" "' & $8n & '"'
$7v = Run($8q)
_tw(1280, "opened $taepid~~" & $7v)
If $7z Then
If $80 Then
Local $8c, $8b
$7i = _tu($8n, $8c, $8b)
If ($7i = 0) Or $7m Then
_tw(1286, "~~converting $filepath~~" & $8n & "~~ result $ret~~" & $7i & "~~to $txtpath~~" & $8c & "~~$tamxpath~~" & $8b)
EndIf
If Not $82 Then
$7i = WinActivate($85, "")
_tw(1290, " winactivate $ret~~" & $7i & @CRLF)
Sleep($7x)
Send("{ALTDOWN}")
Sleep($7x)
Send("f")
Sleep($7x)
Send("t")
Sleep($7x)
Send("{ALTUP}")
Sleep($7x)
$7i = WinActivate("Save as text File", "")
_tw(1301, " winactivate $ret~~" & $7i & @CRLF)
Sleep($7x)
$7i = ControlSetText("Save as text File", "", "WindowsForms10.EDIT.app.0.ea7f4a_r11_ad11", $8c)
_tw(1304, " controlsettext $ret~~" & $7i & @CRLF)
Sleep($7x)
$7i = ControlClick("Save as text file", "", "WindowsForms10.BUTTON.app.0.ea7f4a_r11_ad13")
_tw(1307, "controlclick $ret~~" & $7i & @CRLF)
Sleep($7x)
Local $7w
$7w = ProcessExists("notepad.exe")
If $7w Then ProcessClose($7w)
If @error Then _tw(1312, "notepadclose error~~" & @error)
EndIf
If ($81) Then
$7i = WinActivate($85, "")
If $7i = 0 Then
_tw(1317, "cannot winactivate")
Sleep(5 * $7x)
$7i = WinActivate($85, "")
If $7i 0 Then _tw(1320, "could winactivate try2")
EndIf
If Not $82 Then
ControlClick("Testing Anywhere Client - Test Editor", "", "WindowsForms10.Window.8.app.0.ea7f4a_r11_ad125", "left", 96, 16)
Sleep(5 * $7x)
EndIf
Local $8r = True
Local $8s[1]
Local $8t = 0
Local $8u = 0
$7i = WinActivate($85, "")
If $7i = 0 Then
_tw(1332, "cannot winactivate")
Sleep(5 * $7x)
$7i = WinActivate($85, "")
If $7i 0 Then _tw(1335, "could winactivate try2")
EndIf
While ($8r)
$8t = $8t + 1
ReDim $8s[$8t + 1]
Sleep($7x)
Send("{end}")
Sleep($7x)
Send("{space}")
Sleep($7x)
Send("{left}")
Sleep($7x)
Send("+{home}")
Sleep($7x)
Send("^c")
Sleep($7x)
Send("{down}")
Sleep($7x)
Local $8v = ClipGet()
Sleep($7x)
$8v = StringStripWS($8v, 3)
If @error Then
_tw(1357, "error:Clipget $astrlines[$i] error~~" & @error)
EndIf
Sleep($7x)
$8s[$8t] = $8v
Local $8w, $8x, $8u = 0
If Mod($8t, 5) = 0 Then
_tw(1363, "$iteration~~" & $8t)
If ($8s[$8t] = $8s[$8t - 1]) Then
_tw(1365, "At $iteration, EQUAL~~" & $8t & "~~test~~" & $8s[$8t] & "?>" & $8s[$8t - 1])
If $8s[$8t] = $8s[$8t - 2] Then
_tw(1367, "At $iteration, EQUAL~~" & $8t & "~~test~~" & $8s[$8t] & "?>" & $8s[$8t - 1])
If $8s[$8t] = $8s[$8t - 3] Then
_tw(1369, "At $iteration, EQUAL~~" & $8t & "~~test~~" & $8s[$8t] & "?>" & $8s[$8t - 1])
If $8s[$8t] = $8s[$8t - 4] Then
_tw(1371, "At $iteration, EQUAL~~" & $8t & "~~test~~" & $8s[$8t] & "?>" & $8s[$8t - 1])
If $8s[$8t] = $8s[$8t - 5] Then
$8r = False
_tw(1374, "$notendoffile" & $8r)
$8u = 5
_tw(1376, "now:" & $8u)
If (UBound($8s) >= 9) Then
If $8s[$8t] = $8s[$8t - 6] Then
$8u = $8u + 1
_tw(1380, "now:" & $8u)
If $8s[$8t] = $8s[$8t - 7] Then
$8u = $8u + 1
_tw(1383, "now:" & $8u)
If $8s[$8t] = $8s[$8t - 8] Then
$8u = $8u + 1
_tw(1386, "now:" & $8u)
If $8s[$8t] = $8s[$8t - 9] Then
$8u = $8u + 1
_tw(1389, "now:" & $8u)
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
Else
_tw(1400, "At $iteration, UNEQUAL~~" & $8t & "~~test~~" & $8s[$8t] & "?>" & $8s[$8t - 1])
EndIf
EndIf
_tw(1403, "$notendoffile before wend~~" & $8r)
Sleep($7x)
WEnd
Local $8x = 1
Local $2x = "", $2y = "", $2z = "", $30 = ""
Local $8y = _24($8n, $2x, $2y, $2z, $30)
If Not (FileExists($2x & "\" & $2y)) Then DirCreate($2x & "\" & $2y)
$8z = $2x & $2y & $2z & ".tax"
_tw(1411, "$filepathTAX~~" & $8z)
Sleep($7x)
For $8x = 1 To $8u
$8w = _r($8s, UBound($8s) - 1)
Next
Sleep($7x)
$7i = _1y($8z, $8s, 1)
If ($7i = 0) Then
_tw(1419, "_FileWriteFromArray @error~~" & _1y)
EndIf
Sleep($7x)
$7i = FileWriteLine($7s, $8n)
If $7i = 0 Then _tw(1423, "failed writing log~~" & $8n)
EndIf
EndIf
Else
Sleep($7x)
MsgBox(0, "Not implemented!", "and likely unimplementable! I will now eject you...")
Exit
$7i = WinActivate($85, "")
If $7i = 0 Then
$7i = WinActivate($85, "")
Sleep($7x)
If $7i = 0 Then
Send("{!TAB}")
Sleep($7x)
$7i = WinActivate($85, "")
_tw(1438, "@error=" + @error + ". comment: " + ("To activate, had to resort to ALT +TAB." & @CRLF))
If $7i = 0 Then
_tw(1440, "@error=" + @error + ". comment: " + ("Cannot activate " & $85 & "~~exiting!"))
Exit
EndIf
EndIf
EndIf
Sleep($7x)
If @error Then
_tw(1447, "~~@error~~" & @error & "~~Activated~~" & $85)
EndIf
Send("^a")
Sleep($7x)
Send("{DEL}")
Send("^a")
Sleep($7x)
Send("{DEL}")
Sleep($7x)
For $1p = 0 To UBound($8s) - 1
ClipPut($8s[$1p])
Send("{home}")
Sleep($7x)
Send("+{end}")
Send("^v")
Sleep($7x)
Send("{enter}")
Sleep($7x)
If @error Then _tw(1465, "@error=" + @error + ". comment: " + ($7j & "."))
Next
If Not ($82) Then
Send("^H")
Send("^S")
Else
Send("^s")
EndIf
MsgBox(0, "Not implemented!", "construction site! I will now eject you...")
Exit
EndIf
$7i = ProcessClose($7v)
Sleep($7x)
_tw(1478, "result closing test editor:" & $7i)
If @error Then _tw(1479, "processclose error~~" & @error)
Sleep($7x)
$7v = ProcessExists($84)
Sleep($7x)
$7i = ProcessClose($7v)
Sleep($7x)
_tw(1485, "2nd try: closing test editor:" & $7i)
If @error Then _tw(1486, "processclose error~~" & @error)
Next
EndFunc ;==>_tv
Func _tw($90 = 1489, $91 = "Error")
Local $92
Local $93
Local $94
$94 = @TempDir
If $94 == "" Then
If Not FileExists($7n) Then DirCreate($7n)
$94 = $7n
EndIf
$92 = $90 & "~" & _rf() & "~" & $91
If $7o = "debug" Then
Local $95 = WinGetTitle("")
MsgBox(0, "debug", $92)
WinActivate($95)
ElseIf $7o = "debugconsole" Then
ConsoleWrite($92 & Chr(13))
ElseIf $7o = "run" Then
If $94 == "" Then $94 = $7n
$93 = _tx($92, $94) & ".jpg"
_p6($93)
_8($92)
ElseIf $7o = "debugconsolescreen" Then
ConsoleWrite($92 & Chr(13))
$93 = _tx($92, $94) & ".jpg"
_p6($93)
ElseIf $7o = "releasetextlog" Then
If $7l == "" Then $7l = @TempDir & "\" & "autoitlogfile.log"
$96 = FileOpen($7l, 1)
If $7i = 0 Or @error Then Exit
$7i = FileWriteLine($96, $92 & Chr(13))
If $7i = 0 Or @error Then Exit
$7i = FileClose($96)
ElseIf $7o = "releasewordpad" Then
Else
SetError(1)
EndIf
EndFunc ;==>_tw
Func _tx($97, $94)
$97 = StringReplace($97, ":", "_")
$97 = StringReplace($97, ">", "larger_than")
$97 = StringReplace($97, "_tx

