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 :

Reconnaitre et activer Application


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 35
    Points : 18
    Points
    18
    Par défaut Reconnaitre et activer Application
    Bonjour à tous,

    Je n'arrive pas à trouver exactement ce que je veux sur la toile et c'est pour ça que je m'adresse à vos connaissances.

    Via une Application Windows Form en VB, je cherche à cliquer sur un bouton qui me ferait la chose suivante:
    1étape : cela vérifie si une application "toto.exe" est en cours d’exécution, si oui on continue dans le code, sinon message d'alerte et exit du code,
    Puis : si UNE SEULEapplication "toto.exe" est en cours d’exécution, message d'alerte puis fin du code, si plusieurs "toto.exe" sont en cours d’exécution alors m'afficher les fenêtres des toto.exe pour sélectionner celle que je veux activer, puis message me disant qu'elle est activée.

    Merci à vous

    Alexandre

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 34
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Je te propose de regarder du coté de la méthode Process.GetProcesses qui va permettre de lister les processus en cours d’exécution sur la machine.
    Ensuite, tu filtre le résultat par rapport au processus voulu (toto.exe).

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim processes As List(Of Process) = Process.GetProcesses.Where(Function(process) process.MainModule.ModuleName = "toto.exe").ToList
    Ensuite s'il y a plusieurs éléments dans la liste, tu peux créer une Form qui affichera le titre par exemple des processus concernés et qui retournera la sélection.

    Enfin, pour activer la window concernée il faut utiliser une fonction exportée de user32.dll qui permet de mettre au premier plan la fenêtre ayant le handle passé en paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        <DllImport("user32.dll")>    Private Function SetForegroundWindow(ByVal hWnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
        End Function
     
     
        Sub Main()
            '...
            ' Sélection du process etc..
     
     
            SetForegroundWindow(monProcess.MainWindowHandle)
        End Sub
    Il y a cependant des restrictions sur l'utilisation de la propriété Process.MainModule, une exception est levée si on tente d'accéder à un processus 64 bits depuis un processus 32 bits.

    En espérant avoir aidé .

    Bonne soirée.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Merci pour ta réponse, mais étant débutant et autodidacte dans ce monde de programmation, pourrais tu me faire vite fait si tu as le temps (et si c'est rapide pour toi) une petite solution visual studio avec une demo de tout ça car franchement je comprends des choses mais pas tout des fois.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Alors j'ai un début peut etre du coup :
    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
    		Public Sub ()
     
    		Dim Myprocesses() As Process
           		Myprocesses = Process.Getprocessesbyname("TOTO")
           		' Test Si Au Moins Un Process TOTO Est En Cours
           		If Myprocesses.Length = 0 Then
           			Msgbox ("No Existing TOTO !", Vbcritical, "Oups ! Some Problem ...")
           			Exit Sub
           		End If
           		' Test Si Plusieurs Process TOTO Sont En Cours
             	If Myprocesses.Length > 1 Then
             		Msgbox ("Plusieurs TOTO Ouverts")
             		'On va choisir la fenetre à activer
             	Else
             		Msgbox ("Un Seul TOTO")
             	End If	
     
    		End Sub
    Avec :
    Imports System
    Imports System.Diagnostics
    Imports System.ComponentModel

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 34
    Points : 78
    Points
    78
    Par défaut
    Voila un bon début, ensuite avec le code je te t'ai donné ci-dessous tu va pouvoir mettre le processus de ton choix au premier plan. Si tu en as qu'un il suffit de faire :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    SetForegroundWindow(Myprocesses(0).MainWindowHandle)
    Sinon une Form peut s'afficher permettant de choisir le processus voulu (avec une ComboBox par exemple). Sur ce point, si tu maîtrise mal le sujet, je te conseille de te documenter via les cours sur developpez.net et/ou via les multitudes de ressources sur Internet.

    Note : Tu ne devrai pas avoir besoin de System.ComponentModel.

    Bonne soirée

  6. #6
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    ALors grace à tes conseils, j'ai (pour exemple j'ai pris 2 excel d'ouverts), et cela me mets en avant excel :
    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
    Imports System
    Imports System.Diagnostics
    Imports System.Runtime.InteropServices
     
    Module Module1
        <DllImport("user32.dll")> Private Function SetForegroundWindow(ByVal hWnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
        End Function
        Sub Main()
     
            Dim Myprocesses() As Process
            Myprocesses = Process.GetProcessesByName("EXCEL")
            ' Test Si Au Moins Un Process EXCEL Est En Cours
            If Myprocesses.Length = 0 Then
                MsgBox("No Existing EXCEL !", vbCritical, "Oups ! Some Problem ...")
                Exit Sub
            End If
            ' Test Si Plusieurs Process EXCEL Sont En Cours
            If Myprocesses.Length > 1 Then
                MsgBox("Plusieurs EXCEL Ouverts")
                'On va choisir la fenetre à activer
                SetForegroundWindow(Myprocesses(0).MainWindowHandle)
            Else
                MsgBox("Un Seul EXCEL")
            End If
     
        End Sub
    End Module
    Demain je vais regarder pour faire un userform pour permettre la sélection de l'appli que je veux activer.

    A suivre donc car j'apprends aussi les userform

Discussions similaires

  1. Clé d'activation application java+mysql
    Par dutty_pi dans le forum Général Java
    Réponses: 2
    Dernier message: 30/01/2012, 14h54
  2. [fonction] activation application
    Par titiyo dans le forum Delphi
    Réponses: 7
    Dernier message: 19/01/2007, 09h55
  3. Gestionnaire pour reconnaitre l'activation d'une fenêtre ?
    Par Herode dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/01/2006, 17h38
  4. Réponses: 2
    Dernier message: 24/01/2006, 09h41
  5. Réponses: 9
    Dernier message: 08/12/2004, 14h36

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