Что нового

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

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

InnI

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

Там перемещается файл, а тут ничего перемещать не надо - только скопировать полный путь - в буфер обмена.
 
Автор
D
Сообщения
100
Репутация
-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

Продвинутый
Сообщения
647
Репутация
82
Код:
#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
Сообщения
100
Репутация
-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

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

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

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

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

InnI

AutoIT Гуру
Сообщения
4,993
Репутация
1,462
Код:
#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
 
Верх