Maison développement back-end Tutoriel C#.Net C# autorise uniquement deux façons de démarrer un processus WinFrom

C# autorise uniquement deux façons de démarrer un processus WinFrom

Dec 21, 2016 pm 02:43 PM

Méthode 1 : interdire uniquement l'exécution de plusieurs processus

afficher la copie en clair dans le presse-papierPRint ?
········10·········20···· · ···30·······40·······50········60········70········ 80 · ······90·······100·······110·······120·······130······ ·140 · ······150
[STAThread]
public static void Main()
{
bool ret;
System.Threading.Mutex mutex = new System.Threading. Mutex(true , application.ProductName, out ret);
if (ret)
{ System.Windows.Forms.Application.EnableVisualStyles(); //Ces deux lignes implémentent le style visuel XP
System Windows. .Forms.Application.DoEvents();
System.Windows.Forms.Application.Run(new Main());
// Main est le formulaire principal de votre programme, faites-le. ne pas utiliser cette phrase           Ce programme. nnCe programme est sur le point de se fermer ", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
// Le message d'invite peut être supprimé.
Application.Exit();//Quitter le programme .Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName, out ret);
if (ret)
{
System.Windows.Forms.Application.EnableVisualStyles(); / /Ces deux lignes implémentent le style visuel XP
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.Run( new Main());
// Main est la forme principale de votre programme, s'il s'agit d'un programme console, n'utilisez pas cette phrase  
                                     La même application est déjà en cours d'exécution, veuillez ne pas exécuter plusieurs programmes en même temps en même temps. nnCe programme est sur le point de se terminer.
Application.Exit();//Quitter le programme
}
}


Méthode 2 : désactiver l'exécution de plusieurs processus et activer le processus précédent lors d'une exécution répétée

afficher la copie en clair dans le presse-papiers ?
········10·······20·······30········40· ······50·······60·······70········80········90····· · ··100·······110·······120········130·······140·······150
[STAThread]
public static void Main()
{ //Obtenir l'instance en cours d'exécution
Process instance = RunningInstance();
if (instance == null)
{ System . Windows.Forms.Application.EnableVisualStyles(); //Ces deux lignes implémentent le style visuel XP
        System.Windows.Forms.Application.DoEvents();   
        //Il   n'y a pas   un autre   exemple,   montrez   notre   formulaire.      
        Application.Run(new Main());   
    }   
    else  
    {   
        //Il   existe   un autre   instance   de   ce   processus.      
        HandleRunningInstance(instance);   
    }   
}   
public static Process RunningInstance()   
{   
    Process current = Process.GetCurrentProcess();   
    Process[] processus = Process.GetProcessesByName(current.ProcessName);   
    //Boucle   à travers   les   processus en cours    dans   avec   le   même  nom      
    foreach (processus de processus dans les processus)   
    {   
        //Ignorer   le   actuel   process       
        if (process.Id != current. Id)   
        {   
            //Assurez-vous   sûr   que   le   processus   est   exécuté   à partir du   fichier exe   .      
            if (Assembly.GetExecutingAssembly().Location.Replace("/", "\") == current.MainModule.FileName)   
            {   
                //Renvoyer l'   autre   instance de processus   .      
                processus de retour ;   
            }   
         }   
    }   
    //Aucune   autre   instance    a été   trouvée,   renvoie   null.    
    renvoie null ;   
}   
public static void HandleRunningInstance(Instance de processus)   
{   
    //Assurez-vous   que   la   fenêtre   n'est   pas   minimisée    ou   agrandie       
    ShowWindowAsync(instance.MainWindow Poignée, WS_SHOWNORMAL);   
    //Définir   la   réelle   instance   sur   la fenêtre   de premier plan    
    SetForegroundWindow(instance.MainWindowHandle);   
}   
[DllImport("User32.dll")]   
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);   
[DllImport("User32.dll")]   
private static extern bool SetForegroundWindow(IntPtr hWnd);   
const privé int WS_SHOWNORMAL = 1 ;  
[STAThread]
public static void Main()
{
    //Obtenir   l'   instance   en cours d'exécution.   
    Instance de processus = RunningInstance();
    if (instance == null)
    {
        System.Windows.Forms.Application.EnableVisualStyles();   //这两行实现   XP   可视风格   
        System.Windows.Forms.Application.DoEvents();
        //Il   n'est pas   une autre   instance,   afficher   notre   formulaire.   
        Application.Run(new Main());
    }
    else
    {
        //Il   existe   une autre   instance   de   ce   processus.   
        HandleRunningInstance(instance);
    }
}
public static Process RunningInstance()
{
    Process current = Process.GetCurrentProcess();
    Process[] Processus = Processus .GetProcessesByName(current.ProcessName);
    //Boucle   à travers   les   processus   en cours d'exécution   dans   avec   le   même   nom   
    foreach (processus de processus dans les processus)
    {
        //Ignorer   le   processus   actuel   
        si (process.Id != current.Id)
        {
            //Assurez-vous   sûr   que   le   processus      est   exécuté   à partir de   le   exe   fichier.   
            if (Assembly.GetExecutingAssembly().Location.Replace("/", "\") == current.MainModule.FileName)
            {
                //Return   l'   autre   instance de processus   .   
                processus de retour ;
                }
    }
    //Aucun   autre   instance   a   trouvée,   retour   null. 
    return null ;
>
public static void HandleRunningInstance (instance de processus)
{
    //Assurez-vous   que   la   fenêtre   n'est   pas   minimisée    ou   maximisée    
    ShowWindowAsync(instance.MainWin dowHandle, WS_SHOWNORMAL) ;
    //Définir   la   réelle   instance   à   la fenêtre de premier plan   
    SetForegroundWindow(instance.MainWindowHandle);
}
[DllImport("User32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
private const int WS_SHOWNORMAL = 1; 

 以上就是C#只允许启动一个WinFrom进程的两种方法的内容,更多相关内容请关注PHP中文网(www.php.cn)!



Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Active Directory avec C# Active Directory avec C# Sep 03, 2024 pm 03:33 PM

Guide d'Active Directory avec C#. Nous discutons ici de l'introduction et du fonctionnement d'Active Directory en C# ainsi que de la syntaxe et de l'exemple.

Modificateurs d'accès en C# Modificateurs d'accès en C# Sep 03, 2024 pm 03:24 PM

Guide des modificateurs d'accès en C#. Nous avons discuté de l'introduction Types de modificateurs d'accès en C# ainsi que d'exemples et de résultats.

Générateur de nombres aléatoires en C# Générateur de nombres aléatoires en C# Sep 03, 2024 pm 03:34 PM

Guide du générateur de nombres aléatoires en C#. Nous discutons ici du fonctionnement du générateur de nombres aléatoires, du concept de nombres pseudo-aléatoires et sécurisés.

Vue Grille de données C# Vue Grille de données C# Sep 03, 2024 pm 03:32 PM

Guide de la vue Grille de données C#. Nous discutons ici des exemples de la façon dont une vue de grille de données peut être chargée et exportée à partir de la base de données SQL ou d'un fichier Excel.

Modèles en C# Modèles en C# Sep 03, 2024 pm 03:33 PM

Guide des modèles en C#. Nous discutons ici de l'introduction et des 3 principaux types de modèles en C# ainsi que de ses exemples et de l'implémentation du code.

Sérialisation C# Sérialisation C# Sep 03, 2024 pm 03:30 PM

Guide de sérialisation C#. Nous discutons ici de l'introduction, des étapes de l'objet de sérialisation C#, du fonctionnement et de l'exemple respectivement.

Services Web en C# Services Web en C# Sep 03, 2024 pm 03:32 PM

Guide des services Web en C#. Nous discutons ici d'une introduction aux services Web en C# avec l'utilisation de la technologie, ses limitations et des exemples.

Nombres premiers en C# Nombres premiers en C# Sep 03, 2024 pm 03:35 PM

Guide des nombres premiers en C#. Nous discutons ici de l'introduction et des exemples de nombres premiers en c# ainsi que de l'implémentation du code.

See all articles