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 :

Afficher une page ouverte


Sujet :

C#

  1. #1
    Membre à l'essai
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Afficher une page ouverte
    Bonjour j'aimerais créer un petit soft qui me permettrais de pouvoir switcher entre plusieurs fenêtre du même nom avec une seule touche dans un ordre bien défini.

    Pour l'instant j'arrive à récupérer l'id de l'application qui s'ouvre je le colle dans un label pour que chaque tabpage puisse avoir une instance du programme.

    Voici une image du projet pour mieux illustrer :
    Nom : test.png
Affichages : 170
Taille : 9,8 Ko

    En 1er j'appuie sur mon bouton "Trouver" il va m'afficher dans la listBox1 les processus par ID que j'ai pris soin de trier par nom

    Code du boutton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            private void button1_Click(object sender, EventArgs e)
            {
                listBox1.Items.Clear();
                Process[] myProcesses = Process.GetProcesses();
                foreach (Process myProcess in myProcesses)
                {
                    if (myProcess.ProcessName.Equals("chrome.exe"))
                    {
                        listBox1.Items.Add(myProcess.Id);
                    }
                }
            }
    Je me retrouve avec un certain nombre d'ID dans ma listBox en fonction du nombre de fois que mon logiciel est ouvert ici google chrome

    Nom : test.png
Affichages : 113
Taille : 6,3 Ko

    J'ai donc ouvert deux fois google chrome, maintenant je sélectionne dans la listBox le 1er ID et j'appuie sur le bouton "Changer label"
    Ce qui aura pour effet de mettre l'ID que j'ai sélectionner dans la listBox à la place du text du label3. Je fais ainsi pour les autres tabpage selon le nombre de fois que mon google chrome est ouvert ici le tabpage1 aura l'id 4864 l'autre tabpage aura l'id 2428 etc.

    Code du bouton "Changer label"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void button2_Click(object sender, EventArgs e)
            {
                label3.Text = listBox1.SelectedItem.ToString();
            }
    Nom : test.png
Affichages : 137
Taille : 6,2 Ko

    J'aimerais avec le dernier bouton "Ouvrir" pouvoir afficher au 1er plan la fenêtre qui à l'ID correspondant au label3.Text

    Voilà je ne sais pas si je suis assez clair ou non, merci d'avance pour votre aide !

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Nous devons utiliser les api Windows, voici un exemple pour un pid 2064 :
    Code c# : 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
            private enum ShowWindowEnum
            {
                Hide = 0, ShowNormal = 1, ShowMinimized = 2, ShowMaximized = 3, Maximize = 3, ShowNormalNoActivate = 4, Show = 5, Minimize = 6, ShowMinNoActivate = 7, ShowNoActivate = 8, Restore = 9, ShowDefault = 10, ForceMinimized = 11
            };
     
            [DllImport("user32.dll")]
            static extern bool ShowWindow(IntPtr hWnd, ShowWindowEnum nCmdShow);
     
            [DllImport("user32.dll")]
            private static extern int SetForegroundWindow(IntPtr hwnd);
     
            static void Main(string[] args)
            {
                try
                {
                    int id = 2064;
                    Process p = Process.GetProcessById(id);
                    ShowWindow(p.MainWindowHandle, ShowWindowEnum.Restore);
                    SetForegroundWindow(p.MainWindowHandle);
                }
                catch
                {
                }
     
            }

    Remarque :
    Tu devrais limiter ta recherche des process à ceux qui ont une fenêtre.
    Il peux exister des process chrome.exe qui sont uniquement des sous-process de travail sans interface graphique.
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                foreach (Process myProcess in myProcesses.Where(a => a.ProcessName == "notepad" && !String.IsNullOrEmpty(a.MainWindowTitle)))
                {
                    listBox1.Items.Add(myProcess.Id);
                }

  3. #3
    Membre à l'essai
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Nous devons utiliser les api Windows, voici un exemple pour un pid 2064 :
    Code c# : 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
            private enum ShowWindowEnum
            {
                Hide = 0, ShowNormal = 1, ShowMinimized = 2, ShowMaximized = 3, Maximize = 3, ShowNormalNoActivate = 4, Show = 5, Minimize = 6, ShowMinNoActivate = 7, ShowNoActivate = 8, Restore = 9, ShowDefault = 10, ForceMinimized = 11
            };
     
            [DllImport("user32.dll")]
            static extern bool ShowWindow(IntPtr hWnd, ShowWindowEnum nCmdShow);
     
            [DllImport("user32.dll")]
            private static extern int SetForegroundWindow(IntPtr hwnd);
     
            static void Main(string[] args)
            {
                try
                {
                    int id = 2064;
                    Process p = Process.GetProcessById(id);
                    ShowWindow(p.MainWindowHandle, ShowWindowEnum.Restore);
                    SetForegroundWindow(p.MainWindowHandle);
                }
                catch
                {
                }
     
            }

    Remarque :
    Tu devrais limiter ta recherche des process à ceux qui ont une fenêtre.
    Il peux exister des process chrome.exe qui sont uniquement des sous-process de travail sans interface graphique.
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                foreach (Process myProcess in myProcesses.Where(a => a.ProcessName == "notepad" && !String.IsNullOrEmpty(a.MainWindowTitle)))
                {
                    listBox1.Items.Add(myProcess.Id);
                }
    Bonjour, merci de ta réponse !

    J'ai essayer ton code il fonctionne à 50% !

    Je m'explique le "chrome.exe" n'étais qu'un exemple mais le logiciel que je souhaite utiliser n'utilise pas d'autres process ouvert et leurs id est variable à chaque lancement ( d'où la détection )

    J'ai essayé de modifier un peu le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try
                {
                    int id = label3.Text.ToString();
                    Process p = Process.GetProcessById(id);
                    ShowWindow(p.MainWindowHandle, ShowWindowEnum.Restore);
                    SetForegroundWindow(p.MainWindowHandle);
                }
                catch
                {
                }
            }
    Evidemment label3.Text n'est pas un int du coup ça ne fonctionne pas il faudrait que j'arrive à convertir le string du label en int pour récupérer l'id dans le process p et du coup l'afficher !

  4. #4
    Membre à l'essai
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Et après 5 minutes de recherche le miracle s'est enfin accompli !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try
                {
                    int id = Convert.ToInt16(label3.Text.ToString());
                    Process p = Process.GetProcessById(id);
                    ShowWindow(p.MainWindowHandle, ShowWindowEnum.Restore);
                    SetForegroundWindow(p.MainWindowHandle);
                }
                catch
                {
                }
    Le programme fonctionne à merveille je vais me débrouiller pour le reste !

    Je te remercie infiniment !

Discussions similaires

  1. Internet Explorer m'affiche une page blanche
    Par poof65 dans le forum IE
    Réponses: 10
    Dernier message: 15/08/2005, 22h50
  2. [DEBUTANT] affiche une page web en plein écran
    Par mamouna dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/06/2005, 11h43
  3. [XSL] Afficher une page XML à partir d'un script PHP
    Par JiJiJaco dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 10/04/2005, 14h41
  4. [débutante] comment afficher une page asp ?
    Par boucher_emilie dans le forum ASP
    Réponses: 5
    Dernier message: 29/06/2004, 09h40
  5. Afficher une page html
    Par Nicky dans le forum C++Builder
    Réponses: 6
    Dernier message: 14/04/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