AHK模拟ctrl+alt+break退出远程桌面全屏模式

sum*_*hya 4 autohotkey remote-desktop

我想用AHK来模拟Ctrl++ 。Altbreak

下面的代码什么也不做。我还粘贴了首先使用 Num 的按键历史记录,然后实际按下了一组三键。当实际按键有效时,AHK 键不起作用。两者生成的代码对我来说似乎是相同的,只是 Break 与 AHK 有 d & u 。但这应该不重要。我还介绍了延迟,但这也不起作用。

SetKeyDelay, 2,2
NumpadSub::
send {LCtrl Down}{LAlt Down}{vk03sc146}{LCtrl Up}{LAlt Up}
return  
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 {CtrlBreak} 和以下命令,但在 Win XP 远程桌面中没有成功。发送!^{vk03sc146} 这段代码可以在我的 win 7 中找到。但是我需要远程访问 Win XP。请帮助。

6D  04A     d   1.33    Num -           
A2  01D i   d   0.00    Ctrl            
A4  038 i   d   0.02    Alt             
03  146 i   d   0.02    Break           
03  146 i   u   0.02    Break           
A2  01D i   u   0.02    Ctrl            
A4  038 i   u   0.02    Alt             
6D  04A     u   0.16    Num -           
74  03F     d   1.00    F5              
74  03F     u   0.09    F5              
74  03F     d   2.02    F5              
74  03F     u   0.13    F5              
74  03F     d   0.19    F5              
74  03F     u   0.11    F5              
A2  01D     d   1.31    Ctrl            
A4  038     d   0.00    Alt             
03  146     u   0.39    Break           
A2  01D     u   0.06    Ctrl            
A4  038     u   0.03    Alt             
74  03F     d   3.08    F5       
Run Code Online (Sandbox Code Playgroud)

Pet*_*ter 5

CapsLock即使 AHK 在 RDP 之前启动,也可以从 AHK 捕获该密钥,它是 RDP 传递给其他键盘挂钩的唯一密钥。

这可以在本地计算机上完成。当您在本地计算机上而不是在远程计算机上执行此操作时,您可以使用 AHK 获取 MSTSC 的窗口 id,并将恢复命令传递给窗口(不发送密钥,这是非常不可靠的)

;Get MSTSC window (this may have to be "ahk_class TSSHELLWND" for systems other than Win7)
If WinActive("ahk_class TscShellContainerClass") {
    WinGet, active_id, ID, A
    PostMessage, 0x112, 0xF120,,, ahk_id %active_id%   ; 0x112 = WM_SYSCOMMAND, 0xF120 = SC_RESTORE
}
Run Code Online (Sandbox Code Playgroud)

上述命令将使 MSTSC 从全屏状态中断。

完整的例子可以在这里看到(http://code.ecomerc.com/Articles/RotateCube/),它用于从全屏状态下中断 MSTSC 并旋转 Dexpot(一个 3D 窗口管理器)的立方体功能