Что нового

Как скриптом автоита, висящем в трее - скопировать полный путь файла или папки, в тоталкомандере (при помощи хоткея)

Сообщения
80
Репутация
-1
Здравствуйте.
Подскажите - как скриптом автоита, висящем в трее - скопировать полный путь файла или папки, в тоталкомандере (при помощи хоткея) ?
(В Windows10)
 

InnI

AutoIT Гуру
Сообщения
4,932
Репутация
1,436
 
Автор
D
Сообщения
80
Репутация
-1
Нет. Это не то.

Там перемещается файл, а тут ничего перемещать не надо - только скопировать полный путь - в буфер обмена.
 
Автор
D
Сообщения
80
Репутация
-1
Код, на который я дал ссылку, именно это и делает
Код:
WinActivate("Total Commander")
Send("^{ins}")
Sleep(333)
$FullPath = ClipGet()
MsgBox(0, "", $FullPath)
Ясно.
Спасибо.
Сообщение автоматически объединено:

Вот такой в итоге получился код.

Код:
#pragma compile(Icon, 1.ico)

#include <file.au3>

HotKeySet("{LWIN}Z", "SendHK")

While 1
    Sleep(100)
WEnd

Func SendHK()
;WinActivate("Total Commander")
;Send("^{SPACE}")
Sleep(333)
$FullPath = ClipGet()
MsgBox(0, "", $FullPath)
EndFunc


Func _SendEx($sSend_Data)
    Local $hUser32DllOpen = DllOpen("User32.dll")
    While _IsPressed("10", $hUser32DllOpen) Or _IsPressed("11", $hUser32DllOpen) Or _IsPressed("12", $hUser32DllOpen)
        Sleep(30)
    WEnd
    Send($sSend_Data)
    DllClose($hUser32DllOpen)
EndFunc   ;==>_SendEx


Но он - не срабатывает.
Нажимаю Win+Z ... путь не копируется

Как его поправить, чтобы он срабатывал ?
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
575
Репутация
68
Код:
#pragma compile(Icon, 1.ico)
if HotKeySet("{F10}", "SendHK") = 0 Then
    MsgBox(0, "", "Ошибка HotKeySet")
    exit
endif

While 1
    Sleep(100)
WEnd

Func SendHK()
    IF WinActivate("Total Commander") Then
        Send("^{ins}")
        Sleep(333)
        $FullPath = ClipGet()
        MsgBox(0, "", $FullPath)
    Else
        MsgBox(0, "", "Окно не найдено")
    endif
EndFunc
Нажимать нужно F10.
Win+Z регистрируется без ошибок, но не срабатывает.
 
Автор
D
Сообщения
80
Репутация
-1
Код:
#pragma compile(Icon, 1.ico)
if HotKeySet("{F10}", "SendHK") = 0 Then
    MsgBox(0, "", "Ошибка HotKeySet")
    exit
endif

While 1
    Sleep(100)
WEnd

Func SendHK()
    IF WinActivate("Total Commander") Then
        Send("^{ins}")
        Sleep(333)
        $FullPath = ClipGet()
        MsgBox(0, "", $FullPath)
    Else
        MsgBox(0, "", "Окно не найдено")
    endif
EndFunc
Нажимать нужно F10.
Win+Z регистрируется без ошибок, но не срабатывает.
Спасибо. Так работает.
Но нужно именно сочетание Win+Z
 

Prog

Продвинутый
Сообщения
575
Репутация
68
Но нужно именно сочетание Win+Z
Если HotKeySet() регистрирует горячие клавиши используя WinAPI RegisterHotKey, работать не будет.
Эта функция сообщает об ошибке с кодом 1409 что в переводе на русский значит
Назначенная клавиша уже зарегистрирована.
Вероятно это сочетание клавиш зарезервировано системой.

Если нужно именно оно, следует рассмотреть другие варианты кроме HotKeySet(), например WinAPI функцией SetWindowsHookEx установить фильтр на клавиатуру и проверять нажатие требуемых клавиш.
 
Последнее редактирование:
Автор
D
Сообщения
80
Репутация
-1
Не знаю как именно HotKeySet() регистрирует горячие клавиши, но если используя WinAPI RegisterHotKey, не будет работать.
Эта функция сообщает об ошибке с кодом 1409 что в переводе на русский значит

Вероятно это сочетание зарезервировано системой.
Не знаю.
У меня при нажатии Win+Z ничего не происходит

(в тотал коммандере - для Win7 - можно спокойно назначить внутренний хоткей для копирования полного пути).
 
Автор
D
Сообщения
80
Репутация
-1
Сочетание Sift+z тоже не работает
Ctrl+Shift тоже не работает.
 

InnI

AutoIT Гуру
Сообщения
4,932
Репутация
1,436
Код:
#pragma compile(Icon, 1.ico)

#include <Misc.au3>

While Sleep(33)
    If _IsPressed("5B") And _IsPressed("5A") Then
        Send("{LWINUP}")
        Send("{z up}")
        If WinActivate("Total Commander") Then
            Send("^{ins}")
            Sleep(111)
            $FullPath = ClipGet()
            MsgBox(0x40000, "", $FullPath)
        Else
            MsgBox(0x40000, "", "Окно не найдено")
        EndIf
    EndIf
WEnd
 
Верх