C# winform判断自身程序是否已运行,如果已运行则激活窗体
using System ;
using System. Collections. Generic ;
using System. Diagnostics ;
using System. Linq ;
using System. Reflection ;
using System. Runtime. InteropServices ;
using System. Threading ;
using System. Threading. Tasks ;
using System. Windows. Forms ; namespace WindowsFormsApp1
{ internal static class Program { [ DllImport ( "user32.dll" ) ] public static extern void SwitchToThisWindow ( IntPtr hWnd, bool fAltTab) ; [ STAThread] static void Main ( ) { Process currentProcess = Process. GetCurrentProcess ( ) ; Process[ ] processes = Process. GetProcessesByName ( currentProcess. ProcessName) ; if ( processes. Length > 1 ) { IntPtr handle = GetOldProcess ( processes, currentProcess) . MainWindowHandle; SwitchToThisWindow ( handle, true ) ; Thread. Sleep ( 1000 ) ; Environment. Exit ( 1 ) ; } Application. EnableVisualStyles ( ) ; Application. SetCompatibleTextRenderingDefault ( false ) ; Application. Run ( new Form1 ( ) ) ; } private static Process GetOldProcess ( Process[ ] processes, Process currentProcess) { foreach ( Process process in processes) { if ( process. Id != currentProcess. Id) { return process; } } return null ; } }
}