[ad_1]
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…
[ad_2]
コメント