#NoTrayIcon
Opt('WinWaitDelay', 100)
Global Const $WM_COPYDATA = 0x004A
Global Const $WM_USER = 0x400
$hTC = WinGetHandle('[CLASS:TTOTAL_CMD]')
AutoItWinSetTitle(@ScriptName)
$hWndPar = WinGetHandle(@ScriptName)
$iCMCommand = 2400 ;cm_MultiRenameFiles http://flint-inc.ru/tcinfo/all_cmd.ru.htm
$sEMCommand = 'em_FileSyncStandalone' ;Параметры через пробел! Например: 'em_AppendTabs "' & $sFileName & '"'
$sl = __CheckANSItoUTF8('C:\Temp\')
$sr = __CheckANSItoUTF8('C:\Temp\')
$sPar = 'T' ; ST, S, T - не обязательно, см. описание функции
_TC_cm_command($iCMCommand)
_TC_em_command(__CheckANSItoUTF8($sEMCommand))
_TC_cd_command($sl, $sr, $sPar)
; ANSI >> UTF-8 (if need)
Func __CheckANSItoUTF8($sStr)
Local $sStrTemp, $BOM = Chr(239) & Chr(187) & Chr(191) ; \xEF \xBB \xBF
$sStrTemp = BinaryToString(StringToBinary($sStr, 1), 1)
If Not ($sStr == $sStrTemp) Then
$sStr = BinaryToString(StringToBinary($sStr, 4))
Return $BOM & $sStr
Else
Return $sStr
EndIf
EndFunc ;==>__CheckANSItoUTF8
; =============================================================================
; Internal command
Func _TC_cm_command($Command)
DllCall("user32.dll", "int", "PostMessage", "hwnd", $hTC, "int", $WM_USER + 51, "wparam", $Command, "lparam", 0)
EndFunc ;==>_TC_cm_command
; =============================================================================
; EM command
Func _TC_em_command($sCommand)
Local $pCommand = DllStructCreate("char[" & StringLen($sCommand) + 1 & "]")
Local $pCopyData = DllStructCreate("ulong_ptr;dword;ptr")
DllStructSetData($pCommand, 1, $sCommand)
DllStructSetData($pCopyData, 1, Asc("E") + 256 * Asc("M"))
DllStructSetData($pCopyData, 2, DllStructGetSize($pCommand))
DllStructSetData($pCopyData, 3, DllStructGetPtr($pCommand))
DllCall("user32.dll", "int", "SendMessageW", "hwnd", $hTC, "uint", $WM_COPYDATA, "wparam", $hWndPar, "lparam", DllStructGetPtr($pCopyData))
EndFunc ;==>_TC_em_command
; =============================================================================
; CD command
;
; CD для перехода в другой каталог на одной или обеих панелях.
; Строка lpData должна быть в следующем формате (пример для языка C/C++):
; "c:\\test1\x0dc:\\test2\x00ST\x00"
; Первый путь - левая панель, второй - правая; любой из них может быть опущен (но симмвол-разделитель \x0d должен оставаться).
; Флаги после первого нулевого символа опциональны. "S": трактовать пути как исходный/целевой; "T": открывать пути в новых вкладках.
; Аналог:
; $COMMANDER_EXE = EnvGet('COMMANDER_EXE')
; Run('"' & $COMMANDER_EXE & '" /O /S /T /L="' & $left & '" /R="' & $right & '"')
Func _TC_cd_command($l, $r, $sFlag = "")
Local $sCommand = $l & @CR & $r & ChrW(0) & $sFlag
Local $pCDcom = DllStructCreate("char[" & StringLen($sCommand)+ 1 & "]")
Local $pCopyData = DllStructCreate("ulong_ptr;dword;ptr")
DllStructSetData($pCDcom, 1, $sCommand)
DllStructSetData($pCopyData, 1, Asc("C") + 256 * Asc("D"))
DllStructSetData($pCopyData, 2, DllStructGetSize($pCDcom))
DllStructSetData($pCopyData, 3, DllStructGetPtr($pCDcom))
DllCall("user32.dll", "int", "SendMessageW", "hwnd", $hTC, "int", $WM_COPYDATA, "wparam", $hWndPar, "lparam", DllStructGetPtr($pCopyData))
EndFunc ;==>_TC_cd_command