Как создать горячую клавишу для активации определенной виртуальной машины VMware Workstation?
Я использую последнюю версию VMware Workstation (11.1.0) в Windows 7 x64 и хочу, чтобы можно было нажимать клавиши "Ctrl + 1", чтобы перейти к VM #1, "Ctrl + 2", чтобы перейти ВМ № 2 и "Ctrl + 3" для перехода к ВМ № 3.
Звучит просто, правда? Это не так.
В Mac OS X достижение этой функциональности тривиально с VMware Fusion в сочетании с Spaces / Mission Control - вы можете просто поместить каждую виртуальную машину в отдельное пространство, а затем определить любые нужные вам горячие клавиши. Я перехожу с OS X и хочу такую же функциональность.
Для справки, вот несколько потенциальных решений, которые я попробовал и могу проверить, что они не работают:
1) AutoHotkey
AutoHotkey можно использовать для создания горячих клавиш:
^1::WinActivate, Win7(1) - VMware Workstation
^2::WinActivate, Win7(2) - VMware Workstation
^3::WinActivate, Win7(3) - VMware Workstation
Они работают для входа в виртуальные машины, но не для выхода; Рабочая станция будет выдавать "Ctrl + 1" на виртуальную машину, и AutoHotkey не имеет приоритета, даже если AutoHotkey запускается от имени администратора.
2) Приостановить / Отменить приостановку с помощью AutoHotkey
Этот многообещающий пост от Ника Стерджесса предполагает, что приостановка и что приостановка AutoHotkey при активном окне VMware решит проблему.
Однако даже после копирования точного кода и внесения необходимых изменений в строку я не могу заставить его работать с рабочей станцией.
3) Удаленный рабочий стол и / или VNC
Одним из возможных решений, если бы все 3 виртуальные машины работали под управлением Windows, было бы использовать функцию удаленного рабочего стола Microsoft. Однако одна или несколько виртуальных машин, которые я собираюсь использовать, будут работать под управлением Linux.
В Linux можно просто использовать VNC. Однако VNC имеет значительные недостатки по сравнению с собственным окном консоли VMware Workstation: нет звука, разрешение не будет автоматически масштабироваться, производительность будет плохой и т. Д.
Наконец, виртуальные машины будут находиться в 1) сетях, которые не будут подключены к хосту через сетевой адаптер с мостовым соединением (с отключенным сетевым адаптером на хосте), и 2) с использованием VPN без какого-либо разделенного туннеля. Таким образом, не будет возможности подключения ни к удаленному рабочему столу, ни к VNC.
4) Крюк для клавиатуры Windows
В этом информативном посте Люк объясняет, как использовать ловушку Windows для перехвата нажатий клавиш с помощью C++.
Однако после тестирования с помощью демонстрационной программы кажется, что этот метод не перехватывает нажатия клавиш, отправленные на VMware Workstation.
5) FullScreenSwitch.directKey
Кажется, что в VMware Workstation раньше была встроена такая функциональность, как описано в этом потоке SuperUser.
Однако в документации VMware говорится, что это для VMware Workstation 5.0. Я попытался добавить эти строки в мой файл VMX, и они не имели никакого эффекта, поэтому кажется, что эта функциональность, возможно, устарела где-то в промежутке между Рабочей станцией 5 и 11.
6) PSExec
Уэйд Хэтлер упоминает, что он выполняет это, используя PSExec для активации соответствующего сценария AutoHotkey на хост-компьютере в этом сообщении на форуме.
Это решение сомнительно в том, что вы должны хранить пароль вашего хост-компьютера в виде открытого текста, чтобы передать его PSExec.
Regardless, this solution will not work for the reasons also described in #3 above: the VMs in question will be on 1) networks that won't be connected to the host via a bridged NIC (with the NIC disabled on the host) and 2) using a VPN without any split tunnel. So there will not be guaranteed connectivity between the host and the guest.
7) Execute a "Host" keystroke between every "Ctrl + #" keystroke
I use "Ctrl" as my VMware Workstation Host hotkey rather than the default of "Ctrl + Alt", because it is much faster to activate. Even with this optimization, I have to press and completely release Ctrl in order for input to be relinquished from a VM. Only then can I utilize my AutoHotkey hotkeys from #1 above.
This becomes problematic in the situation where I need to quickly flip through different VMs and perform a bit of work (keystrokes) on each one. The amount of keyboard input in order to switch to each VM is essentially doubled, so this is not an adequate solution.
8) Use the "Host + Left/Right Arrow" hotkey and/or VMware-KVM.exe for cycling functionality
This is problematic in that when I have 10 or more VMs open at a time, rotating through all of them becomes incredibly cumbersome and inefficient.
9) Programs that emulate OS X Spaces / Mission Control
Windows programs such as Dexpot, Desktops, and Virtual Dimensions all allow Spaces-like functionality on Windows. However, these 3 programs in particular all have the same problem that AutoHotkey has - the hotkeys to activate a particular desktop are preempted by VMware workstation and not passed to the host machine.
1 ответ
The answer below, while correct for most products, does not work for VMware or other products that take priority control of the keyboard.
It turns out that the current version of VMware installs a keyboard handler in Windows, that when VMware has the focus, intercepts with priority all keyboard keys and does not pass practically any to the host, except for Ctrl-Alt-Del if Enhanced Virtual Keyboard is not enabled.
Methods that worked in previous versions, such as the pass-through of all Ctrl+Alt combinations, have for some unknown reason now been omitted in VMware.
Now add to this the usage in the VM of a blocking VPN server, which blocks out the entire local network, leaveing us only the host keyboard and mouse as possible mechanisms, to now have a real big problem.
I can see only two solutions :
- Mouse oriented: Use a virtual desktops product such as Dexpot that has a graphical console so desktops are switched with a click,
- Keyboard oriented: Requires switching from VMware to VitualBox or Hyper-V who might let the host intercept some more keyboard events (experimenting is required).
A solution under Windows is to create multiple virtual desktops and assigning each VM to its own virtual desktop.
The following free virtual desktop products support global hotkeys :
Dexpot
The most feature-complete. See this how-to article on using mouse gestures and hotkeys.
Настольные компьютеры
Created by the Microsoft Fellow Mark Russinovich, it should have the best integration with Windows.
Virtual Dimension
У меня нет личного опыта с этим.