94 lines
3.4 KiB
C#
94 lines
3.4 KiB
C#
|
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
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 해당 응용 프로그램의 주 진입점입니다.
|
|||
|
/// </summary>
|
|||
|
[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());
|
|||
|
}
|
|||
|
}
|
|||
|
}
|