如何修复 AHK 以将按键发送到 RDP 全屏?

如何修复 AHK 以将按键发送到 RDP 全屏?

如何让 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 组合键”设置为“在此计算机上”MSTSC 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

相关内容