#NoTrayIcon Global Const $WM_COPYDATA = 0x004A $hTC = WinGetHandle('[CLASS:TTOTAL_CMD]') AutoItWinSetTitle(@ScriptFullPath) $hWndPar = WinGetHandle(@ScriptFullPath) #Region ;Обрабатываем командную строку, если пустая - появится окно выбора каталога If $CmdLine[0] = 0 Then While 1 $sPath = FileSelectFolder('Укажите каталог для распаковки', '', 7) If @error And $sPath = '' Then Exit If @error Or Not StringInStr(FileGetAttrib($sPath), "D") Then MsgBox(4096, 'Выбор каталога для копирования', 'Вы указали "' & $sPath & '", а не каталог') Else ExitLoop EndIf WEnd ElseIf $CmdLine[0] = 1 Then $sPath = StringTrimRight($CmdLine[1], 1) Else Exit EndIf #EndRegion _TC_cd_command('', $sPath, 'ST') ;открываем каталог в неактивной панели в новой вкладке ControlSend('', '', $hTC, '{F5}') ;посылаем F5 $hWnd = WinWait('[CLASS:TInpComboDlg]') ;ждем появления окна копирования и ControlSend('', '', $hWnd, '{ENTER}') ;отправляем ему Enter ; ============================================================================= ; 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 |