Ne fonctionne pas lorsque vous exécutez la barre d’espace à l’aide du code

la programmation


VB.NET
Imports System.Runtime.InteropServices

 <dllimport("user32.dll", setlasterror:="True)">
 Private Shared Function SendInput(
     ByVal nInputs As UInteger,
     ByVal pInputs As INPUT(),
     ByVal cbSize As Integer
 ) As UInteger
 End Function

 ' Define the INPUT structure
 <structlayout(layoutkind.sequential)>
 Structure INPUT
     Public type As Integer
     Public ki As KEYBOARDINPUT
 End Structure

 ' Define the KEYBOARDINPUT structure
 <structlayout(layoutkind.sequential)>
 Structure KEYBOARDINPUT
     Public wVk As UShort
     Public wScan As UShort
     Public dwFlags As UInteger
     Public time As UInteger
     Public dwExtraInfo As IntPtr
 End Structure

 ' Constants for input type and key events
 Const INPUT_KEYBOARD As Integer = 1
 Const KEYEVENTF_KEYUP As UInteger = &H2

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     ' Simulate pressing the space bar using SendInput
     SendSpaceBar()
 End Sub

 Private Sub SendSpaceBar()
     Dim input As New INPUT()
     input.type = INPUT_KEYBOARD
     input.ki.wVk = &H20 ' VK_SPACE code for space bar

     ' Press the space bar
     SendInput(1, {input}, Marshal.SizeOf(GetType(INPUT)))

     ' Release the space bar
     input.ki.dwFlags = KEYEVENTF_KEYUP
     SendInput(1, {input}, Marshal.SizeOf(GetType(INPUT)))
 End Sub

Ce que j’ai essayé :

J’utilise VB pour écrire le script.

Je veux écrire le code pour contrôler la barre d’espace du navigateur Chrome et Edge, mais mon code ne fonctionne pas.

peux m’aider à jeter un oeil merci.

Solution 1

Euh… vous avez lu ce que fait SendInput, n’est-ce pas ? Il alimente les informations du clavier et de la souris dans les files d’attente appropriées, ce qui signifie qu’elles sont extraites par l’application active.
Et puisque vous venez d’appuyer sur un bouton de la souris, ce n’est pas Chrome : c’est votre application.

Vous devez les envoyer vers une fenêtre spécifique (essayez FindWindow et SetForegroundWindow), puis utiliser SendKeys pour envoyer l’espace à Chrome.
Aucune garantie que cela fonctionnera, mais…

コメント

タイトルとURLをコピーしました