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

VB.NET Discussion :

simulation appuie d'une touche clavier vers un autre processus


Sujet :

VB.NET

  1. #1
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut simulation appuie d'une touche clavier vers un autre processus
    Bonjour à tous,

    voilà j'ai deux applications sur le meme PC (mon appli vb.net et l'appli client).

    J'arrive à recupperer le processus du client en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim myProcesses() As Process
    Dim myProcess As Process
    Dim processClient As Process
     
    myProcesses = Process.GetProcesses()
    ' Iterate through the process array.
    For Each myProcess In myProcesses
      If myProcess.ProcessName = "nomProcessClient" Then
              processClient = myProcess
      End If
    Next
    j'arrive egalement à simuler l'appuie d'une touche par mon application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SendKeys.Send("{F1}")
    maintenant je sais pas comment dire à mon application d'envoyer cet appuie de touche vers l'application cliente. Quelqu'un saurait il me dire comment m'y prendre?

    merci de vos réponses.
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    donne le focus au processus avant de faire sendkeys
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    merci de ta réponse rapide, je comprends bien la notion de focus pour un controle local à mon application. Néanmoins, je ne trouve pas cette propriété pour un processus.

    je cherche un truc du genre processClient.focus() ou processClient.getfocus() mais je ne trouve pas.
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    en effet, j'en dit des conneries sans savoir moi


    enfin on peut trouver MainWindowHandle
    il reste plus qu'à trouver une fonction API qui active une fenetre à partir de son handle
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    bon j'ai passé 5 secondes dans google et j'ai trouvé plein de solutions possibles

    dont celle là qui a l'air pas mal :
    http://msdn.microsoft.com/fr-fr/libr...ca(VS.80).aspx


    encore un qui ne prend pas le temps de chercher et qui attend qu'on cherche à sa place, car j'ai réellement passé moins de 10 secondes sur google
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Pour exemple, première appli avec un bouton et ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    AppActivate("FormApplication2")
    My.Computer.Keyboard.SendKeys("A", True)
    End Sub
    Deuxième appli avec une form dont la propriété KeyPreview est à True et la propriété Text mise à "FormApplication2" et le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
    MsgBox(e.KeyChar)
    End Sub
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  7. #7
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    Donc l'application en question bascule bien au premier plan mais My.Computer.Keyboard.SendKeys("A", True) génère une SecurityException que je ne n'arrive pas à contourner. Ce qui est indiqué doit par conséquent etre correcte, si je trouve une solution pour contourner la SecurityException je vous l'indiquerai.
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

  8. #8
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Es tu administrateur sur ta machine ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  9. #9
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    oui je suis bien administrateur de la machine peut etre que l'exception est levé car je suis en windows vista. Je testerai le code sur une machine en windows XP ce soir.
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

  10. #10
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Le code simpliste que je t'ai donné tourne sous Vista sans soucis. Cherche donc la raison ailleurs.
    A ta place je taperais "SecurityException VB" sur Google, il me semble que tu pourrais tomber sur des liens intéressants.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  11. #11
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    re bonjour à tout le monde, non en faite j'avais peur que l'UAC de vista m'empeche d'avoir les droits suffisant sur le programme en question.

    En executant ce code sur une machine en XP, j'ai strictement le meme message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Try
       My.Computer.Keyboard.SendKeys("{F1}", False)
     
    Catch ex As Exception
       MsgBox(ex.Message)
    End Try
    le Msgbox me retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Le module spécifié est introuvable"
    ce qui me gene c'est que "Me." me permet d'aller chercher "Keyboard" puis "Sendkeys", par conséquent, je ne comprends pas ce qui gene.
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

  12. #12
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    Le programme doit etre protegé, je ne vois plus que ça.

    En effet, dans le "TAsk Manager" de windows,

    dans l'onglet "Application" je vois son nom. Quand je fais un clic droit puis "Aller dans le processus", alors je ne bascule pas dans l'onglet "Processus". C'est le seul programme de mon Poste à agir de la sorte.

    Mon code est capable d'agir sinon dans n'importe quelle application "winform like".

    Bref, j'ai plus d'idée...
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

Discussions similaires

  1. Envoyer une touche clavier vers une application tiers
    Par ProIsis dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 29/11/2012, 18h57
  2. Réponses: 14
    Dernier message: 08/10/2012, 19h03
  3. Simuler appuie sur une touche du clavier
    Par amorgos88 dans le forum R
    Réponses: 1
    Dernier message: 16/05/2011, 13h26
  4. envoyer la saisie après l'appui sur une touche clavier
    Par Jahjouh dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/06/2008, 10h20
  5. detecter le double "appuie" d'une touche clavier
    Par jadey dans le forum Flash
    Réponses: 4
    Dernier message: 25/03/2007, 01h43

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