1

Чтобы выйти из окна консоли VMWare в моей системе XP, мне нужно:

  • Нажмите обе клавиши Shift
  • Нажмите Cntrl-Alt

Кто-нибудь знает, как я могу сделать это в Autohotkey?

3 ответа3

2

Ответ Рассела дает вам большую часть пути, используя 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
1

Попробуйте это в своем скрипте AHK:

send ^!{LShift}{RShift} ; send ctrl+alt+left shift+right shift
1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .