Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Sendinput et vb.NET [ Windows / API ] (devoluti0n)

samedi 7 avril 2007 à 17:34:00 | Sendinput et vb.NET

devoluti0n

Bonjour !

Je n'arrive pas à trouver d'éxplications claires quand à l'utilisation de sendinput en vb.net.

La conversion de vb6 à v.net étant périeuse, je me réfere à vous pour me donner des éxemples d'utilisation.

Merci d'avance !

lundi 9 avril 2007 à 10:56:21 | Re : Sendinput et vb.NET

devoluti0n

S'il vous plait ? je fais tous les forums à la recherche d'une ame charitable :)

lundi 9 avril 2007 à 17:54:47 | Re : Sendinput et vb.NET

devoluti0n

Aller s'il vous plait !

J'ai juste besoin qu'on m'aide à changer sa :

[code]
' Declarations and such needed for the example:
' (Copy them to the (declarations) section of a module.)
Public Type KEYBDINPUT
      wVk As Integer
      wScan As Integer
      dwFlags As Long
      time As Long
      dwExtraInfo As Long
End Type
Public Const VK_P = &H50  ' using vbKeyP instead would also work
Public Const KEYEVENTF_KEYUP = &H2
Public Type INPUT_TYPE
      dwType As Long
      xi(0 To 23) As Byte
End Type
Public Const INPUT_KEYBOARD = 1
Public Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As INPUT_TYPE, _
 ByVal cbSize As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source _
 As Any, ByVal Length As Long)

' *** Place the following code inside the form window. ***

Private Sub Command1_Click()
 Dim inputevents(0 To 3) As INPUT_TYPE  ' holds information about each event
 Dim keyevent As KEYBDINPUT             ' temporarily hold keyboard input info
 
 ' Load the information needed to imitate pressing the P key.
 With keyevent
  .wVk = VK_P       ' the P key
  .wScan = 0        ' not needed
  .dwFlags = 0      ' press the key down
  .time = 0         ' use the default
  .dwExtraInfo = 0  ' not needed
 End With
 ' Copy the structure into the input array's buffer.
 inputevents(0).dwType = INPUT_KEYBOARD
 CopyMemory inputevents(0).xi(0), keyevent, Len(keyevent)
 
 ' Do the same as above, but for releasing the P key.
 With keyevent
  .wVk = VK_P       ' the P key
  .wScan = 0        ' not needed
  .dwFlags = KEYEVENTF_KEYUP  ' release the key
  .time = 0         ' use the default
  .dwExtraInfo = 0  ' not needed
 End With
 inputevents(1).dwType = INPUT_KEYBOARD
 CopyMemory inputevents(1).xi(0), keyevent, Len(keyevent)
 
 ' into the array, finally send it into the input stream.
 SendInput 2, inputevents(0), Len(inputevents(0))
End Sub
[/code]

Pour le rendre compatible vb.net !


J'ai bien fait :

[code]
Public Class Form1
    Public Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, ByVal pInputs As INPUT_TYPE, ByVal cbSize As Long) As Long
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Short
    Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByVal Destination As IntPtr, ByVal Source As IntPtr, ByVal Length As Long)
    Public Structure KEYBDINPUT
        Dim wVk As Integer
        Dim wScan As Integer
        Dim dwFlags As Long
        Dim time As Long
        Dim dwExtraInfo As Long
    End Structure
    Public Const VK_P = &H50  ' using vbKeyP instead would also work
    Private Const VK_CTRL As Long = &HA2
    Private Const VK_SPACE As Long = 32
    Public Const KEYEVENTF_KEYUP = &H2
    Public Structure INPUT_TYPE
        Dim dwType As Long
        Dim xi As Byte
    End Structure
    Public Const INPUT_KEYBOARD = 1

 


    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If GetAsyncKeyState(VK_CTRL) Then
            Dim inputevents(0 To 4) As INPUT_TYPE  ' holds information about each event
            Dim keyevent As KEYBDINPUT             ' temporarily hold keyboard input info
        End If
        With keyevent
            .wVk = VK_SPACE   ' the Space key
            .wScan = 0        ' not needed
            .dwFlags = 0      ' press the key down
            .time = 0         ' use the default
            .dwExtraInfo = 0  ' not needed
        End With
        ' Copy the structure into the input array's buffer.
        inputevents(0).dwType = INPUT_KEYBOARD
        CopyMemory(inputevents(0).xi(0), keyevent, Len(keyevent))

        ' Do the same as above, but for releasing the P key.
        With keyevent
            .wVk = VK_SPACE   ' the Space key
            .wScan = 0        ' not needed
            .dwFlags = KEYEVENTF_KEYUP  ' release the key
            .time = 0         ' use the default
            .dwExtraInfo = 0  ' not needed
        End With
        inputevents(1).dwType = INPUT_KEYBOARD
        CopyMemory(inputevents(1).xi(0), keyevent, Len(keyevent))

        SendInput(2, inputevents(0), Len(inputevents(0)))
    End Sub
