


C# autorise uniquement deux façons de démarrer un processus WinFrom
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;

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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.

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.

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.

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.

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.

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.

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.

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.
