Чтобы выйти из окна консоли VMWare в моей системе XP, мне нужно:
- Нажмите обе клавиши Shift
- Нажмите Cntrl-Alt
Кто-нибудь знает, как я могу сделать это в Autohotkey?
Чтобы выйти из окна консоли VMWare в моей системе XP, мне нужно:
Кто-нибудь знает, как я могу сделать это в Autohotkey?
Ответ Рассела дает вам большую часть пути, используя RDP в качестве примера. Немного сложнее обнаружить, что вы находитесь в консоли vsphere/vmware, но это можно сделать с помощью приведенного ниже. Я прокомментировал изменения / дополнения
#UseHook
#SingleInstance force
; A window's title can contain WinTitle anywhere inside it to be a match
SetTitleMatchMode, 2
setTimer, windowWatch, 500
windowWatch:
; if rdp OR (partial title matching vsphere AND you are in the console captured section)
if WinActive("ahk_class TscShellContainerClass") or (WinActive(" - vSphere Client") and Control("MKSEmbedded1")) {
if (!active) {
active := true
Sleep 50
suspend off
}
} else {
active := false
suspend on
}
return
; return ClassNN of mouse position
Control(ClassNN) {
MouseGetPos,,,,control
return (ClassNN = control)
}
Я использую это, чтобы позволить медиа-клавишам воспроизведения / паузы работать в обоих rdp / vsphere
Media_Play_Pause::
Sleep 50
Run "C:\Foobar2000\foobar2000.exe" /playpause
return
Попробуйте это в своем скрипте AHK:
send ^!{LShift}{RShift} ; send ctrl+alt+left shift+right shift
VMWare, скорее всего, устанавливает свою собственную клавиатуру, которая имеет приоритет над AHK. Та же проблема возникает при запуске клиента удаленного рабочего стола. Решение состоит в том, чтобы проверить, активно ли целевое окно, и переустановить хук AHK, если это так. Крюк можно переустановить, приостановив и затем приостановив AHK.
Вот мой скрипт для удаленного рабочего стола, который должен быть легко настраиваем для VMWare:
; Script by Russell Davis, http://russelldavis.blogspot.com/
; with inspiration from http://www.autohotkey.com/forum/topic5702.html
; and http://www.autohotkey.com/forum/topic1662.html
#UseHook
#SingleInstance force
setTimer, windowWatch, 500
windowWatch:
if WinActive("ahk_class TscShellContainerClass") {
if (!active) {
active := true
; Short sleep to make sure remote desktop's hook is in place first
Sleep 50
; Coming out of suspend mode recreates the keyboard hook, giving
; our hook priority over the remote desktop client's.
suspend off
}
} else {
active := false
suspend on
}
return
; Be careful if using a hotkey with an Alt or Win modifier. The modifier's
; keyup event may trigger a system action. AHK is supposed to work around this,
; but it doesn't seem to work in this case.
; See http://www.autohotkey.com/forum/topic22378.html for a related discussion.
^+CapsLock::
; Need a short sleep here for focus to restore properly.
Sleep 50
WinMinimize ahk_class TscShellContainerClass
return