Как заставить горячие клавиши AutoHotKey работать с удаленным рабочим столом в полноэкранном режиме в Windows 7?
4 ответа
Вам также необходимо установить "Применить сочетания клавиш Windows" на вкладке "Локальные ресурсы" подключения к удаленному рабочему столу «mstsc.exe» в "НА ЭТОМ КОМПЬЮТЕРЕ"
Как отмечает user16659, Reload
заставляет горячие клавиши работать снова (но у меня не работает его скрипт).
По сути, теперь у меня запущены два сценария, один из которых содержит мои горячие клавиши и горячие строки "script.ahk"
а другой перезагружает этот сценарий, если RDP максимизируется до "controller.ahk"
.
script.ahk:
#SingleInstance force
::hw::Hello World
controller.ahk:
Run "autohotkey" "script.ahk"
#Persistent
SetTimer, ReloadOnRDPMaximized, 500
return
ReloadOnRDPMaximized:
If WinActive("ahk_class TscShellContainerClass")
{
WinGet, maxOrMin, MinMax, ahk_class TscShellContainerClass
if (maxOrMin = 0) {
WinGetPos, PosX, PosY, WinWidth, WinHeight, ahk_class TscShellContainerClass
if (PosY = 0) {
; it is fully maximized therefore reload "script.ahk"
Run "autohotkey" "script.ahk"
; wait until window gets deactivated so you don't reload it again.
WinWaitNotActive, ahk_class TscShellContainerClass
}
}
}
return
Чтобы AHK работал с клиентом Microsoft Terminal Server в полноэкранном режиме, AHK необходимо перезагрузить после активации окна удаленного рабочего стола.
SetTimer, waitforrdp, -250
return
:*:ppp::password
:*:ccc::
SendInput, {shift}C{shift up}
SendInput, apitalized
return
waitforrdp:
IfWinActive, ahk_class TscShellContainerClass
{
WinWaitNotActive, ahk_class TscShellContainerClass,,3600
}
WinWaitActive, ahk_class TscShellContainerClass,,3600
Reload
return
Не могу добавить комментарий к верхнему ответу, но я изменил предложенный скрипт, который Тахир связал со своим блогом в верхнем ответе, чтобы сделать его чище и проще в использовании.
Следующее работает путем приостановки локального сценария, когда активен полноэкранный RDP, вместо того, чтобы пытаться уничтожить и перезапустить отдельную версию сценария при каждом перемещении фокуса. Это легче, а также позволяет избежать засорения панели уведомлений множеством значков зомби AHK для убитых сценариев. Это также означает, что вы можете просто добавить это к существующему сценарию вместо того, чтобы запускать их оба отдельно!
; this line should be put on top (auto-exec) section of ahk script
SetTimer, SuspendOnRDPMaximized, 500
; this actual code label and the fn can be put anywhere in the script file
SuspendOnRDPMaximized:
If WinActive("ahk_class TscShellContainerClass") {
WinGet, maxOrMin, MinMax, ahk_class TscShellContainerClass
if (maxOrMin = 0) {
WinGetPos, PosX, PosY, WinWidth, WinHeight, ahk_class TscShellContainerClass
if (PosY = 0) { ; it is fully maximized
Suspend, On
WinWaitNotActive, ahk_class TscShellContainerClass
Suspend, Off
}
}
}
return