web-dev-qa-db-ja.com

Windowsキーをバッチスクリプトで送信する

最近、バッチスクリプトを使用してSendKeys関数を使用しています。

タブキーなどの特定のキーをウィンドウに入力する方法を理解しました。

%SendKeys% "{TAB}"

またはバックスペースキー:

%SendKeys% "{BACKSPACE}"

しかし、Windowsキーを押さずに入力しようとしています。

残念ながら、そのバッチ名はわかりません。私はもう試した:

WIN
WINDOWS
WINKEY
START
LWIN

しかし、どれもうまくいきませんでした。

私はこれをどこでも探しましたが、助けていただければ幸いです。

5
Zeke Young

sendkey'swindows home logoをシミュレートする方法は現在ありませんが、これは不可能ではありません。

windowsショートカットキー を見ると、次のキーの組み合わせでシミュレートOpen Startできることがわかります。 Ctrl + Esc

これをバッチでシミュレートするには、次を使用できます:powershell -c "$wshell = New-Object -ComObject wscript.Shell; $wshell.SendKeys('^{ESCAPE}')またはあなたの場合:%SendKeys% "^{ESCAPE}"

Sendkeysで述べたように:

  • "^"-をシミュレートします Ctrl キーを押します。
  • "{ESCAPE}"-をシミュレートします Esc キーを押します。
3
John Kens

押されているウィンキーをシミュレートするプログラムを作成できます。

WinKey + R.VB

Imports System.Runtime.InteropServices
Imports System.Windows.Forms

Public Module SendWinKey

    Const KEYEVENTF_KEYDOWN As Integer = &H0
    Const KEYEVENTF_KEYUP As Integer = &H2

    Declare Sub keybd_event Lib "User32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As UInteger, ByVal dwExtraInfo As UInteger)

       Public Sub Main()    
           keybd_event(CByte(Keys.LWin), 0, KEYEVENTF_KEYDOWN, 0) 'press the left Win key down
           keybd_event(CByte(Keys.R), 0, KEYEVENTF_KEYDOWN, 0) 'press the R key down
           keybd_event(CByte(Keys.R), 0, KEYEVENTF_KEYUP, 0) 'release the R key
           keybd_event(CByte(Keys.LWin), 0, KEYEVENTF_KEYUP, 0) 'release the left Win key
       End Sub
End Module

デスクトップに置きます。

コマンドプロンプトを開き、次のように入力します。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc "%userprofile%\desktop\Win+R.vb" /out:"%userprofile%\Desktop\Win+R.exe" /target:winexe

Win + R.exeというファイルがデスクトップに表示されます。それをパスのどこかに移動します。

1
CatCat