[/code]
Mais il me dit que inputevents et keyevent ne sont pas déclarés, hors :

[code]            Dim inputevents(0 To 4) As INPUT_TYPE  ' holds information about each event
            Dim keyevent As KEYBDINPUT             ' temporarily hold keyboard input info
[/code]

Et enfin j'ai retranscrit
[code]
xi(0 To 23) As Byte[/code]

En [code]
Dim xi As Byte[/code] mais j'ai un doute sur le si sa va changer quelque chose =)

Merci s'il vous plait de prendre 2 minutes pour ceux qui savent à m'aider :(


mardi 10 avril 2007 à 09:37:31 | Re : Sendinput et vb.NET
jeudi 7 août 2008 à 22:18:34 | Re : Sendinput et vb.NET

werdDomain

Tu obtien surment une erreur ex "Debalencement de la pile ..." ou declaration non conforme

 la conversion de Long, de vb6, dans les declarations api, est le type Integer,

pour la conversion de type, tu peut utiliser Ctype, comme sa:

dim I as Intptr = 0&
dim O as object = i 'la conversion de I à O ne retourne aucune erreur
dim II as Intptr = O 'Ici la conversion retourne une erreur, voici comment faire :

dim II as Intptr = Ctype(O, Intptr) 'Ctype(Expresion as Object, Type as Type)as Object
'ne retourneras pas d'erreur

jespere t'avoir aider unpeut dans ta conversion :p




Cette discussion est classé dans : net, vb, utilisation, sendinput


Répondre à ce message

Sujets en rapport avec ce message

Utilisation de DateTimePicker sous vb.net pour creer un Agenda [ par benoul ] Bonjour,  Je souhaiterai réaliser un agenda sous vb.net.J'ai des problèmes avec l'utilisation de DateTimePicker, pouvez vous m'expliquer comment fonct question sur l'utilisation de "dataset "en vb.net [ par wacssine ] bonjour,est ce que je peux utiliser la dataset en mode connecté dans vb.net utilisation du cm11 en vb.net [ par berpontini ] bonjours a tousvoila mon souci, je souhaite piloter mon module cm11 (interface courant porteur) directement en creeant un programmeje souhaite envoyer aide pour avoir un guide d'utilisation du VB.NET [ par hayfoufa ] Bonjour, je suis débutante en VB.NET et je vais l'utiliser dans mon projet, je vouderai avoir de l'aide pour savoir l'utiliser pour cela je vouderai s [VBFR-->ASP]Utilisation de HttpUtility vb.net [ par Iraitika ] Bonjour, j'essai d'interpréter du code HTML dans une textbox. J'ai l'utilisation de HTTPUtility.HTMLEncode et Decode qui a l'air pas malMais ma textbo utilisation de excel avec vb.net [ par nicolasbonnet ] Salut je voudrait lire un fichier excel (sur plusieurs lignes et colonnes).j'ai ajouté la référence : Microsoft.Office.Interop.Excel.dllmais je n'arri utilisation de l'excel comme un intermédiaire entre vb.net et sql server [ par fattou86 ] j'ai besoin de présenteé un tableau de format un peux compliqué (fusion des cellules.....) dans vb.net, j'ai eu l'idée d'utiliser Excel comme solution Thread vb.net utilisation de la memoire [ par FLO1978 ] Bonjour , J'effectue actuellement un logiciel utilisant les trhreads,Je n'arrive malheuresement pas a géré la mémoire utilisé par ces thread ainsi que Pb d'utilisation avec EnableStatic en VB.NET [ par TheEwook ] Bonjour à tous, Je n'arrive pas à utiliser cette fonction pour pourvoir modifier l'adresse IP et le Masque de Sous-Réseau sur une interface choisi :Vo VB.net : utilisation de getpixel et setpixel [ par clement127 ] Bonsoir voilà, je travaille sur unr petit projet pour apprendre à utiliser vb.net et j'aurais besoin de votre aide. Je cherche à changer la couleur de


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.