IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[SendKeys] Simuler la touche Windows


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut [SendKeys] Simuler la touche Windows
    Bonjour,

    je cherche le moyen de simuler la touche Windows avec SendKeys.

    Je n'ai pas trouvé chez mon ami ...

    Cordialement,
    Psy

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Bonjour Psycho

    l'aide VBA dans excel reserve parfois des surprises

    SendKeys, méthode
    Voir aussi S'applique à Exemple Spécificités
    Cette méthode envoie des touches à l'application active.

    expression.SendKeys(Keys, Wait)

    expression Facultative. Expression qui renvoie un objet Application.

    Keys Argument de type Variant obligatoire. Touche ou la combinaison de touches que vous voulez envoyer à l'application, sous forme de texte.

    Wait Argument de type Variant facultatif. Affectez-lui la valeur True pour que Microsoft Excel attende le traitement des touches avant de rendre le contrôle à la macro. Affectez-lui la valeur False (ou ne spécifiez pas cet agument) pour continuer l'exécution de la macro sans attendre le traitement des touches.

    Notes
    Cette méthode place les touches dans une zone tampon spécialisée. Dans certains cas, vous devez appeler cette méthode avant d'appeler la méthode qui va traiter les touches. Par exemple, pour envoyer un mot de passe à une boîte de dialogue, vous devez appeler la méthode SendKeys avant d'afficher la boîte de dialogue.

    L'argument Keys peut indiquer une quelconque touche unique ou associée à une des touches ALT, CTRL ou MAJ ou à une combinaison de ces dernières. Chaque touche est représentée par un ou plusieurs caractères, tels que "a" pour la lettre a ou "{ENTER}" pour la touche ENTRÉE.

    Pour spécifier des caractères non affichés lorsque vous appuyez sur la touche correspondante (par exemple ENTER ou TAB), utilisez les codes listés dans la table suivante. Chaque code de la table représente une touche du clavier.

    Touche Code
    AIDE {HELP}
    ATTN {BREAK}
    BAS {DOWN}
    DÉBUT {HOME}
    DÉFILEMENT {SCROLLLOCK}
    DROITE {RIGHT}
    ÉCHAP {ESCAPE} ou {ESC}
    EFFACER {CLEAR}
    ENTRÉE (pavé numérique) {ENTER}
    ENTRÉE ~ (tilde)
    F1 à F15 {F1} à {F15}
    FIN {END}
    GAUCHE {LEFT}
    HAUT {UP}
    INSERTION {INSERT}
    PAGE PRÉCÉDENTE {PGUP}
    PAGE SUIVANTE {PGDN}
    RET.ARR {BACKSPACE} ou {BS}
    RETOUR {RETURN}
    SUPPRESSION ou SUPPR {DELETE} ou {DEL}
    TABULATION {TAB}
    VERR.MAJ {CAPSLOCK}
    VERR.NUM {NUMLOCK}


    Vous pouvez aussi spécifier des touches combinées avec MAJ et/ou CTRL et/ou ALT. Pour spécifier une combinaison de touches, utilisez le tableau suivant.

    Pour combiner une touche avec : Précédez le code de la touche de :
    ALT % (signe de pourcentage)
    CTRL ^ (signe d'insertion)
    MAJ + (signe plus)


    Exemple
    Cet exemple montre comment utiliser la méthode SendKeys pour quitter Microsoft Excel.

    Application.SendKeys("%fx")
    bonne soirée

  3. #3
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut
    et la touche "Windows" dans tout ça ?

  4. #4
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    j'ai fait plusieur essais sous DOS avec un vieux Qbasic

    pas moyen de recupérer le code de la touche, à chaque fois je rends la main à windows. Le controle de cette touche est realisé à un niveau inferieur au system........... désolé, je ne peux pas t'en dire plus

    salutations

  5. #5
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut
    arf... je vais encore chercher... ya bien un gars qui a trouvé sur Google... un perdu dans un coin perdu du monde, avec 2 ou 3 vies supplémentaires sur Second Life (un geek a 101%, quoi) qui a dû chercher et trouver ^^

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Par défaut Ctrl+Esc agit comme la touche windows
    Réponse 12 ans plus tard lol. Je viens de tester, chez moi ça fonction
    Sendkeys "^{esc}"

  7. #7
    Membre du Club
    Homme Profil pro
    amateur débutant
    Inscrit en
    Août 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur débutant

    Informations forums :
    Inscription : Août 2019
    Messages : 8
    Par défaut windows + M
    et 2 ans plus tard... ;-)
    comment simuler Windows + M ?
    merci

  8. #8
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 3 163
    Par défaut
    Bonjour bonjour !

    Je n'ai pas trouvé de moyen de simuler la touche Windows, mais j'ai trouvé un moyen de réduire le zoom de la loupe Windows 10, de façon moins problématique qu'avec juste l'interface par défaut.

    La première idée était de sélectionner la fenêtre de titre "Loupe".

    Puis, sur la machine de quelqu'un qui utilisait un autre mode pour la loupe, je me suis rendu compte qu'on pouvait avoir deux fenêtres de titre "Loupe" :
    • celle qui montre le contenu agrandi de la zone sélectionnée de l'écran
    • celle qui gère les paramètres de loupe


    (la seconde étant, bien entendu, la seule qui apparaît dans d'autres modes).

    J'ai donc modifié mon programme, et je teste le nombre de fenêtres avec le titre "Loupe" :
    • si il n'y en a qu'une, je la mets au premier plan
    • si il y en a deux je mets la moins haute au premier plan
    • si il y en a plus, j'écris dans la console "trop de fenêtres Loupe"


    et si le dernier cas de figure se produit, alors il faudra que j'écrive une troisième version.

    Le programme est en C#, je peux caser ça dans un coin ...

    C'est un programme de type console, il faut l'appeler avec un raccourci qui réduit la fenêtre console.

    Si les forums MSDN n'avaient pas été en panne cette semaine, peut-être aurions-nous eu d'autres avis sur cette histoire de touche Windows, et/ou une vraie programmation du zoom de la loupe ...
    https://answers.microsoft.com/fr-fr/...f-0a0702f3a5e8
    https://answers.microsoft.com/fr-fr/...e-377980ed2a16

  9. #9
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 259
    Par défaut
    Hello,
    voici un code pour simuler la touche windows :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    #If VBA7 Then
      Declare PtrSafe Sub keybd_event Lib "User32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As LongPtr, ByVal dwExtraInfo As LongPtr)
    #Else
      Declare Sub keybd_event Lib "User32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    #End If
     
    Sub SendWindowsKey()
    Const KEYEVENTF_KEYUP As Long = &H2
    Const VK_RWIN As Long = &H5C
    Const VK_LWIN As Long = &H5B
    keybd_event VK_LWIN, 0&, 0&, 0&
    keybd_event VK_LWIN, 0&, KEYEVENTF_KEYUP, 0&
    End Sub

    Ami calmant, J.P

  10. #10
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 259
    Par défaut
    Citation Envoyé par Stef_51 Voir le message
    et 2 ans plus tard... ;-)
    comment simuler Windows + M ?
    merci
    et 3 ans plus tard... une solution possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub SendWindows_M()
    Const KEYEVENTF_KEYUP As Long = &H2
    Const VK_RWIN As Long = &H5C
    Const VK_LWIN As Long = &H5B
    keybd_event VK_LWIN, 0&, 0&, 0&  ' Enfoncer touche Win Gauche
    keybd_event Asc("M"), 0&, 0&, 0&    ' Enfoncer la touche M
    keybd_event Asc("M"), 0&, KEYEVENTF_KEYUP, 0&  ' Relever touche M
    keybd_event VK_LWIN, 0&, KEYEVENTF_KEYUP, 0& ' Relever touche Win Gauche
    End Sub

  11. #11
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 3 163
    Par défaut
    Bonjour

    Je viens mettre à jour ce que j'ai dit l'autre jour.

    Sélectionner la fenêtre Loupe s'est confronté sur une autre machine à une difficulté : les fenêtres de loupe n'ont pas de titre sur cette machine. J'ai commencé à chercher si ça peut se régler quelque part dans les paramètres, et je prévois de tester avec les noms de classes plutôt que les titres.

    Ensuite, en adaptant d'un forum allemand j'ai trouvé le moyen d'émuler Windows "-", mais pas en passant par SendKeys.

    En arrivant ici je vois que Bidouilleur a publié la même chose.

    Voici le code d'un programme C# qui envoie [{Windows}-], donc réduit le zoom d'un cran.

    Pour sûr, c'est ce que ferait SendKeys si il avait le bon code en entrée. Si quelqu'un a la source de SendKeys, ça permettra de le mettre à jour.

    Ah oui mais ça veut dire que ... il faudrait recompiler tout le langage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace WinMns
    {
        internal class Program
        {
            [DllImport("user32.dll")]
            internal static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
     
     
     
            static void Main(string[] args)
            {
                //const int KEYPlus = 0x6B;
                const int KEYMinus = 0X6D;
                const int KEYUP = 0x02;
                byte KEYWIN = 0x5B;
     
                keybd_event(KEYWIN, 0, 0, 0);
                keybd_event(KEYMinus, 0, 0, 0);
                keybd_event(KEYWIN, 0, KEYUP, 0);
                keybd_event(KEYMinus, 0, KEYUP, 0);
            }
        }
    }
    Si il y a des puristes ils vont trouver à redire, normalement on doit relâcher "-" avant Windows, et je ne me suis pas embêté pour les références j'ai laissé celles par défaut, certaines ne servent pas.

Discussions similaires

  1. Simulation de touches dans un service Windows
    Par maurice.b dans le forum Windows
    Réponses: 25
    Dernier message: 01/09/2010, 02h30
  2. [VB.NET] Bloquer touches Windows
    Par seemax dans le forum Windows Forms
    Réponses: 13
    Dernier message: 04/10/2007, 10h19
  3. Simuler une touche par une autre sous Windows
    Par sdelaunay dans le forum Windows
    Réponses: 2
    Dernier message: 05/05/2006, 15h31
  4. [Turbo Pascal] Simulation de touche du clavier
    Par trapiste dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 04/09/2004, 17h35
  5. [Applet]simuler une touche clavier
    Par mat10000 dans le forum Interfaces Graphiques en Java
    Réponses: 19
    Dernier message: 12/12/2003, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo