spc-kiosk-pb/Window/PosStart/Program.cs

94 lines
3.4 KiB
C#
Raw Permalink Normal View History

2019-06-16 05:12:09 +00:00
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());
}
}
}