Bonjour,
Je développe une application destinée à des personnes pour certaines peu averties des subtilités informatiques J'ai constaté que lors de l'utilisation de mon soft, ces dernières le lancent n fois sans forcément sans rendre compte. En gros dès qu'ils en ont besoin, ils double cliquent sur l'icône du bureau alors qu'il est peut être déjà ouvert.
Pour pallier à ça, j'aimerais que mon appli ne se lance qu'une fois (déjà fait et fonctionnel) et surtout qu'elle ramène la fenêtre principale du process éventuellement déjà existant dans la gueule du user. Ni vu, ni connu.
Voici le code existant au lancement de l'appli.
J'affiche donc une petite MessageBox d'info avant d'essayer de ramener au dessus des autres la fenêtre principale (et unique) de l'exe déjà lancé. J'ai ici essayé l'utilisation de la méthode OpenIcon mais cela ne fonctionne pas.
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 [DllImport("user32.dll")] public static extern int OpenIcon(int iHwnd); /// <summary> /// Point d'entrée principal de l'application. /// </summary> [STAThread] static void Main() { using (Skybound.VisualStyles.VisualStyleContext.Create()) { // If the same process name is found, a second instance isn't allowed Process[] aobjProcesses = Process.GetProcessesByName( Process.GetCurrentProcess().ProcessName, Environment.MachineName); if (aobjProcesses.Length > 1) { CimpaBox.ShowInformation("PF Loader is already running on this computer."); OpenIcon(aobjProcesses[0].MainWindowHandle.ToInt32()); return; } Application.Run(new FrmMain()); } }
Quelqu'un aurait une idée ? N'hésitez pas à me demander des détails/reformulations si nécessaire. Merci d'avance !
Partager