如何让 AutoHotKey 热键在 Windows 7 上全屏与远程桌面配合使用?
答案1
正如用户 16659 所说,Reload
这使得热键再次起作用(但他的脚本对我来说不起作用)。
基本上,我现在有两个脚本正在运行,一个包含我的热键和热字符串"script.ahk"
,另一个将在 RDP 最大化时重新加载该脚本"controller.ahk"
。
脚本.ahk:
#SingleInstance force
::hw::Hello World
控制器.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
答案2
您还需要将远程桌面连接“mstsc.exe”的“本地资源”选项卡上的“应用 Windows 组合键”设置为“在此计算机上”
答案3
为了使 AHK 能够全屏运行 Microsoft 终端服务器客户端,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
答案4
无法向最佳答案添加评论,但我已修改了 Tahir 在最佳答案中链接到他的博客的建议脚本,以使其更简洁、更易于使用。
以下操作的工作原理是,当全屏 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