Convertir un caractere Ascii vers UShort (KEYBDINPUT)

Résolu
cs_Alien Messages postés 69 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 17 février 2024 - 10 mars 2023 à 19:38
dysorthographie Messages postés 88 Date d'inscription jeudi 27 janvier 2022 Statut Membre Dernière intervention 20 février 2024 - 11 mars 2023 à 12:32

Bonjour,

Cela fait 3 jours que je cherche en vains une solution pour convertir un caractère ascii vers un Ushort de la structure Keybdinput

J'ai ce bout de programme 

Dim Inpts(1) As INPUT

Inpts(0).type = InputType.Keyboard
Inpts(0).ki.wVk = 96
Inpts(0).ki.dwFlags = KEYEVENTF.KEYUP
Inpts(1).type = InputType.Keyboard
Inpts(1).ki.wVk = 96
Inpts(1).ki.dwFlags = KEYEVENTF.KEYDOWN


SendInput(Inpts.Length, Inpts, Marshal.SizeOf(GetType(INPUT)))

Pour envoyer le caractère "0" je dois mettre 96 et ça fonctionne mais ce que j'aimerais c'est savoir comment je peux convertir "0" -> 96 

une méthode qui pourrait fonctionner pour n'importe quel caractère ascii 

Quelqu'un pourrait m'éclairer 

En complément je précise que je dois passer par la fonction SendInputs et pas une autre.


2 réponses

cs_Alien Messages postés 69 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 17 février 2024
Modifié le 10 mars 2023 à 22:04

Je vais me répondre à moi même, je sais pas si c'est la meilleur solution mais j'ai réussi en faisant comme ci-dessous
à l'aide de la fonction API SendInputs (voir le site de Pinvoke)

je positionne mon curseur et j'envoi le texte défini dans ma procédure

    Public Shared Sub MouseMoveText(dx As UInteger, dy As UInteger, Text As String)
        Try
            Dim Inpts(Text.Length - 1 + 2) As INPUT

            Inpts(0).type = InputType.Mouse
            Inpts(0).mi.dx = dx
            Inpts(0).mi.dy = dy
            Inpts(0).mi.dwFlags = MOUSEEVENTF.ABSOLUTE + MOUSEEVENTF.MOVE + MOUSEEVENTF.LEFTDOWN

            Inpts(1).type = InputType.Mouse
            Inpts(1).mi.dx = dx
            Inpts(1).mi.dy = dy
            Inpts(1).mi.dwFlags = MOUSEEVENTF.ABSOLUTE + MOUSEEVENTF.MOVE + MOUSEEVENTF.LEFTUP

            For Compt = 0 To Len(Text) - 1
                Inpts(Compt + 2).type = InputType.Keyboard
                Inpts(Compt + 2).ki.wVk = 0
                Inpts(Compt + 2).ki.wScan = AscW(Text.Substring(Compt, 1))
                Inpts(Compt + 2).ki.time = 0
                Inpts(Compt + 2).ki.dwFlags = KEYEVENTF.[UNICODE]
            Next Compt

            SendInput(Inpts.Length, Inpts, Marshal.SizeOf(GetType(INPUT)))

        Catch ex As Exception
        End Try
    End Sub

Voila, si vous avez mieux je suis preneur


0
cs_Alien Messages postés 69 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 17 février 2024
11 mars 2023 à 08:18
Public Shared Sub MouseMoveText(dx As UInteger, dy As UInteger, Text As String)
    Try
        Dim Inpts(Text.Length) As INPUT

        Inpts(0).type = InputType.Mouse
        Inpts(0).mi.dx = dx
        Inpts(0).mi.dy = dy
        Inpts(0).mi.dwFlags = MOUSEEVENTF.ABSOLUTE + MOUSEEVENTF.MOVE + MOUSEEVENTF.LEFTDOWN + MOUSEEVENTF.LEFTUP

        For Compt = 1 To Text.Length
            Inpts(Compt).type = InputType.Keyboard
            Inpts(Compt).ki.wVk = 0
            Inpts(Compt).ki.wScan = AscW(Text.Substring(Compt - 1, 1))
            Inpts(Compt).ki.time = 0
            Inpts(Compt).ki.dwFlags = KEYEVENTF.[UNICODE]
        Next Compt

        SendInput(Inpts.Length, Inpts, Marshal.SizeOf(GetType(INPUT)))

    Catch ex As Exception
    End Try
End Sub
0
dysorthographie Messages postés 88 Date d'inscription jeudi 27 janvier 2022 Statut Membre Dernière intervention 20 février 2024 5
11 mars 2023 à 12:32

Bonjour,

en VB.net c'est ça!

Dim v As Int32 = Convert.ToInt32("0"c)
0
Rejoignez-nous