Une seule instance _ unique ouvert si le programme a été ouvert à nouveau pour démarrer le programme principal de l'affichage en cours




référence https://www.jb51.net/article/75156.htm



l'utilisation de la System.Runtime.InteropServices,
 l'utilisation de la System.Diagnostics,
 l'utilisation de l'System.Reflection, espace de noms du système 
{ / * 
     * une seule instance unique ouvert _ _ 
     * Le https://www.jb51.net/article/75156.htm 
     * 
     * 
     * méthode de remplacement direct en utilisant 
        static void Main () { 
            Application.EnableVisualStyles (); 
            Application.SetCompatibleTextRenderingDefault (false) 
            l'System.Diagnostics.Process P = OneAppStartup.GetInstance; 
            IF (P == nULL) { 
               // programme objet 
                Form1 frm les nouvelles nouvelles = Form1 (); 
                le Application.Run (nouveau le nouveau Form1 ());



    




            Le else {} 
                OneAppStartup.ShowInstance (P); 
            } 
        } 

     * 
     * 
     * / 
    class OneAppStartup 
    { /// <summary> /// Cette fonction définit la fenêtre est générée par l'état d'affichage de fils différents. /// </ summary> /// <param name = "hWnd"> poignée de fenêtre </ param> /// <param name = "pour nCmdShow"> Indique comment la fenêtre d'affichage. Voir la liste des valeurs autorisées, s'il vous plaît se référer à la fonction de la section Description. </ Param> /// <retour> visible si la fonction d' origine, la valeur de retour est égal à zéro, si la fonction cachée à l' origine, la valeur de retour est égal à zéro. </ Retour> 
        [la DllImport ( " user32.dll ")]
         Private statique extern BOOL le ShowWindowAsync (IntPtr hWnd, int pour nCmdShow);
        
        
        
        
        
        
           
        /// Cette fonction crée un thread définit la fenêtre spécifiée au premier plan et activer la fenêtre. Pilotage de la fenêtre de saisie du clavier, et pour l'utilisateur de changer divers marque visuelle. Système de fenêtre de premier plan pour créer une permissions attribuées de fil un peu plus élevé que les autres fils. 
        /// </ summary> 
        /// <param name = « hWnd »> sera activé et transféré à la poignée de la fenêtre de premier plan. </ Param> 
        /// <retour> Si la fenêtre est mis à l'avant, la valeur de retour est égal à zéro, si la fenêtre avant est pas définie, la valeur de retour est égal à zéro. </ Retour> 
        [( "le DllImport user32.dll ")]
         Private  statique  extern  BOOL le SetForegroundWindow (IntPtr hWnd);
         Privé  const  int WS_SHOWNORMAL = 1;. /// <summary> /// Obtient une instance en cours d' exécution, n'est pas instance d' exécution return null; /// </ summary> publique statique Traitez la GetInstance 
        { GET {


        
        
        
         
             
                processus actuel = processus.
                Processus [] = Process.GetProcessesByName processus (current.ProcessName); foreach (processus de processus dans les processus) {
                     si (process.Id! = current.Id) {
                         si (Assembly.GetExecutingAssembly (). location.replace ( " / ", " \\ ") == current.MainModule.FileName) {
                             retourner processus; 
                        } 
                    } 
                } Retourner null ; 
            } 
        } /// <summary> ///显示已运行的程序. /// </ summary> publique
                
                 


        
        
        
         statique  vide ShowInstance (instance de processus) 
        { 
            le ShowWindowAsync (instance.MainWindowHandle, WS_SHOWNORMAL); // affichage, commentaire sur 
            le SetForegroundWindow (instance.MainWindowHandle);       // distale de vente 
        } 
    } 
}

Je suppose que tu aimes

Origine www.cnblogs.com/xe2011/p/12606308.html
conseillé
Classement