VBScript SendKeys CTRL+LWIN + TAB?

Я пытаюсь написать простой скрипт, который отправит комбинацию клавиш CTRL+КЛАВИША WINDOWS+TAB. Код ниже отправляет ключи CTRL+ALT+TAB

Set WshShell = WScript.CreateObject("WScript.Shell")
  WshShell.SendKeys "^%{TAB}"

однако, когда я пытаюсь заменить " % "(он же ALT ключ) с LWIN (он же левый ключ Windows) он говорит синтаксическую ошибку.

Я пробовал следующие, но не удача:

Set WshShell = WScript.CreateObject("WScript.Shell")
  WshShell.SendKeys "^{LWIN}{TAB}"

Set WshShell = WScript.CreateObject("WScript.Shell")
  WshShell.SendKeys "^{LWIN}+{TAB}"

Set WshShell = WScript.CreateObject("WScript.Shell")
  WshShell.SendKeys ^{LWIN}+{TAB}

Я знаю, что это как-то связано с возможностью удерживать определенные клавиши, в то время как другие клавиши нажаты, но я не могу понять это правильно.

клавиша windows может быть нажата программно с помощью CTRL+ESC. Есть ли способ установить эту комбинацию как переменную с именем LWIN а затем использовать один из вышеуказанных сценариев?

4 ответов


на всякий случай, если кто-то приземлится здесь в эти годы...
Обходным путем (вместо отправки нажатий клавиш) является вызов непосредственно в приложение:

Set objShell = CreateObject("Shell.Application")
objShell.WindowSwitcher

откроется Task Switcher Приложение Windows. (То же самое, что windows окна+TAB)


попробуйте этот код:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "+(^{LWIN}{TAB})"

Я знаю, что вы ищете VBscript, но похоже, что это маловероятно (чистый VBscript). Вот сообщение, которое решило это через C#.

https://stackoverflow.com/a/10367832/1742115

на этой странице рассказывает, как вызвать DLL C# из вашего VBscript, если вы хотите сохранить некоторые из них в vbs.


Я думаю, что ваш вопрос-это пример проблема по XY и то, что вы на самом деле хотите сделать, это активировать Flip 3D (переключение между окнами). Вы можете сделать это программно, выполнив :

CreateObject("WScript.Shell").Run "rundll32 DwmApi #105"