AutoHotKeyホットキーをWindows7のフルスクリーンでリモートデスクトップと連携させるにはどうすればよいですか?
User16659が指摘しているように、Reload
はホットキーを再び機能させます(しかし、彼のスクリプトは私には機能しませんでした)。
基本的に、2つのスクリプトを実行しています。1つにはホットキーとホットストリングが含まれています"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
また、リモートデスクトップ接続「mstsc.exe」の「ローカルリソース」タブにある「Windowsキーの組み合わせを適用する」を「このコンピューター上」に設定する必要があります。
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
トップアンサーにコメントを追加することはできませんが、タヒルがトップアンサーのブログにリンクしている推奨スクリプトを変更して、よりクリーンで使いやすくしました。
以下は、フォーカスが移動するたびに別のスクリプトバージョンを強制終了して再起動するのではなく、フルスクリーン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