c# อยากให้เวลาเปิดโปรแกรมซ้ำ ให้แสดงโปรแกรมที่เปิดอยู่ขึ้นมาครับ การทำงานเหมือน Line PC เลยครับ
คือไม่สามารถเปิดขึ้นมาซ้ำกันได้ และถ้าโปรแกรม Line PC เปิดอยู่แล้ว ก็จะแสดงหน้าต่าง Line PC ขึ้นมาให้
ตอนนี้ทำให้เปิดไม่ซ้ำได้แล้วครับ
Code (C#)
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
bool result;
var mutex = new System.Threading.Mutex(true, "UniqueApplicationName", out result);
if (!result)
{
//MessageBox.Show("Another instance is already running.");
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
GC.KeepAlive(mutex);
}
}
public partial class App : System.Windows.Application
{
public bool IsProcessOpen(string name)
{
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains(name))
{
return true;
}
}
return false;
}
protected override void OnStartup(StartupEventArgs e)
{
// Get Reference to the current Process
Process thisProc = Process.GetCurrentProcess();
if (IsProcessOpen("name of application.exe") == false)
{
//System.Windows.MessageBox.Show("Application not open!");
//System.Windows.Application.Current.Shutdown();
}
else
{
// Check how many total processes have the same name as the current one
if (Process.GetProcessesByName(thisProc.ProcessName).Length > 1)
{
// If ther is more than one, than it is already running.
System.Windows.MessageBox.Show("Application is already running.");
System.Windows.Application.Current.Shutdown();
return;
}
base.OnStartup(e);
}
}