web-dev-qa-db-ja.com

VBScript SendKeys CTRL + LWIN + TAB?

のキーコンボを送信する簡単なスクリプトを作成しようとしています CTRL+WINDOWS KEY+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 次に、上記のスクリプトの1つを使用しますか?

6
daniel11

誰かがここ数年ここに着陸した場合に備えて...
(キーストロークを送信する代わりに)回避策は、アプリケーションを直接呼び出すことです。

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

これにより、Task SwitcherWindowsアプリが開きます。 (と同じ ⊞ windows+TAB

4
gmo

このコードを試してください:

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

あなたの質問は XY問題 の例だと思います。実際にやりたいのは、Flip 3D(ウィンドウの切り替え)をアクティブにすることです。 rundll32 DwmApi #105コマンドを実行することにより、プログラムでこれを行うことができます。

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

あなたがVBscriptを探していることは知っていますが、それはありそうもないようです(純粋なVBscript)。これは、C#を介してこれを解決した投稿です。

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

このページ これの一部をvbsに保持する場合は、VBscriptからC#DLLを呼び出す方法を説明します。

1
RLH