Câu trả lời:
Theo ghi chú của người dùng16659, Reload
làm cho các phím nóng hoạt động trở lại (Nhưng kịch bản của anh ấy không hoạt động với tôi).
Về cơ bản, bây giờ tôi có hai tập lệnh đang chạy, một tập lệnh chứa các phím nóng và hotstrings của tôi "script.ahk"
và một cái khác sẽ tải lại tập lệnh này nếu RDP được tối đa hóa "controller.ahk"
.
kịch bản.ahk:
#SingleInstance force
::hw::Hello World
bộ điều khiển.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
SendInput, {shift}8{shift up}
để gửi *
trong RDP, nhưng nó sẽ gửi 8
trong Windows. SendInput, {shift down}8{shift up}
làm việc theo cách khác.
Để AHK hoạt động với máy khách Terminal Server của Microsoft ở chế độ toàn màn hình, AHK phải tải lại sau khi cửa sổ Remote Desktop được kích hoạt.
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
Không thể thêm nhận xét vào câu trả lời hàng đầu, nhưng tôi đã sửa đổi tập lệnh được đề xuất mà Tahir liên kết với blog của mình trong câu trả lời hàng đầu để làm cho nó sạch hơn và dễ sử dụng hơn.
Các hoạt động sau đây bằng cách tạm dừng tập lệnh cục bộ khi RDP toàn màn hình đang hoạt động thay vì cố gắng giết và khởi động lại phiên bản tập lệnh riêng biệt mỗi khi di chuyển tiêu điểm. Cái này nhẹ hơn và cũng tránh việc xả rác vào khay thông báo với rất nhiều biểu tượng AHK zombie cho các tập lệnh bị giết. Điều này cũng có nghĩa là bạn chỉ có thể thêm phần này vào tập lệnh hiện tại của mình thay vì phải chạy cả hai phần riêng biệt!
; 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
*
sau đó nó sẽ gửi8
...:(