none
Comment faire fonctionner SendKey ?

    Question

  • Bonjour,

    SendKey est bien dans vbNet, toutefois je n'arrive pas à le faire fonctionner, voici le code :

     Sub RichTextBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseWheel
      Select Case e.Delta
       Case Is < 0 : My.Computer.Keyboard.SendKeys("{VbKeyUp}", False)
       Case Is > 0 : My.Computer.Keyboard.SendKeys("{VbKeyDown}", False)
      End Select
     End Sub
    

    Le message d'erreur (le premier), est :

    Mot clé "VbKeyUp" non valide.

    Merci de vos lumières, cordialement.

     

     


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    Tuesday, July 27, 2010 3:05 AM

Answers

  • Bonjour

    Voila toute les correspondances de touches

    Touche

    Code

    RET.ARR

    {BACKSPACE}, {BS} ou {BKSP}

    ATTN

    {BREAK}

    VERR.MAJ

    {CAPSLOCK}

    SUPPR

    {DELETE} ou {DEL}

    BAS

    {DOWN}

    FIN

    {END}

    ENTRÉE

    {ENTER} ou ~

    ÉCHAP

    {ESC}

    AIDE

    {HELP}

    DÉBUT

    {HOME}

    INSERTION

    {INSERT} ou {INS}

    GAUCHE

    {LEFT}

    VERR.NUM

    {NUMLOCK}

    PG.SUIV

    {PGDN}

    PG.PRÉC

    {PGUP}

    IMPR. ÉCRAN

    {PRTSC} (réservé pour une utilisation future)

    DROITE

    {RIGHT}

    ARRÊT.DÉFIL

    {SCROLLLOCK}

    TAB

    {TAB}

    HAUT

    {UP}

    F1

    {F1}

    F2

    {F2}

    F3

    {F3}

    F4

    {F4}

    F5

    {F5}

    F6

    {F6}

    F7

    {F7}

    F8

    {F8}

    F9

    {F9}

    F10

    {F10}

    F11

    {F11}

    F12

    {F12}

    F13

    {F13}

    F14

    {F14}

    F15

    {F15}

    F16

    {F16}

    Addition du pavé numérique

    {ADD}

    Soustraction du pavé numérique

    {SUBTRACT}

    Multiplication du pavé numérique

    {MULTIPLY}

    Division du pavé numérique

    {DIVIDE}

    Pour spécifier une combinaison de touches avec MAJ, CTRL et ALT, faites précéder le code normal de la touche d'un ou plusieurs codes parmi les suivants :

    Touche

    Code

    MAJ

    +

    CTRL

    ^

    ALT

    %


    Cordialement, Troxsa
    Tuesday, July 27, 2010 6:44 AM
  • Bonjour,

    Plus "proprement" ;-) voici la table précédente formatée : http://msdn.microsoft.com/fr-fr/library/system.windows.forms.sendkeys(VS.80).aspx

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    Tuesday, July 27, 2010 7:04 AM
  • Bonjour,

     

    Essayez avec cette fonction :

    <DllImport("user32.dll")> _
      Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal wMsg As UInteger, ByVal wParam As UIntPtr, ByVal lParam As IntPtr) As Integer
      End Function
    

     

     

    Et utilisez-la comme ça au lieu de SendKeys :

     

    SendMessage(RichTextBox1.Handle, CUInt(&HB6), 0, 1) ‘down
     SendMessage(RichTextBox1.Handle, CUInt(&HB6), 0, -1) ‘up
    

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    Tuesday, July 27, 2010 8:28 AM
  • Bonsoir Patrice,

    Autant pour moi, je n'avais même pas vu que c'était UP et DOWN, désormais ça marche à peu près comme je l'aurais voulu, le code :

    Sub RichTextBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseWheel
      Select Case e.Delta
       Case Is > 0 : My.Computer.Keyboard.SendKeys("{UP}", False)
       Case Is < 0 : My.Computer.Keyboard.SendKeys("{DOWN}", False)
      End Select
     End Sub
    

    Merci encore, cordialement.


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marked as answer by EhJoe Tuesday, July 27, 2010 6:52 PM
    Tuesday, July 27, 2010 6:47 PM
  • Bonsoir Gilles,

    En fait ça fonctionne désormais à peu près comme j'aiomerais avec UP et DOWN de SendKey, par contre je tente au maximum de ne pas utiliser d'autres DLL (y en a déjà assez comme ça pour faire des plantage ultérieurs), donc les API c'est quand je ne peux plus faire autrement, je préfère de facto SendKey. Voici le code :

    Sub RichTextBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseWheel
      Select Case e.Delta
       Case Is > 0 : My.Computer.Keyboard.SendKeys("{UP}", False)
       Case Is < 0 : My.Computer.Keyboard.SendKeys("{DOWN}", False)
      End Select
     End Sub
    

    Merci beaucoup, cordialement.

     


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marked as answer by EhJoe Tuesday, July 27, 2010 6:52 PM
    Tuesday, July 27, 2010 6:51 PM

