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

C# Discussion :

c# Appuie de touche application externe


Sujet :

C#

  1. #1
    Invité
    Invité(e)
    Par défaut c# Appuie de touche application externe
    Bonjour tout le monde
    alors voila j'ai un souci sur un programme que je suis entrain de développer
    Le programme doit pouvoir appuyé sur des touche en fonction des hWnd d'application externe non-active (sans le focus).
    donc actuellement je récupère les hwnd des application j'utilise des thread pour ne pas bloquer mon programme.

    ex : si j'ouvre une calculette Windows je veux que mon programme appuie sur la touche 1 sur cette calculette sans la focus.

    Merci a tous

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai trouvé une méthode qui devrai le faire mais fait appel à :
    using Microsoft.DirectX.DirectInput;
    Comment peut on l'utiliser svp ?
    Sachant que je suis en c# sous winform.

    Merci
    Dernière modification par Domi2 ; 20/09/2012 à 04h55. Motif: Lien non pérenne

  3. #3
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Bonjour,

    Pour l'utiliser, il faut quand même nous dire quelle méthode tu as trouvé, sinon on va pas pouvoir t'aider

  4. #4
    Invité
    Invité(e)
    Par défaut
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    using System;
    using System.Runtime.InteropServices;
    using Microsoft.DirectX.DirectInput;
     
    namespace monProjet
    {
        public static class PressEnter
        {
            [DllImport("user32.dll")]
            public static extern int MapVirtualKey(uint uCode, uint uMapType);
     
            [StructLayout(LayoutKind.Sequential)]
            private struct INPUT
            {
                public UInt32 type;
                public ushort wVk;
                public ushort wScan;
                public UInt32 dwFlags;
                public UInt32 time;
                public UIntPtr dwExtraInfo;
                public UInt32 uMsg;
                public ushort wParamL;
                public ushort wParamH;
            }
     
            private enum SendInputFlags
            {
                KEYEVENTF_EXTENDEDKEY = 0x0001,
                KEYEVENTF_KEYUP = 0x0002,
                KEYEVENTF_UNICODE = 0x0004,
                KEYEVENTF_SCANCODE = 0x0008,
            }
     
            [DllImport("user32.dll")]
            private static extern UInt32 SendInput(UInt32 nInputs,
                                                   [MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] INPUT[] pInputs,
                                                   Int32 cbSize);
     
            public static void Activate()
            {
                INPUT[] InputData = new INPUT[1];
     
                InputData[0].type = 1;
                InputData[0].wScan = (ushort)Key.A;
                InputData[0].dwFlags = (uint)SendInputFlags.KEYEVENTF_SCANCODE;
                InputData[0].time = 0;
                InputData[0].dwExtraInfo = UIntPtr.Zero;
     
                // send keydown
                if (SendInput(1, InputData, Marshal.SizeOf(InputData[0])) == 0)
                {
                    System.Windows.Forms.MessageBox.Show("Erreur lors de l'envoie de la touche - Raison : " +
                                                       Marshal.GetLastWin32Error().ToString());
                }
            }
        }
    }
    Mon souci c'est que je n'arrive pas a déclarer le directx
    l'application utilise elle aussi directx c'est pour cella que rien ne marcher

  5. #5
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Regarde du côté de la fonction PostMessage et du paramètre WM_KEYDOWN, WM_KEYUP, etc...

  6. #6
    Invité
    Invité(e)
    Par défaut
    justement sa ne marche pas car l'application elle récupère via le directX
    Enfin c'est se que j'ai lu sur des forums
    le je suis entrain de chercher un clavier virtuel en c# qui utilise le directX mais c'est pas facile a trouver

  7. #7
    Invité
    Invité(e)
    Par défaut
    J'ai installer le DirectX SDK (DXSDK_Jun10) mais je ne voie pas comment l'utiliser dans Visual Studio.
    Si quelqu'un a une idée sa m'aiderai vraiment.

    Merci

  8. #8
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    à quel programme dois-tu envoyer tes touches, si c'est un jeu vidéo il est possible que le système anti-triche empêche cela

  9. #9
    Invité
    Invité(e)
    Par défaut
    non il n'y a aucun problème de se coter la

  10. #10
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Je pourrais pas t'aider du côté de DirectX, j'ai utilisé une fonction de postmessage, peut être que quand tu appuies sur une touche faut aussi dire que tu la relâche (j'avais ce problème là).

  11. #11
    Invité
    Invité(e)
    Par défaut
    ben je pensse pas car l'apui de touche fonctionner bien sur un bloc not mais pas sur l'application

  12. #12
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    je pourrais pas plus t'aider que ça mais si tu trouve une solution n'hésite pas à nous tenir au courant (ça m'intéresse beaucoup)

  13. #13
    Invité
    Invité(e)
    Par défaut
    sa c'est sur quand je trouve je vais faire profiter je ne souhaite a personne ma galère XD

    ps : merci de tes réponse sa fait plaisir de voir que quelqu'un essaye ^^

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  2. Les Triggers et application externes
    Par Rahustro dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 16/02/2005, 13h53
  3. Appel application externe
    Par gerald2545 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 28/01/2005, 18h54
  4. Simuler un appui de touche clavier
    Par Floo dans le forum Assembleur
    Réponses: 5
    Dernier message: 03/12/2004, 17h04
  5. Simuler l'appui de touches
    Par immerczeck dans le forum Assembleur
    Réponses: 5
    Dernier message: 21/04/2004, 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