Winform 프로그램 멀티캐스트 금지 & & 멀티캐스트 금지 및 첫 번째 창 두 번째 활성화
Program에서cs에서 Mutex 잠금 사용
bool createNew;
using (System.Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName, out createNew))
{
if (createNew)
{
Application.Run(new Form1());
}
else
{
MessageBox.Show(" ...")
System.Threading.Thread.Sleep(1000);
System.Environment.Exit(1);
}
}
혹은
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new MainForm());
bool CreateNewForm;//
System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out CreateNewForm);//
if (CreateNewForm)// ,
{
Application.Run(new MainForm());
instance.ReleaseMutex();
}
else
{
Application.Exit();
}
}
2. 여러 번 여는 것을 금지하고 두 번째 클릭하면 첫 번째 창의 핸들을 활성화합니다
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Reflection;
namespace NetCardUI
{
static class Program
{
///
///
///
///
/// 。 , ShowWlndow
/// , ; ,
[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 SW_SHOWNOMAL = 1;
private static void HandleRunningInstance(Process instance)
{
ShowWindowAsync(instance.MainWindowHandle, SW_SHOWNOMAL);//
SetForegroundWindow(instance.MainWindowHandle);//
}
private static Process RuningInstance()
{
Process currentProcess = Process.GetCurrentProcess();
Process[] Processes = Process.GetProcessesByName(currentProcess.ProcessName);
foreach (Process process in Processes)
{
if (process.Id != currentProcess.Id)
{
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == currentProcess.MainModule.FileName)
{
return process;
}
}
}
return null;
}
///
/// 。
///
[STAThread]
static void Main()
{
Process process = RuningInstance();
if (process == null)
{
Application.Run(new MainForm());
}
else
{
HandleRunningInstance(process);
//System.Threading.Thread.Sleep(1000);
//System.Environment.Exit(1);
}
}
}
}
전재 대상:https://www.cnblogs.com/javier520/p/10672729.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.