All replies

  • Bonjour

    Voila toute les correspondances de touches

    Touche

    Code

    RET.ARR

    {BACKSPACE}, {BS} ou {BKSP}

    ATTN

    {BREAK}

    VERR.MAJ

    {CAPSLOCK}

    SUPPR

    {DELETE} ou {DEL}

    BAS

    {DOWN}

    FIN

    {END}

    ENTRÉE

    {ENTER} ou ~

    ÉCHAP

    {ESC}

    AIDE

    {HELP}

    DÉBUT

    {HOME}

    INSERTION

    {INSERT} ou {INS}

    GAUCHE

    {LEFT}

    VERR.NUM

    {NUMLOCK}

    PG.SUIV

    {PGDN}

    PG.PRÉC

    {PGUP}

    IMPR. ÉCRAN

    {PRTSC} (réservé pour une utilisation future)

    DROITE

    {RIGHT}

    ARRÊT.DÉFIL

    {SCROLLLOCK}

    TAB

    {TAB}

    HAUT

    {UP}

    F1

    {F1}

    F2

    {F2}

    F3

    {F3}

    F4

    {F4}

    F5

    {F5}

    F6

    {F6}

    F7

    {F7}

    F8

    {F8}

    F9

    {F9}

    F10

    {F10}

    F11

    {F11}

    F12

    {F12}

    F13

    {F13}

    F14

    {F14}

    F15

    {F15}

    F16

    {F16}

    Addition du pavé numérique

    {ADD}

    Soustraction du pavé numérique

    {SUBTRACT}

    Multiplication du pavé numérique

    {MULTIPLY}

    Division du pavé numérique

    {DIVIDE}

    Pour spécifier une combinaison de touches avec MAJ, CTRL et ALT, faites précéder le code normal de la touche d'un ou plusieurs codes parmi les suivants :

    Touche

    Code

    MAJ

    +

    CTRL

    ^

    ALT

    %


    Cordialement, Troxsa
    Tuesday, July 27, 2010 6:44 AM
  • Bonjour,

    Plus "proprement" ;-) voici la table précédente formatée : http://msdn.microsoft.com/fr-fr/library/system.windows.forms.sendkeys(VS.80).aspx

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    Tuesday, July 27, 2010 7:04 AM
  • Oui c'est sur j'aurais pu donner le lien directement :)
    Cordialement, Troxsa
    Tuesday, July 27, 2010 7:07 AM
  • Bonjour Troxsa,

    Meri de me recopier l'aide, mais ma question en somme est "Puis-je avoir la correction de mon code qui ne fonctionne pas" ?

    Je n'en sais pas davantage.

    Cordialement.


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    Tuesday, July 27, 2010 7:35 AM
  • Bonjour Gilles,

    Meri de me donner le lien de l'aide, mais ma question en somme est "Puis-je avoir la correction de mon code qui ne fonctionne pas" ?

    Et qui ne fonctionne toujours pas, dois-je le modifier, y rajouter une déclaratin quelconque ?

    Merci, cordialement.


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    Tuesday, July 27, 2010 7:36 AM
  • Bonjour,

     

    Essayez avec cette fonction :

    <DllImport("user32.dll")> _
      Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal wMsg As UInteger, ByVal wParam As UIntPtr, ByVal lParam As IntPtr) As Integer
      End Function
    

     

     

    Et utilisez-la comme ça au lieu de SendKeys :

     

    SendMessage(RichTextBox1.Handle, CUInt(&HB6), 0, 1) ‘down
     SendMessage(RichTextBox1.Handle, CUInt(&HB6), 0, -1) ‘up
    

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    Tuesday, July 27, 2010 8:28 AM
  • Bonjour,

    Donc en lisant la doc je vois que "{VbKeyUp}" n'existe pas (comme l'indique le message d'erreur ce qui aurait pu inciter à aller voir la doc soi-même).

    "{UP}" existe par contre. Donc remplacer "{VbKeyUp}" (qui n'existe pas) par "{UP}" devrait permettre d'aller plus loin  à défaut de résoudre l'erreur.

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    Tuesday, July 27, 2010 9:36 AM
  • Bonjour,

    Pouvez-vous indiquer l'erreur que vous obtenez à nouveau et si possible le code modifié ? 

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    Tuesday, July 27, 2010 12:01 PM
  • Bonsoir Patrice,

    Autant pour moi, je n'avais même pas vu que c'était UP et DOWN, désormais ça marche à peu près comme je l'aurais voulu, le code :

    Sub RichTextBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseWheel
      Select Case e.Delta
       Case Is > 0 : My.Computer.Keyboard.SendKeys("{UP}", False)
       Case Is < 0 : My.Computer.Keyboard.SendKeys("{DOWN}", False)
      End Select
     End Sub
    

    Merci encore, cordialement.


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marked as answer by EhJoe Tuesday, July 27, 2010 6:52 PM
    Tuesday, July 27, 2010 6:47 PM
  • Bonsoir Gilles,

    En fait ça fonctionne désormais à peu près comme j'aiomerais avec UP et DOWN de SendKey, par contre je tente au maximum de ne pas utiliser d'autres DLL (y en a déjà assez comme ça pour faire des plantage ultérieurs), donc les API c'est quand je ne peux plus faire autrement, je préfère de facto SendKey. Voici le code :

    Sub RichTextBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseWheel
      Select Case e.Delta
       Case Is > 0 : My.Computer.Keyboard.SendKeys("{UP}", False)
       Case Is < 0 : My.Computer.Keyboard.SendKeys("{DOWN}", False)
      End Select
     End Sub
    

    Merci beaucoup, cordialement.

     


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marked as answer by EhJoe Tuesday, July 27, 2010 6:52 PM
    Tuesday, July 27, 2010 6:51 PM