using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; namespace PosStart { static class Program { /// /// 해당 응용 프로그램의 주 진입점입니다. /// [STAThread] //#Rhee, 20180122 중복실행 방지 및 프로그램 최상위 포커스(활성화) Start [DllImport("user32.dll")] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); private const int SW_SHOWNORMAL = 1; //#Rhee, 20180122 중복실행 방지 및 프로그램 최상위 포커스(활성화) End static void Main(string[] args) { // 중복 실행 방지 string sProcessName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; Process[] arProcess = Process.GetProcessesByName(sProcessName); if (arProcess.Length > 1) { MessageBox.Show("Already Execute Porgram"); Application.Exit(); return; } if (args == null || args.Length == 0) { if (File.Exists(Directory.GetCurrentDirectory() + @"\PosMain.txt") == true) { // PosMain 실행되어 있으면 실행 안함. //#Rhee, 20180122 중복실행 방지 및 프로그램 최상위 포커스(활성화) Start // 기존 /* Process[] arPosPgm = Process.GetProcessesByName("PosMain"); foreach (Process pPosPgm in arPosPgm) { MessageBox.Show("Already Execute PosMain"); //Application.Exit(); return; }*/ // 변경 IntPtr hWnd = FindWindow(null, "POS MAIN"); if (!hWnd.Equals(IntPtr.Zero)) { ShowWindowAsync(hWnd, SW_SHOWNORMAL); // 윈도우가 최소화 되어 있다면 활성화. SetForegroundWindow(hWnd); // 윈도우에 포커스 최상위. return; } //#Rhee, 20180122 중복실행 방지 및 프로그램 최상위 포커스(활성화) End } } else { // PosMain 강제 종료 Process[] arPosPgm = Process.GetProcessesByName("PosMain"); foreach(Process pPosPgm in arPosPgm) { pPosPgm.Kill(); System.Threading.Thread.Sleep(1000); } if (args[0] == "EXIT") { //Application.Exit(); return; } } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmPosStart()); } } }