//20180611 프린터 미출력 개선 02Printer.exe start
//O2Printer.exe 통해 프린터 출력
#define PRT_O2PRINTER // 적용시 주석 해제
//20180611 프린터 미출력 개선 02Printer.exe end
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Collections;
using System.IO;
using System.Threading;
using System.Data;
using System.Configuration;
using Microsoft.Win32;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.Win;
using System.Windows.Forms.Integration;
namespace Cosmos.Win
{
public partial class frmPosMainStart : Form
{
#region 변수선언 및 초기화
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr FindWindow(string strClassName, string strWindowName);
[DllImport("user32.dll", SetLastError = true)]
private static extern int FindWindowEx(int hWnd1, int hWnd2, string lpsz1, string lpsz2);
[DllImport("user32.dll", SetLastError = true)]
private static extern int SendMessage(int hWnd, int wMsg, int wParam, int lParam);
const int BM_CLICK = 0x00F5;
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindow(int hWnd, int wCmd);
[DllImport("user32.dll", SetLastError = true)]
private static extern int SetWindowPos(int hWnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);
private const int SWP_SHOWWINDOW = 0x40;
private const int SWP_HIDEWINDOW = 0x80;
[DllImport("User32.dll")]
private static extern bool EnumDisplayDevices(IntPtr lpDevice, int iDevNum, ref DISPLAY_DEVICE lpDisplayDevice, int dwFlags);
[DllImport("User32.dll")]
private static extern bool EnumDisplaySettings(string devName, int modeNum, ref DEVMODE devMode);
[DllImport("user32.dll")]
private static extern int ChangeDisplaySettings(ref DEVMODE devMode, int flags);
[StructLayout(LayoutKind.Sequential)]
public struct DISPLAY_DEVICE
{
public int cb;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string DeviceName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string DeviceString;
public int StateFlags;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string DeviceID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string DeviceKey;
public DISPLAY_DEVICE(int flags)
{
cb = 0;
StateFlags = flags;
DeviceName = new string((char)32, 32);
DeviceString = new string((char)32, 128);
DeviceID = new string((char)32, 128);
DeviceKey = new string((char)32, 128);
cb = Marshal.SizeOf(this);
}
}
//[StructLayout(LayoutKind.Sequential)]
//public struct DEVMODE
//{
//[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
//public string dmDeviceName;
//public short dmSpecVersion;
//public short dmDriverVersion;
//public short dmSize;
//public short dmDriverExtra;
//public int dmFields;
//public short dmOrientation;
//public short dmPaperSize;
//public short dmPaperLength;
//public short dmPaperWidth;
//public short dmScale;
//public short dmCopies;
//public short dmDefaultSource;
//public short dmPrintQuality;
//public short dmColor;
//public short dmDuplex;
//public short dmYResolution;
//public short dmTTOption;
//public short dmCollate;
//[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
//public string dmFormName;
//public short dmUnusedPadding;
//public short dmBitsPerPel;
//public int dmPelsWidth;
//public int dmPelsHeight;
//public int dmDisplayFlags;
//public int dmDisplayFrequency;
//}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public int dmPositionX;
public int dmPositionY;
public int dmDisplayOrientation;
public int dmDisplayFixedOutput;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmFormName;
public short dmLogPixels;
public short dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
public int dmDisplayFlags;
public int dmDisplayFrequency;
public int dmICMMethod;
public int dmICMIntent;
public int dmMediaType;
public int dmDitherType;
public int dmReserved1;
public int dmReserved2;
public int dmPanningWidth;
public int dmPanningHeight;
};
// constants
public const int ENUM_CURRENT_SETTINGS = -1;
public const int DMDO_DEFAULT = 0;
public const int DMDO_90 = 1;
public const int DMDO_180 = 2;
public const int DMDO_270 = 3;
public const int DMDFO_DEFAULT = 0;
public const int DMDFO_STRETCH = 1;
public const int DMDFO_CENTER = 2;
public const int CDS_UPDATEREGISTRY = 0x01;
public const int CDS_FULLSCREEN = 0x04;
/*--------------------------------------------------------------*/
/* ServiceProvider Start : Service Framework Start (업무프레임워크 기동)
/*--------------------------------------------------------------*/
private static Cosmos.ServiceProvider.Activator m_ServiceProvider = new Cosmos.ServiceProvider.Activator();
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object(객체)
private PosStatus m_cPosStatus; // 기본정보 참조
private TranStatus m_cTrnStatus; // 거래정보 참조
private DeviceStatus m_cDevStatus; // 디바이스 관리
private IServiceUs m_cLoadMstSrv;
private IOCBDirect m_OCBDirect = null;
private IDeviceUpdate m_SignPadUpdate; // 서명패드 관리
protected IDataCommonUs m_cDataCommon = null;
private bool m_bChangeDisplay = false; // 해상도 강제변경여부
private bool m_bNeSetupRun = false; // 넥사크로 설치 파일 실행 여부!
private bool m_StartBrake = true; // Kiosk 시작 불가
public frmPosMainStart()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
//this.UpdateStyles();
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);
SetStyle(ControlStyles.UserPaint, true);
m_cPosStatus = (PosStatus)StateObject.POS; //POS 기본정보
m_cTrnStatus = (TranStatus)StateObject.TRAN; //POS 거래정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE; //POS 장치정보
m_cLoadMstSrv = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.LOAD_MASTER_INFO);
m_OCBDirect = (IOCBDirect)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.OCB_DIRECT);
m_SignPadUpdate = (IDeviceUpdate)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.SIGNPAD_UPDATE);
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
}
private void frmPosMainStart_Load(object sender, EventArgs e)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
this.Location = new Point(0, 0);
picBack.Image = ImageManager.GetImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM, ImageManager.INTRO_BACK);
if (picBack.Image == null)
picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.INTRO_BACK);
#region 환경설정 파일 읽기, 화면 해상도 설정
// 환경설정 파일 읽기
IServiceUs cPgmStart = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.PROGRAM_START);
string sRet = cPgmStart.Execute(new string[] { });
// 화면 해상도 설정
if (m_cPosStatus.Sale.ScreenSizeUser == 0 || m_cPosStatus.Sale.ScreenSizeCust == 0)
{
#if KIOSKSTART_OFF
m_cPosStatus.Sale.ScreenSizeUser = 1024;
m_cPosStatus.Sale.ScreenSizeCust = 800;
#else
m_cPosStatus.Sale.ScreenSizeUser = 1920;
m_cPosStatus.Sale.ScreenSizeCust = 800;
#endif
for (int i = 0; i < Screen.AllScreens.Length; i++)
{
#if KIOSKSTART_OFF
if (Screen.AllScreens[i].Primary == true) // 캐셔화면
{
m_cPosStatus.Sale.ScreenSizeUser = (Screen.AllScreens[i].WorkingArea.Width == 800) ? 800 : 1024;
}
else
{
m_cPosStatus.Sale.ScreenSizeCust = (Screen.AllScreens[i].WorkingArea.Width == 800) ? 800 : 1024;
}
#else
if (Screen.AllScreens[i].Primary == true) // 캐셔화면
{
m_cPosStatus.Sale.ScreenSizeUser = (Screen.AllScreens[i].WorkingArea.Width == 800) ? 800 : 1920;
}
else
{
m_cPosStatus.Sale.ScreenSizeCust = (Screen.AllScreens[i].WorkingArea.Width == 800) ? 800 : 1920;
}
#endif
}
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.INFO_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
, "SCREEN SIZE : " + m_cPosStatus.Sale.ScreenSizeUser + " * " + m_cPosStatus.Sale.ScreenSizeCust);
}
// 물리적 화면 해상도 변경 처리(800 => 1024)
for (int i = 0; i < Screen.AllScreens.Length; i++)
{
if (Screen.AllScreens[i].Primary == true) // 캐셔화면
{
if(Screen.AllScreens[i].WorkingArea.Width == 800)
{
ChangeDisplayRate(1024); // 화면 해상도 강제 변경 처리
m_bChangeDisplay = true;
break;
}
}
}
if (m_cPosStatus.Sale.ScreenSizeUser == 800)
{
this.Size = new Size(800, 600);
picBack.Size = new Size(800, 600);
}
else
{
#if KIOSKSTART_OFF
this.Size = new Size(1024, 768);
picBack.Size = new Size(1024, 768);
#else
this.Size = new Size(1920, 1080);
picBack.Size = new Size(1920, 1080);
#endif
}
#endregion
tmrStart.Enabled = true;
}
private void frmPosMainStart_FormClosing(object sender, FormClosingEventArgs e)
{
if (m_StartBrake)
{
e.Cancel = true;
}
else
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
}
}
private void frmPosMainStart_FormClosed(object sender, FormClosedEventArgs e)
{
try
{
CmUtil.CreateDirectory(BaseCom.NxDownPath + @"CDP\");
CmUtil.CreateDirectory(BaseCom.NxDownPath + @"CDP\" + PosConst.MST_IMG_PATH.CDP_COM);
CmUtil.FileCopy(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM + m_cPosStatus.ScnMst.MainImg, BaseCom.NxDownPath + @"CDP\" + PosConst.MST_IMG_PATH.CDP_COM + ImageManager.INTRO_BACK, false);
}
catch
{
}
finally
{
Application.Exit();
}
}
#endregion
#region 타이머
private void tmrStart_Tick(object sender, EventArgs e)
{
string sRet = UserCom.RST_ERR;
try
{
tmrStart.Enabled = false;
// 프로그램 기동
PosStartProc();
if (m_cPosStatus.Sale.SysShutDown.Trim() == "")
{
CmUtil.WriteTextFile(BaseCom.NxBinPath + "PosMain.txt", "PosMain");
//TODO: Off POS 고객용 화면
#if KIOSKSTART_OFF
ICustDisplayUs m_cCustDisp = (ICustDisplayUs)sManager.InitServiceInstance(ServiceLists.ASV_CUSTDISPLAY.DLL, ServiceLists.ASV_CUSTDISPLAY.CUST_DISPLAY);
if (m_cCustDisp != null)
m_cCustDisp.StartCustDisplay(); // 고객용화면 시작
#endif
#region 01 - 서버 점검 데몬 기동 => Add, 2017.09.04, 로그인화면에 근태등록 바로가기 추가
// 서버 점검 데몬 기동
IWatcher cCheckOver = (IWatcher)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK_CHECKOVER.DLL, ServiceLists.AGENT_NETWORK_CHECKOVER.NetworkCheckOver);
cCheckOver.Start();
#endregion 01 - 서버 점검 데몬 기동
#region 08 - Printer 데몬 기동 => Add, 2017.09.04, 로그인화면에 근태등록 바로가기 추가
if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232)
{
IPosPrinterUs cPrinterDaemon = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
cPrinterDaemon.StartPrinterDaemon();
}
#endregion 08 - Printer 데몬 기동
#if KIOSKSTART_OFF
// 캐셔 로그온
if (WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.LOG_ON }) != UserCom.RST_ERR)
#else
if (true)
#endif
{
#region 01 - 서버 점검 데몬 기동 => Del, 2017.09.04, 로그인화면에 근태등록 바로가기 추가, 로그인전으로 이동
//// 서버 점검 데몬 기동
//IWatcher cCheckOver = (IWatcher)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK_CHECKOVER.DLL, ServiceLists.AGENT_NETWORK_CHECKOVER.NetworkCheckOver);
//cCheckOver.Start();
#endregion 01 - 서버 점검 데몬 기동
#region (이전코드) Mod, 2017.04.26, 잠바주스 KPS + KDS 동시사용 !! 이런 !!
// Mod, 2017.04.26, 잠바주스 KPS + KDS 동시사용 !!
//// KPS와 KDS 데몬이 동시에 가동 할 수 없다.
//if (PosMstManager.GetPosOption(POS_OPTION.OPT506) == "1" && (PosMstManager.GetPosOption(POS_OPTION.OPT027) == "1" || PosMstManager.GetPosOption(POS_OPTION.OPT507) == "1"))
//{
// // Mod, 2017.04.10, 메인/주문 POS 모두 KPS 기동
// //if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT ||
// // (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS))
// //{
// // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0679);
// //}
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0679);
//}
//else
//{
// #region 02 - KPS 데몬 기동
// // KPS 데몬 기동 (선불 또는 후불메인 일때)
// if (PosMstManager.GetPosOption(POS_OPTION.OPT506) == "1")
// {
// // Mod, 2017.04.10, 메인/주문 POS 모두 KPS 기동
// //if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT ||
// // (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS))
// //{
// // IKPSMain cKPSMain = (IKPSMain)sManager.InitServiceInstance(ServiceLists.AGENT_KPS.DLL, ServiceLists.AGENT_KPS.KPS_MAIN);
// // cKPSMain.StartKPS();
// //}
// IKPSMain cKPSMain = (IKPSMain)sManager.InitServiceInstance(ServiceLists.AGENT_KPS.DLL, ServiceLists.AGENT_KPS.KPS_MAIN);
// cKPSMain.StartKPS();
// }
// #endregion 02 - KPS 데몬 기동
// #region 03 - KDS 데몬 기동
// // KDS 데몬 기동 (선불 또는 후불메인 일때)
// if (PosMstManager.GetPosOption(POS_OPTION.OPT027) == "1" || PosMstManager.GetPosOption(POS_OPTION.OPT507) == "1")
// {
// if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT ||
// (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS))
// {
// IWatcher cKDSMain = (IWatcher)sManager.InitServiceInstance(ServiceLists.AGENT_KDS.DLL, ServiceLists.AGENT_KDS.KDS_MAIN);
// cKDSMain.Start();
// }
// }
// #endregion 03 - KDS 데몬 기동
//}
#endregion
#region 02 - KPS 데몬 기동
// KPS 데몬 기동
if (PosMstManager.GetPosOption(POS_OPTION.OPT506) == "1")
{
IKPSMain cKPSMain = (IKPSMain)sManager.InitServiceInstance(ServiceLists.AGENT_KPS.DLL, ServiceLists.AGENT_KPS.KPS_MAIN);
cKPSMain.StartKPS();
}
#endregion 02 - KPS 데몬 기동
#region 03 - KDS 데몬 기동
// KDS 데몬 기동
if (PosMstManager.GetPosOption(POS_OPTION.OPT027) == "1" || PosMstManager.GetPosOption(POS_OPTION.OPT507) == "1")
{
IWatcher cKDSMain = (IWatcher)sManager.InitServiceInstance(ServiceLists.AGENT_KDS.DLL, ServiceLists.AGENT_KDS.KDS_MAIN);
cKDSMain.Start();
}
#endregion 03 - KDS 데몬 기동
#region 04 - 저울-라벨프린터 데몬 기동
// 저울-라벨프린터 데몬 기동
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR && m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.BR)
{
if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT ||
(m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS))
{
if (m_cDevStatus.Scale.UseYn == true)
{
IMeasuring cMeasuringMain = (IMeasuring)sManager.InitServiceInstance(ServiceLists.AGENT_MEASURING.DLL, ServiceLists.AGENT_MEASURING.MEASURING_MAIN);
cMeasuringMain.StartMeasuring();
}
}
}
#endregion 04 - 저울-라벨프린터 데몬 기동
#region 05 - 백그라운드(마스터/프로그램) 다운로드 데몬 기동
// 백그라운드(마스터/프로그램) 다운 데몬 기동
IWatcher cBackgroundDown = (IWatcher)sManager.InitServiceInstance(ServiceLists.AGENT_BACKGROUND_DOWN.DLL, ServiceLists.AGENT_BACKGROUND_DOWN.BACKGROUND_DOWN_MAIN);
cBackgroundDown.Start();
#endregion 05 - 백그라운드(마스터/프로그램) 다운로드 데몬 기동
#region 06 - 외부 I/F 데몬 기동
// 외부 인터페이스 데몬 기동
if (m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_01
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_02
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_03
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_04
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_05
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_06
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_SIN_01
)
{
if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT ||
(m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS))
{
lTranInterfaceOutside cTranInterfaceOutside = (lTranInterfaceOutside)sManager.InitServiceInstance(ServiceLists.AGENT_TranInterfaceOutside.DLL, ServiceLists.AGENT_TranInterfaceOutside.TIFO_MAIN);
cTranInterfaceOutside.Start();
}
}
#endregion 06 - 외부 I/F 데몬 기동
#region 07 - 중국 위쳇페인 데몬 종료
// 중국 위쳇페인 데몬 기동(2017.06.05)
WeChatPayApprDeamon(false);
#endregion
#region 08 - Printer 데몬 기동 => Del, 2017.09.04, 로그인화면에 근태등록 바로가기 추가, 로그인전으로 이동
//if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232)
//{
// IPosPrinterUs cPrinterDaemon = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
// cPrinterDaemon.StartPrinterDaemon();
//}
#endregion 08 - Printer 데몬 기동
#if KIOSKSTART_OFF
//메인화면 실행
frmPosMain fMain = new frmPosMain();
FormManager.AddForm(FormManager.FORM_POS_MAIN, fMain);
fMain.frmMainStart = this;
fMain.ShowDialog();
this.Top = 0;
m_StartBrake = false;
#else
//TODO: 2019-04-17 - 1997fx11 : 마감 및 개점처리
m_cDataCommon.SetSaleEndOpen();
//2019.04.24 연습모드 값 강제 변경
m_cPosStatus.Base.TrainingFlag = ItemConst.TRAINING_FLAG.TRAINING_NO;
if (m_cPosStatus.Base.OlePosNetworkStatus.Equals(UserCom.RST_OK))
{
//if (m_cPosStatus.Base.OlePosPrinterStatus.Equals(UserCom.RST_OK))
//{
//TODO:Kiosk Start
this.Hide();
var newPBWin = new SPC.Kiosk.PB.PBWindow();
newPBWin.ReaderCheck += NewPBWin_ReaderCheck;
newPBWin.RecipetRefund += NewPBWin_RecipetRefund;
newPBWin.RecipetReprint += NewPBWin_RecipetReprint;
newPBWin.ShowDialog();
newPBWin.RecipetReprint -= NewPBWin_RecipetReprint;
newPBWin.ReaderCheck -= NewPBWin_ReaderCheck;
newPBWin.RecipetRefund -= NewPBWin_RecipetRefund;
newPBWin = null;
m_StartBrake = false;
this.Show();
//}
//else
//{
// WinManager.ErrorMessage("프린터 연결 오류");
//}
}
else
{
WinManager.ErrorMessage("네트워크 연결을 확인하세요.");
}
if (m_StartBrake)
{
this.KeyPreview = true;
this.TopMost = true;
this.Focus();
this.KeyPress += FrmPosMainStart_KeyPress;
}
#endif
}
#if KIOSKSTART_OFF
if (m_cCustDisp != null)
m_cCustDisp.CloseCustDisplay(); // 고객용화면 종료
#endif
}
//프로그램 종료
PosEndProc();
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
finally
{
this.Close();
}
}
private void FrmPosMainStart_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar.Equals((char)Keys.Escape))
{
m_StartBrake = false;
this.Close();
}
}
private void NewPBWin_RecipetReprint(object sender)
{
using (var RecipetReprint = new frmReJournal())
{
m_cPosStatus.Sale.EtcOperateMode = PosConst.ETC_OPERATION_MODE.MENU_EXECUTE;
RecipetReprint.SetCallBiz = string.Empty;
RecipetReprint.ShowDialog();
}
}
private void NewPBWin_RecipetRefund(object sender)
{
using (var RecipetRefund = new frmRefundRec())
{
m_cPosStatus.Sale.EtcOperateMode = PosConst.ETC_OPERATION_MODE.MENU_EXECUTE;
RecipetRefund.ShowDialog();
}
}
private void NewPBWin_ReaderCheck(object sender)
{
using (var IcReaderCheck = new frmIntegrity())
{
IcReaderCheck.SetPosMenuKey = PosKey.MENU_KEY.POS_CERTIFY_INTEGRITY;
IcReaderCheck.SetDeviceType = string.Empty;
IcReaderCheck.SetAutoMode = false;
IcReaderCheck.ShowDialog();
}
}
#endregion
#region POS 프로그램 시작 처리
///
/// POS 프로그램 시작 처리
///
private bool PosStartProc()
{
string sRet = "";
try
{
#region 기본정보 체크 및 데이터베이스 관리
// 기본 정보 체크
if (m_cPosStatus.Base.CmpCd.Trim() == "" || m_cPosStatus.Base.StoreNo.Trim() == "" || m_cPosStatus.Base.PosNo.Trim() == "" || m_cPosStatus.Base.SaleDate.Trim() == "")
{
// POS 환경 설정 프로그램 강제 종료
Process[] arPosPgm = Process.GetProcessesByName("PosConfiguration");
foreach (Process pPosPgm in arPosPgm)
{
pPosPgm.Kill();
Thread.Sleep(1000);
}
// POS 환경 설정 프로그램 실행
ProcessStartInfo startInfo = new ProcessStartInfo("PosConfiguration.exe");
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.CreateNoWindow = false;
Process.Start(startInfo);
m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMQUIT;
return false;
}
// 데이터베이스 생성
frmDatabaseInit fForm = new frmDatabaseInit();
fForm.PosMenuKey = "SQLDB";
fForm.ShowDialog();
#endregion
#region 넥사크로 설치!
//if (VC2005RedistributableSetup() == true)
//{
// NexacroSetupEngine(true);
//}
#endregion 넥사크로 설치!
#region MPS.dll(OCB) 을 위한 VC++ 2008 재배포패키지 설치
//#20171115 2008_vcredist_x86.exe 실행 기능 주석 start
//VC2008RedistributableSetup();
//#20171115 2008_vcredist_x86.exe 실행 기능 주석 end
#endregion MPS.dll(OCB) 을 위한 VC++ 2008 재배포패키지 설치
#region OPOS 레지스트리 등록
// 환경설정에서 등록해주던 것을 프로그램에서 해줌(2017.07.10)
if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.OPOS)
{
string defaultPosPrinter = CmUtil.GetRegistryString("HKEY_LOCAL_MACHINE", @"\SOFTWARE\OLEforRetail\ServiceOPOS\PosPrinter", "DefaultPosPrinter").Trim();
if (defaultPosPrinter.Length == 0)
{
defaultPosPrinter = "POS_PRT";
foreach (var key in PosConst.POS_DEVICE_LIST.POS_PRINTER.htSvcOPOS.Keys)
{
if (key.ToString() == m_cPosStatus.Base.OlePosPrinterModel)
{
defaultPosPrinter = PosConst.POS_DEVICE_LIST.POS_PRINTER.htSvcOPOS[key].ToString();
break;
}
}
CmUtil.SetRegistryString("HKEY_LOCAL_MACHINE", @"\SOFTWARE\OLEforRetail\ServiceOPOS\PosPrinter", "DefaultPosPrinter", defaultPosPrinter);
}
}
if(m_cPosStatus.Base.OlePosCashDrawerType == "2")
{
string defaultCashDrawer = CmUtil.GetRegistryString("HKEY_LOCAL_MACHINE", @"\SOFTWARE\OLEforRetail\ServiceOPOS\CashDrawer", "DefaultCashDrawer").Trim();
if (defaultCashDrawer.Length == 0)
{
defaultCashDrawer = string.Empty;
defaultCashDrawer = PosConst.POS_DEVICE_LIST.CASHDRAWER.SvcOPOS;
CmUtil.SetRegistryString("HKEY_LOCAL_MACHINE", @"\SOFTWARE\OLEforRetail\ServiceOPOS\CashDrawer", "DefaultCashDrawer", defaultCashDrawer);
}
}
#endregion OPOS 레지스트리 등록
#region POS 마스터 로드
// POS 기본 마스터 로드
m_cLoadMstSrv.Execute(new string[] { "BASIC_MST_LOAD" });
#if !DEVICE_MSR_VER
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR)
{
if( m_cDevStatus.ICReader.UseYn == false)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0587) == true)
m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMRESTART;
else
m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMQUIT;
return false;
}
}
#else
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR)
{
if (m_cDevStatus.ICReader.UseYn == true)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0588) == true)
m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMRESTART;
else
m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMQUIT;
return false;
}
}
#endif
#endregion
#region 디스크 용량 체크
DriveInfo drv = new DriveInfo(CmUtil.MidH(BaseCom.NxDownPath, 0, 1));
if (drv.TotalFreeSpace < 10000000)
{
string sMsg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0659);
if (sMsg.Trim() == "") sMsg = "There is not enough disk space. Please check.";
WinManager.ErrorMessage(sMsg);
}
#endregion
#region 긴급 프로그램 여러번 재부팅 실행 막기
SetEmgProgramUpdate();
#endregion
#region 프로그램 다운로드
if (m_cPosStatus.Base.OlePosPrinterModel != "99")
{
// 프로그램 다운로드
PosPgmUpdate();
// 프로그램 업데이트 여부 체크
if (m_cPosStatus.Sale.SysShutDown.Trim() != "") return false;
}
#endregion
//20180611 프린터 미출력 개선 02Printer.exe start
//변경
#if (PRT_O2PRINTER)
#region O2Printer.exe 실행
//RunO2Printer(true);
#endregion O2Printer.exe 실행
#endif
//20180611 프린터 미출력 개선 02Printer.exe end
#region 서명패드 업데이트 확인
//if (SignPadFileUpdate() == true)
//{
// // 서명패드 업데이트 팝업창 표시
// WinBasic.ShowForm(new string[] { FormManager.FORM_SIGNPAD_UPDATE, "" });
//}
#endregion
#region 영수증 로고 다운로드 및 관리
//string sLogoModifiedDate = "";
//if(RcptLogoUpdate(ref sLogoModifiedDate) == true)
//{
// SetRcptLogo(sLogoModifiedDate);
//}
SetRcptLogo();
#endregion 영수증 로고 다운로드 및 관리
#region 주변장치 체크 및 마스터 DB 수신
if (m_cPosStatus.Base.OlePosPrinterModel != "99")
{
// 주변장치 체크 및 마스터 DB 수신
WinBasic.ShowForm(new string[] { FormManager.FORM_PROGRAM_START, PosConst.MASTER_DOWN_OP.CHANGED, PosConst.POS_PERIPHERAL_CHECK.CHECK, "A" });
}
// 기본마스터 재로드
var tmpPosCommunicationType = m_cPosStatus.Base.PosCommunicationType;
m_cLoadMstSrv.Execute(new string[] { "BASIC_MST_LOAD" });
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType != tmpPosCommunicationType)
{
// 전환후 전체 마스터 수신 가능하게
CmMessage cmPosSaleInfo = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosSaleInfo);
cmPosSaleInfo.GetMessage("POSOPEN").MakeMessageOverWrite("MstDownDate", m_cPosStatus.Mst.ComplexShopType == "0" ? PosConst.BEGINNING_MST_DOWN_DATE : PosConst.BEGINNING_COMPLEX_SHOP_MST_DOWN_DATE);
cmPosSaleInfo.GetMessage("CHECKOVER").MakeMessageOverWrite("MstBatchDownDate", m_cPosStatus.Mst.ComplexShopType == "0" ? PosConst.BEGINNING_MST_DOWN_DATE : PosConst.BEGINNING_COMPLEX_SHOP_MST_DOWN_DATE);
cmPosSaleInfo.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosSaleInfo);
m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMRESTART;
return false;
}
// 데이터베이스 연결정보 메인포스로 변경
m_cLoadMstSrv.Execute(new string[] { "CHANGE_MAINPOS_DB" });
// POS 마스터 전체 로드
m_cLoadMstSrv.Execute(new string[] { });
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType != tmpPosCommunicationType)
{
// 로컬마스터와 메인마스터가 다르면 ...
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0678);
m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMQUIT;
return false;
}
#endregion
#region (구)시리얼 변환 프로그램 종료
//O2MSR 에서 자체적으로 (구)시리얼변환 프로그램 종료 하므로 종료할 필요 없음(2017.07.03)
//SerialMsrToEmul("1");
#endregion
#region X-CHARGE DLL 등록
RegXChargeDll();
#endregion
#region 무결성 검사 및 T페이 BLE 체크
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR)
{
#region 무결성 검사
if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크
{
// KSN Download (IC)
if (m_cDevStatus.ICReader.UseYn == true && m_cPosStatus.Base.KSN_IC_Download.ToUpper().Trim() == "K1")
WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.CERTIFICATION, PosConst.POS_CARD_READER_DEVICE_TYPE.IC_READER, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0352), "" });
// KSN Download (Signpad)
if (m_cDevStatus.SignPad.UseYn == true && m_cPosStatus.Base.KSN_SignPad_Download.ToUpper().Trim() == "K1")
WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.CERTIFICATION, PosConst.POS_CARD_READER_DEVICE_TYPE.SAIGNPAD, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0383), "" });
// 무결성 검사 (IC)
if (m_cDevStatus.ICReader.UseYn == true)
WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.INTEGRITY, PosConst.POS_CARD_READER_DEVICE_TYPE.IC_READER, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0351) });
}
// 서명패드 사용시
if (m_cDevStatus.SignPad.UseYn == true)
{
if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크
{
// 무결성 검사 (서명패드)
WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.INTEGRITY, PosConst.POS_CARD_READER_DEVICE_TYPE.SAIGNPAD, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0381) });
}
// 교통카드 개시거래 진행(2017.06.12)
if (PosMstManager.GetMstPayDc(ItemConst.TR_ITEM_ID.MOBILECASH_ITEM, ItemConst.TR_ITEM_ID.MOBILECASH.T_MONEY, PosMst.MST_PAY_DC.DATA.USE_YN) == "1")
{
// TMoney 개시
WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.OPENSTART, PosConst.POS_CARD_READER_DEVICE_TYPE.TMONEY, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0348) });
// TMoney 운영정보
WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.BIZDOWNLOAD, PosConst.POS_CARD_READER_DEVICE_TYPE.TMONEY, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0349) });
}
if (PosMstManager.GetMstPayDc(ItemConst.TR_ITEM_ID.MOBILECASH_ITEM, ItemConst.TR_ITEM_ID.MOBILECASH.CASHBEE, PosMst.MST_PAY_DC.DATA.USE_YN) == "1")
{
// CashBee 개시
WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.OPENSTART, PosConst.POS_CARD_READER_DEVICE_TYPE.CASHBEE, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0359) });
// CashBee 운영정보
WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.BIZDOWNLOAD, PosConst.POS_CARD_READER_DEVICE_TYPE.CASHBEE, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0360) });
}
// PayOn SAM 등록
WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.OPENSTART, PosConst.POS_CARD_READER_DEVICE_TYPE.PAYON, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0350) });
//// TMoney 운영정보
//if (PosMstManager.GetMstPayDc(ItemConst.TR_ITEM_ID.MOBILECASH_ITEM, ItemConst.TR_ITEM_ID.MOBILECASH.T_MONEY, PosMst.MST_PAY_DC.DATA.USE_YN) == "1")
// WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.BIZDOWNLOAD, PosConst.POS_CARD_READER_DEVICE_TYPE.TMONEY, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0349) });
//// CashBee 운영정보
//if (PosMstManager.GetMstPayDc(ItemConst.TR_ITEM_ID.MOBILECASH_ITEM, ItemConst.TR_ITEM_ID.MOBILECASH.CASHBEE, PosMst.MST_PAY_DC.DATA.USE_YN) == "1")
// WinAdmin.ShowForm(new string[] { FormManager.FORM_CERTIFY_INTEGRITY_THREAD, PosConst.SCFBA_BIZ_TYPE.BIZDOWNLOAD, PosConst.POS_CARD_READER_DEVICE_TYPE.CASHBEE, PosConst.SCFBA_PROC_TYPE.AUTO, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0360) });
}
#endregion
#region T페이 BLE 동글 (Paygle) 체크
// T페이 BLE 동글 (Paygle) 체크
if (PosMstManager.GetPosOption(POS_OPTION.OPT319) == "1")
{
ITPaygleUs cDeviceTPaygle = (ITPaygleUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_TPAYGLE);
bool ret = cDeviceTPaygle.CheckPaygle();
}
#endregion
#region OCB 직통신 가맹점 인증 및 등록
if (PosMstManager.GetPosOption(POS_OPTION.OPT326) != "0" && PosMstManager.GetPosOption(POS_OPTION.OPT326) != "" && m_cDevStatus.ICReader.UseYn != true) // OCB 직통신
{
string sResMsg = "";
string[] aIrtRspDTL = null;
string sMsg = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1000);
if (sMsg.Trim() == "") sMsg = "OCB merchant authentication.\n Please wait a moment."; // OCB 가맹점 인증중 입니다. 잠시만 기다려 주십시요.
WinManager.ShowSearchMessage(sMsg, this);
// 가맹점 인증
sRet = m_OCBDirect.OCB_Direct_Point(PosConst.CANCEL_DIV.CANCEL, ItemConst.TR_ITEM_ID.POINT_ITEM, ItemConst.TR_ITEM_ID.POINT_USE.OKCASHBACK_POINT, PosConst.POS_OCB_DIRECT.STOR_AUTH, "", "", "0", "", "", "", ref sResMsg, ref aIrtRspDTL);
WinManager.HideSearchMessage(this);
if (sRet != UserCom.RST_OK)
{
string sMsg2 = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0130);
if (WinManager.QuestionMessage(sResMsg + "\n" + sMsg2) == true) // 등록된 할인을 취소 하시겠습니까?
{
string sMsg1 = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1001);
if (sMsg1.Trim() == "") sMsg1 = "Registering OCB merchants..\n Please wait a moment."; // OCB 가맹점 등록중 입니다. 잠시만 기다려 주십시요.
WinManager.ShowSearchMessage(sMsg1, this);
// 가맹점 등록 (차후 승인 테스트시 오류 코드 체크해서 "가맹점미등록" 인경우만 처리 - 8830)
sRet = m_OCBDirect.OCB_Direct_Point(PosConst.CANCEL_DIV.CANCEL, ItemConst.TR_ITEM_ID.POINT_ITEM, ItemConst.TR_ITEM_ID.POINT_USE.OKCASHBACK_POINT, PosConst.POS_OCB_DIRECT.STOR_REGISTER, "", "", "0", "", "", "", ref sResMsg, ref aIrtRspDTL);
WinManager.HideSearchMessage(this);
if (sRet == UserCom.RST_OK)
{
WinManager.ShowSearchMessage(sMsg, this);
// 가맹점 인증
sRet = m_OCBDirect.OCB_Direct_Point(PosConst.CANCEL_DIV.CANCEL, ItemConst.TR_ITEM_ID.POINT_ITEM, ItemConst.TR_ITEM_ID.POINT_USE.OKCASHBACK_POINT, PosConst.POS_OCB_DIRECT.STOR_AUTH, "", "", "0", "", "", "", ref sResMsg, ref aIrtRspDTL);
WinManager.HideSearchMessage(this);
}
if (sRet != UserCom.RST_OK)
{
WinManager.ErrorMessage(sResMsg);
}
}
}
}
#endregion
}
#endregion
#region 룰파일 다운로드// POS SPEC 전송 / 시스템오픈일자 조회
if (m_cPosStatus.Base.OlePosPrinterModel != "99")
{
// 룰파일 다운로드
RuleFileDownLoad();
// POS SPEC 전송
SendPosSpec();
// 시스템오픈일자 조회
GetSysOpenDate();
}
#endregion
#region BR 팝업 업무 조회 셋팅
if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.BR)
{
IDataCommonUs m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
m_cDataCommon.SetBrPopUpBizMst();
}
#endregion
#region 거래송신 프로세스 기동, POS 시작 프로그램 강제 종료
// 거래송신 프로세스 기동
INetworkTranSend cTranSend = (INetworkTranSend)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK_TRANSEND.DLL, ServiceLists.AGENT_NETWORK_TRANSEND.NetworkTranSend);
cTranSend.StartTranSend();
try
{
// POS 시작 프로그램 강제 종료
Process[] arPosPgm = Process.GetProcessesByName("PosStart");
foreach (Process pPosPgm in arPosPgm)
{
pPosPgm.Kill();
Thread.Sleep(1000);
}
CmUtil.FileMove("PosStart.exe", BaseCom.NxRootPath + @"DOWN\PGM\BIN\", BaseCom.NxRootPath + @"BIN\", "");
// 서버에서 이미지 재수신을 위해 로컬 사용으로 복사
DirectoryInfo dirParent = Directory.GetParent(Directory.GetCurrentDirectory());
if (File.Exists(dirParent.FullName + @"\CDP\CDP_COM\intro_bimg.png") == true)
{
File.Copy(dirParent.FullName + @"\CDP\CDP_COM\intro_bimg.png", dirParent.FullName + @"\CDP\CDP_COM\" + "intro_bimg000.png", true);
}
}
catch { }
if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크
{
IcReaderSettingDevice(true);
}
#endregion
#region 시리얼 변환 프로그램 - 시작
SerialMsrToEmul("2");
#endregion
//#20171017 O2MSR_UPDATE.exe 실행 start
#region O2MSR_UPDATE.exe 실행
SerialMsrToEmul("4");
#endregion
//#20171017 O2MSR_UPDATE.exe 실행 end
//20180718 O2SKIOSK.EXE start
//판매포스 옵션이 사용이면 O2SKIOSK.EXE 실행(실행 되어 있지 않은 경우에만 실행)
//변경
#region O2SKIOSK.EXE 실행
if (PosMstManager.GetPosOption(POS_OPTION.OPT517) == "1")
{
RunO2SKIOSK(true);
}
#endregion O2SKIOSK.EXE 실행
//20180718 O2SKIOSK.EXE end
//#20180711 O2SKIOSK_UPDATE.exe 실행 start
#region O2SKIOSK_UPDATE.exe 실행
RunO2SKIOSK_UPDATE();
#endregion O2SKIOSK_UPDATE.exe 실행
//#20171017 O2SKIOSK_UPDATE.exe 실행 end
#region KAC(공항공사) Agent 프로그램 실행
KACAgentStartNKill(true);
#endregion KAC(공항공사) Agent 프로그램 실행
#region ZookAgentSetup 설치
if (m_cPosStatus.Base.OlePosPrinterModel != "99")
{
ZookAgentSetup();
}
#endregion
#region 동영상 플레이어 가동
//DualPlayStartNkill(true);
#endregion
//#20170907 넥사크로 캐시 삭제 start
#region 넥사크로 캐시 삭제
//#11475 넥사크로 캐시삭제 실행 삭제 start - PHJ 20170910
//NexacroCacheUninstall(true);
//#11475 넥사크로 캐시삭제 실행 삭제 end - PHJ 20170910
#endregion 넥사크로 캐시 삭제
//#20170907 넥사크로 캐시 삭제 end
//#20180223 인천공항T2 사용인 경우 O2IAIRPORT.exe 실행 start
#region O2IAIRPORT.exe 실행
/*
if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT512), "0") == "1")
{
RunO2IAIRPORT();
}
*/
#endregion O2IAIRPORT.exe 실행
//#20180223 인천공항T2 사용인 경우 O2IAIRPORT.exe 실행 end
//// 상품마스터 이미지명 설정
//ISalePluItemUs cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM);
//cPluService.UpdateMstItemImageName();
return true;
}
catch(Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
finally
{
WinManager.HideSearchMessage(this);
}
return false;
}
#endregion
#region X-CHARGE DLL 등록
private bool RegXChargeDll()
{
bool bRet = false;
try
{
//옵션 체크
if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT024), "0") == "1")
{
string sFileName = BaseCom.NxBinPath + PosConst.XCHARGE.DLL_FILE;
//파일 체크
if (File.Exists(sFileName) == false)
{
//파일 없음!
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0647);
}
else
{
//파일 등록
Process.Start("regsvr32.exe", "/s \"" + sFileName + "\"");
bRet = true;
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
#endregion
#region 동영상 플레이어 가동
///
/// 동영상 플레이어 가동
///
///
///
private bool DualPlayStartNkill(bool bReStart)
{
try
{
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(PosConst.CUST_PIPE_NAME.CUST_PROCESS);
if (p.GetLength(0) > 0)
{
p[0].Kill();
if (bReStart == true) Thread.Sleep(1000);
}
if (bReStart == true)
{
string strappname = BaseCom.NxBinPath + PosConst.CUST_PIPE_NAME.CUST_PROCESS_EX;
System.Diagnostics.Process.Start(strappname);
}
return true;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
#endregion
#region 넥사크로 설치 및 설치 완료 처리
///
/// 넥사크로 설치 및 설치 완료 처리
///
///
///
private void NexacroSetupEngine(bool bStart)
{
try
{
string sSetupFile = BaseCom.NxBinPath + "nexacro14_SetupEngine.exe"; // 원본파일
string sSetupFileBak = BaseCom.NxBinPath + "nexacro14_SetupEngine.bak"; // 백업파일
if (bStart == true)
{
var isExist = CmUtil.Exists(sSetupFile);
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
isExist ? "Nexacro install start [" + sSetupFile + "] " : "Nexacro is already installed");
//실행시 있으면 실행
if (isExist == true)
{
CmUtil.ExecuteProcess(sSetupFile, "/VERYSILENT");
m_bNeSetupRun = true;
}
}
else
{
if (m_bNeSetupRun == true)
{
//종료시 있으면 이름 변경(Move File)
if (CmUtil.Exists(sSetupFile) == true)
{
CmUtil.FileMove(sSetupFile, sSetupFileBak); //이름변경
}
}
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return;
}
///
/// VC++ 2005 재배포패키지 설치
/// (Microsoft Visual C++ 2005 Redistributable)
///
///
///
/// 넥사크로 정상 동작을 위해서 반드시 필요함.
///
private bool VC2005RedistributableSetup()
{
try
{
// VC++ 2005 재배포패키지 설치 유무 확인
var keyName = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{837b34e3-7c30-493c-8f6a-2b0f04e2912c}";
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName))
{
if (key != null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"MS VC++ 2005 Redistributable is already installed");
return true;
}
var procName = BaseCom.NxBinPath + "4053_vcredist_x86.exe";
var procArgs = @"/Q";
if (CmUtil.Exists(procName) == false)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
string.Format("MS VC++ 2005 Redistributable install file not found. [{0}]", procName));
return false;
}
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
string.Format("MS VC++ 2005 Redistributable install Start [{0}]", procName));
this.TopMost = true;
CmUtil.ExecuteWaitProcess(procName, procArgs, ProcessWindowStyle.Hidden, 1000 * 300);
Thread.Sleep(50);
}
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName))
{
var msg = key == null ? "Failed" : "Success";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
string.Format("MS VC++ 2005 Redistributable install Result [{0}]", msg));
if (key == null) return false;
}
return true;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
return false;
}
finally
{
this.TopMost = false;
this.Update();
}
}
private bool VC2008RedistributableSetup()
{
try
{
// VC++ 2008 재배포패키지 설치 유무 확인
var keyName = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}";
using(RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName))
{
if(key != null)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"MS VC++ 2008 Redistributable is already installed");
return true;
}
var procName = BaseCom.NxBinPath + "2008_vcredist_x86.exe";
var procArgs = @"/Q";
if (CmUtil.Exists(procName) == false)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
string.Format("MS VC++ 2008 Redistributable install file not found. [{0}]", procName));
return false;
}
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
string.Format("MS VC++ 2008 Redistributable install Start [{0}]", procName));
this.TopMost = true;
CmUtil.ExecuteWaitProcess(procName, procArgs, ProcessWindowStyle.Hidden, 1000 * 300);
Thread.Sleep(50);
}
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName))
{
var msg = key == null ? "Failed" : "Success";
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
string.Format("MS VC++ 2008 Redistributable install Result [{0}]", msg));
if (key == null) return false;
}
return true;
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
return false;
}
finally
{
this.TopMost = false;
this.Update();
}
}
#endregion
//#20170907 넥사크로 캐시 삭제 start
#region 넥사크로 캐시 삭제 처리
///
/// 넥사크로 캐시 삭제 처리
///
///
///
//#11475 넥사크로 캐시삭제 실행 삭제 start - PHJ 20170910
/*
private void NexacroCacheUninstall(bool bStart)
{
try
{
string sSetupFile = BaseCom.NxBinPath + "Uninstall_Nexacro_Cache.exe"; // 원본파일
if (bStart == true)
{
var isExist = CmUtil.Exists(sSetupFile);
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
isExist ? "Uninstall_Nexacro_Cache start [" + sSetupFile + "] " : "File None");
//실행시 있으면 실행
if (isExist == true)
{
CmUtil.ExecuteProcess(sSetupFile, "/VERYSILENT");
}
}
else
{
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return;
}
*/
//#11475 넥사크로 캐시삭제 실행 삭제 end - PHJ 20170910
#endregion
//#20170907 넥사크로 캐시 삭제 end
#region 영수증 로고 파일 관리
///
/// 영수증 로고 파일 관리
///
private void SetRcptLogo()
{
try
{
if (m_cPosStatus.Base.OlePosPrinterModel != "99")
{
string sTopLogoTargetFile = BaseFrame.BaseCom.NxImgPath + @"RCPTLOGO\" + m_cPosStatus.Base.BrandDiv + "_TOP.bmp";
string sBotLogoTargetFile = BaseFrame.BaseCom.NxImgPath + @"RCPTLOGO\" + m_cPosStatus.Base.BrandDiv + "_BOT.bmp";
string sTopLogoFile = BaseFrame.BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_TOP.bmp";
string sBotLogoFile = BaseFrame.BaseCom.NxImgPath + m_cPosStatus.Base.BrandDiv + "_BOT.bmp";
// 새로 다운 받은 영수증로고 이미지 폴더에서 자기 상단영수증로고를 image 폴더로 copy
if (File.Exists(sTopLogoTargetFile))
{
foreach (string file in Directory.EnumerateFiles(BaseFrame.BaseCom.NxImgPath, "??_TOP.bmp"))
{
File.Delete(file);
}
File.Copy(sTopLogoTargetFile, sTopLogoFile, true);
}
// 새로 다운 받은 영수증로고 이미지 폴더에서 자기 하단영수증로고를 image 폴더로 copy
if (File.Exists(sBotLogoTargetFile))
{
foreach (string file in Directory.EnumerateFiles(BaseFrame.BaseCom.NxImgPath, "??_BOT.bmp"))
{
File.Delete(file);
}
File.Copy(sBotLogoTargetFile, sBotLogoFile, true);
}
// 새로 다운 받은 영수증로고 이미지 폴더를 삭제
DirectoryInfo di = new DirectoryInfo(BaseFrame.BaseCom.NxImgPath + @"RCPTLOGO\");
if (di.Exists == true)
{
di.Delete(true);
}
// 로고 이미지 Printer Upload
if (m_cPosStatus.Base.LogoUpload != PosConst.LOGO_UPLOAD_DIV.NO)
{
IPosPrinterUs cPosPrinterUs = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
cPosPrinterUs.OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER);
bool bCheckPrinter = true;
//#20171212 프린터 상태 체크 여부 추가 start
//0: 체크, 1: 체크안함
//기존
/*
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON)
{
bCheckPrinter = cPosPrinterUs.CheckPrinter();
}
*/
//변경
if (m_cPosStatus.Base.OlePosPrinterModel == PosConst.POS_DEVICE_LIST.POS_PRINTER._1_EPSON &&
m_cPosStatus.Base.OlePosPrinterCheckYn == "0")
{
bCheckPrinter = cPosPrinterUs.CheckPrinter();
}
//#20171212 프린터 상태 체크 여부 추가 end
//if (cPosPrinterUs.CheckPrinter() == true)
if(bCheckPrinter == true)
{
if (cPosPrinterUs.SetLogoBmp() == true)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR
, UserCom.INFO_LEVEL
, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
, "BMP Logo update successed!");
// 영수증로고 수정일자 PosSaleInfo.ini 저장
IServiceUs cSaveConfigInfo = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO);
string sRet = cSaveConfigInfo.Execute(new string[] { PosConst.INI_FILE_NAME.PosSaleInfo });
//DirectoryInfo di = new DirectoryInfo(BaseFrame.BaseCom.NxImgPath + "rcpt_logo\\");
//if (di.Exists == true)
//{
// di.Delete(true);
//}
if (m_cPosStatus.Base.LogoUpload == PosConst.LOGO_UPLOAD_DIV.YES)
{
// 영수증로고 업로드 후 영수증로고 업로드 안 함으로 변경
m_cPosStatus.Base.LogoUpload = PosConst.LOGO_UPLOAD_DIV.NO;
// PosConfig.INI 저장
cSaveConfigInfo = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO);
cSaveConfigInfo.Execute(new string[] { PosConst.INI_FILE_NAME.PosConfig });
}
}
else
{
UserLog.WriteLogFile(UserCom.LOG_ERROR
, UserCom.INFO_LEVEL
, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
, "BMP Logo update failed...");
}
//cPosPrinterUs.CloseDevice();
}
//20180611 프린터 미출력 개선 02Printer.exe start
//기존
#if (PRT_O2PRINTER)
#else
cPosPrinterUs.CloseDevice();
#endif
//20180611 프린터 미출력 개선 02Printer.exe end
}
else
{
// Upload 아니더라도 OPOS는 항상 Upload 후 사용
if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.OPOS)
{
IPosPrinterUs cPosPrinterUs = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
cPosPrinterUs.OpenDevice(PosConst.OPOS_DEVICE.POSPRINTER, PosConst.OPOS_LDN.POSPRINTER);
if (cPosPrinterUs.SetLogoBmp() == true)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR
, UserCom.INFO_LEVEL
, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
, "(OPOS)BMP Logo update successed!");
// 영수증로고 수정일자 PosSaleInfo.ini 저장
IServiceUs cSaveConfigInfo = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO);
string sRet = cSaveConfigInfo.Execute(new string[] { PosConst.INI_FILE_NAME.PosSaleInfo });
}
else
{
UserLog.WriteLogFile(UserCom.LOG_ERROR
, UserCom.INFO_LEVEL
, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
, "(OPOS)BMP Logo update failed...");
}
cPosPrinterUs.CloseDevice();
}
}
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
"영수증로고Upload 실패:" + ex.Message);
}
}
#endregion 영수증 로고 파일 관리
#region 시리얼 변환 프로그램 체크
///
/// 시리얼 변환 프로그램 체크
///
/// 1:구프로그램종료,2:가동,3:종료,4:O2MSR_UPDATE 실행
///
private bool SerialMsrToEmul(string sStep)
{
try
{
// IC리더기 사용유무도 체크(조성완C 요청, 2017.07.10)
//if (m_cDevStatus.Msr.UseYn == true && m_cPosStatus.Base.OlePosMsrController == "2")
if (m_cDevStatus.Msr.UseYn == true && m_cPosStatus.Base.OlePosMsrController == "2" && m_cDevStatus.ICReader.UseYn == false)
{
if (sStep == "1") //구 프로그램 종료!
{
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(PosConst.MSR_SERIAL_EMULATOR.OLD_APP_PROCESS);
if (p.GetLength(0) > 0)
{
p[0].Kill();
}
}
else
{
//System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(PosConst.MSR_SERIAL_EMULATOR.APP_PROCESS);
//if (p.GetLength(0) > 0)
//{
// p[0].Kill();
// if (sStep == "2") Thread.Sleep(1000);
//}
if (sStep == "2")
{
string strappname = BaseCom.NxBinPath + PosConst.MSR_SERIAL_EMULATOR.APP_FILE;
System.Diagnostics.Process.Start(strappname);
}
//#20171017 O2MSR_UPDATE.exe 실행 start
else if (sStep == "4")
{
string sO2MSRUPDATEFile = BaseCom.NxBinPath + "O2MSR_UPDATE.exe";
string sO2MSRNEWFile = BaseCom.NxBinPath + "O2MSR_NEW.EXE";
var isUPExist = CmUtil.Exists(sO2MSRUPDATEFile);
var isNEWExist = CmUtil.Exists(sO2MSRNEWFile);
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
isUPExist ? "O2MSR_UPDATE.exe [Exist]" : "O2MSR_UPDATE.exe [None]");
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
isNEWExist ? "O2MSR_NEW.exe [Exist]" : "O2MSR_NEW.exe [None]");
//실행시 있으면 실행
if ((isUPExist == true) && (isNEWExist == true))
{
CmUtil.ExecuteProcess(sO2MSRUPDATEFile, "");
}
}
//#20171017 O2MSR_UPDATE.exe 실행 end
}
}
return true;
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
#endregion
#region KAC(공항공사) Agent
private bool KACAgentStartNKill(bool bReStart)
{
try
{
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(PosConst.KAC_AGENT.APP_PROCESS);
if(p.GetLength(0) > 0)
{
p[0].Kill();
if (bReStart == true) Thread.Sleep(1000);
}
if(bReStart == true)
{
if (File.Exists(PosConst.KAC_AGENT.APP_FILE) == true)
{
System.Diagnostics.Process.Start(PosConst.KAC_AGENT.APP_FILE);
}
}
return true;
}
catch(Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
#endregion
#region POS 프로그램 종료 처리
///
/// POS 프로그램 종료 처리
///
private bool PosEndProc()
{
try
{
this.Refresh();
#region 01 - 거래송신 데몬 종료
// 거래송신 프로세스 종료
INetworkTranSend cTranSend = (INetworkTranSend)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK_TRANSEND.DLL, ServiceLists.AGENT_NETWORK_TRANSEND.NetworkTranSend);
cTranSend.StopTranSend();
#endregion 01 - 거래송신 데몬 종료
#region 02 - 서버 점검 데몬 종료
// 서버 점검 데몬 종료
IWatcher cCheckOver = (IWatcher)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK_CHECKOVER.DLL, ServiceLists.AGENT_NETWORK_CHECKOVER.NetworkCheckOver);
cCheckOver.Stop();
#endregion 02 - 서버 점검 데몬 종료
#region 03 - 백그라운드 다운로드 데몬 종료
// 백그라운드 다운 데몬 종료
IWatcher cBackgroundDown = (IWatcher)sManager.InitServiceInstance(ServiceLists.AGENT_BACKGROUND_DOWN.DLL, ServiceLists.AGENT_BACKGROUND_DOWN.BACKGROUND_DOWN_MAIN);
cBackgroundDown.Stop();
#endregion 03 - 백그라운드 다운로드 데몬 종료
#region 04 - 고객화면 동영상 재생기 종료
// 고객화면 동영상 재생기 종료
DualPlayStartNkill(false);
#endregion 04 - 고객화면 동영상 재생기 종료
#region 05 - 넥사크로 설치 파일 백업
// 종료시 넥사크로 설치 파일 백업
NexacroSetupEngine(false);
#endregion 05 - 넥사크로 설치 파일 백업
#region 06 - KPS 데몬 종료
// KPS 데몬 종료 (선불 또는 메인 일때)
if (PosMstManager.GetPosOption(POS_OPTION.OPT506) == "1")
{
// Mod, 2017.04.10, 메인/주문 POS 모두 KPS 기동
//if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT ||
// (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS))
//{
// IKPSMain cKPSMain = (IKPSMain)sManager.InitServiceInstance(ServiceLists.AGENT_KPS.DLL, ServiceLists.AGENT_KPS.KPS_MAIN);
// cKPSMain.StopKPS();
//}
IKPSMain cKPSMain = (IKPSMain)sManager.InitServiceInstance(ServiceLists.AGENT_KPS.DLL, ServiceLists.AGENT_KPS.KPS_MAIN);
cKPSMain.StopKPS();
}
#endregion 06 - KPS 데몬 종료
#region 07 - KDS 데몬 종료
// KDS 데몬 종료
if (PosMstManager.GetPosOption(POS_OPTION.OPT027) == "1" || PosMstManager.GetPosOption(POS_OPTION.OPT507) == "1")
{
// Mod, 2017.04.26, 메인/주문 POS 모두 KDS 기동
//if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT ||
// (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS))
//{
// IWatcher cKDSMain = (IWatcher)sManager.InitServiceInstance(ServiceLists.AGENT_KDS.DLL, ServiceLists.AGENT_KDS.KDS_MAIN);
// cKDSMain.Stop();
//}
IWatcher cKDSMain = (IWatcher)sManager.InitServiceInstance(ServiceLists.AGENT_KDS.DLL, ServiceLists.AGENT_KDS.KDS_MAIN);
cKDSMain.Stop();
}
#endregion 07 - KDS 데몬 종료
#region 08 - 저울-라벨프린터 데몬 종료
// 저울-라벨프린터 데몬 종료
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR && m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.BR)
{
if (m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS)
{
if (m_cDevStatus.Scale.UseYn == true)
{
IMeasuring cMeasuringMain = (IMeasuring)sManager.InitServiceInstance(ServiceLists.AGENT_MEASURING.DLL, ServiceLists.AGENT_MEASURING.MEASURING_MAIN);
cMeasuringMain.StopMeasuring();
}
}
}
#endregion 08 - 저울-라벨프린터 데몬 종료
#region 09 - 외부 I/F 데몬 종료
// 외부 인터페이스 데몬 종료
if (m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_01
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_02
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_03
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_04
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_05
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_06
|| m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_SIN_01
)
{
if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT ||
(m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS))
{
lTranInterfaceOutside cTranInterfaceOutside = (lTranInterfaceOutside)sManager.InitServiceInstance(ServiceLists.AGENT_TranInterfaceOutside.DLL, ServiceLists.AGENT_TranInterfaceOutside.TIFO_MAIN);
cTranInterfaceOutside.Stop();
}
}
#endregion 09 - 외부 I/F 데몬 종료
#region 10 - 시리얼 변환 프로그램 - 종료
// POS 프로그램 종료 시 O2MSR 종료 안 함.조성완C 요청(2017.07.03)
//SerialMsrToEmul("3");
#endregion
#region 11 - KAC(공항공사) Agent 종료
KACAgentStartNKill(false);
#endregion 11 - KAC(공항공사) Agent 종료
#region 12 - 중국 위쳇페인 데몬 종료
// 중국 위쳇페인 데몬 기동(2017.06.05)
WeChatPayApprDeamon(true);
#endregion
#region 13 - Printer 데몬 종료
if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232)
{
IPosPrinterUs cPrinterDaemon = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
cPrinterDaemon.StopPrinterDaemon();
}
#endregion 13 - Printer 데몬 종료
//#20170918 기념일 배송 출력 start
#region 14 - 기념일 배송 출력 종료
PbillDemonRun();
#endregion 14 - 기념일 배송 출력 종료
//#20170918 기념일 배송 출력 end
//20180611 프린터 미출력 개선 02Printer.exe start
//변경
#if (PRT_O2PRINTER)
#region 15 - O2Printer.exe 종료
RunO2Printer(false);
#endregion 15 - O2Printer.exe 종료
#endif
//20180611 프린터 미출력 개선 02Printer.exe end
// 화면해상도 800으로 원복
if (m_bChangeDisplay == true) ChangeDisplayRate(800);
#region 프로그램종료/재시작/시스템종료 처리
File.Delete(BaseCom.NxBinPath + "PosMain.txt");
try
{
// POS 시작 프로그램 강제 종료
Process[] arPosPgm = Process.GetProcessesByName("PosStart");
foreach (Process pPosPgm in arPosPgm)
{
pPosPgm.Kill();
Thread.Sleep(1000);
}
}
catch { }
// 프로그램 종료 처리
if (m_cPosStatus.Sale.SysShutDown == PosConst.SYS_SHUTDOWN.POWEROFF)
{
CmUtil.SystemShutDown();
}
else if (m_cPosStatus.Sale.SysShutDown == PosConst.SYS_SHUTDOWN.REBOOT)
{
CmUtil.SystemReboot();
}
else
{
CmUtil.FileMove("PosStart.exe", BaseCom.NxRootPath + @"DOWN\PGM\BIN\", BaseCom.NxRootPath + @"BIN\", "");
if (m_cPosStatus.Sale.SysShutDown == PosConst.SYS_SHUTDOWN.PGMRESTART)
{
// POS 재시작 프로그램 실행
Process.Start("PosStart.exe", "RESTART");
}
//else
//{
// // POS 프로그램 종료
// Process.Start("PosStart.exe", "EXIT");
//}
}
//DualPlayStartNkill(false);
#endregion
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
#endregion
#region 프로그램 기동 처리 기능 함수
///
/// 프로그램 업데이트
///
///
private string PosPgmUpdate()
{
string sRet = UserCom.RST_ERR;
try
{
// 서버 시간 동기화
SetServerSysDateTime();
// PGM 다운로드
sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_PGM_DOWNLOAD, PosKey.MENU_KEY.PGM_DOWNLOAD, "A" });
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// POS SPEC 전송
///
private void SendPosSpec()
{
try
{
IServiceUs m_cPosSpec = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_ADMIN.DLL, ServiceLists.BSV_ADMIN.POS_SPEC);
m_cPosSpec.Execute(new string[] { });
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 서버 시간 동기화
///
private void SetServerSysDateTime()
{
try
{
// 서버 시간 동기화
ISvr2Tran m_cSvr2Tran = (ISvr2Tran)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SVR2TRAN);
string sRet = m_cSvr2Tran.ServerSysDateTime();
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 시스템 오픈일자 조회 (전환정보조회)
///
///
/// 조회실패 시 설치시 입력된 오픈일자로 판단
///
private void GetSysOpenDate()
{
try
{
IDataCommonUs dataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
Hashtable htSendData = new Hashtable();
Hashtable htRecvData = new Hashtable();
htSendData.Add(Column.IQ_INSTALL_SCHEDULE_INQ.DATA.INQ_TYPE, Column.IQ_INSTALL_SCHEDULE_INQ.MSG_ID);
htSendData.Add(Column.IQ_INSTALL_SCHEDULE_INQ.DATA.STOR_CD, m_cPosStatus.Base.StoreNo);
htSendData.Add(Column.IQ_INSTALL_SCHEDULE_INQ.DATA.REQ_TYPE, "2");
htSendData.Add(Column.IQ_INSTALL_SCHEDULE_INQ.DATA.INSTALL_DATE, "");
htSendData.Add(Column.IQ_INSTALL_SCHEDULE_INQ.DATA.INSTALL_TIME, "");
htSendData.Add(Column.IQ_INSTALL_SCHEDULE_INQ.DATA.SYS_OPEN_DATE, "");
htSendData.Add(Column.IQ_INSTALL_SCHEDULE_INQ.DATA.RES_CD, "");
string ret = UserCom.RST_ERR;
for (var i = 0; i < 3; i++)
{
ret = dataCommon.ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.BizInqPort, 5000, htSendData, ref htRecvData, false);
if (ret == UserCom.RST_OK)
{
// RES_CD 00 : 정상
// 01 : NoData, 스캐쥴정보가 없을 때, SYS_OPEN_DATE에 값이 없을 때.
// 02 : 전환완료일자 업데이트 실패
if (htRecvData[Column.IQ_INSTALL_SCHEDULE_INQ.DATA.RES_CD].ToString().Trim() == "02")
{
// 혹시 몰라서 재시도해본다.
Thread.Sleep(300);
continue;
}
break;
}
}
if (ret == UserCom.RST_OK)
{
var resCode = htRecvData[Column.IQ_INSTALL_SCHEDULE_INQ.DATA.RES_CD].ToString().Trim();
if (resCode == "00" || resCode == "02")
{
m_cPosStatus.Base.SysOpenDate = htRecvData[Column.IQ_INSTALL_SCHEDULE_INQ.DATA.SYS_OPEN_DATE].ToString().Trim();
}
else if (resCode == "01")
{
m_cPosStatus.Base.SysOpenDate = "99991231";
}
// PosSaleInfo.ini 저장
IServiceUs cSaveConfigInfo = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO);
cSaveConfigInfo.Execute(new string[] { PosConst.INI_FILE_NAME.PosSaleInfo });
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 교통카드 운영정보 다운로드
///
///
private void TMoneyDownLoad(string sCardType, ref byte[] rep_array)
{
string sPayDCGrpCD = "";
string sPayDcCd = "";
string sRet = UserCom.RST_ERR;
//byte[] rep_array = new byte[2049];
try
{
// 구분 T:TMoney, E:CashBee
ISignPadUs m_cDeviceSignPad = (ISignPadUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SIGNPAD);
sPayDCGrpCD = ItemConst.TR_ITEM_ID.MOBILECASH_ITEM;
sPayDcCd = ItemConst.TR_ITEM_ID.MOBILECASH.T_MONEY;
if (sCardType == "E")
sPayDcCd = ItemConst.TR_ITEM_ID.MOBILECASH.CASHBEE;
string sApprID = PosMstManager.GetMstVan(sPayDCGrpCD, sPayDcCd, PosMst.MST_VAN.DATA.APPR_ID);
string sBizNm = PosMstManager.GetMstVan(sPayDCGrpCD, sPayDcCd, PosMst.MST_VAN.DATA.CMP_APPR_ID);
string sDownType = "00";
sRet = m_cDeviceSignPad.TMoneyDownload(sApprID, sBizNm, m_cPosStatus.Base.MsgSeqNo, sCardType, sDownType, ref rep_array);
if (sRet != UserCom.RST_OK)
{
if (sCardType == "T") WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0393);
if (sCardType == "E") WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0394);
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 룰파일 다운로드
///
private void RuleFileDownLoad()
{
try
{
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR)
{
// 룰파일 다운로드
IVanCommonUs cVanSpcn = (IVanCommonUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.VANSPCNCOMMON);
string sRet = cVanSpcn.RuleFileDownLoad(new string[] { });
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
private string GetAppSetting(string strKey, string sDefault)
{
string strValue = "";
try
{
strValue = System.Configuration.ConfigurationManager.AppSettings[strKey];
}
catch { }
if (strValue == null || strValue == "") strValue = sDefault;
return strValue;
}
private void ShowTaskBar(bool bShow)
{
try
{
IntPtr nHWnd = FindWindow("Shell_traywnd", "");
if (bShow == true)
{
SetWindowPos((int)nHWnd, 0, 0, 0, 0, 0, SWP_SHOWWINDOW);
}
else
{
SetWindowPos((int)nHWnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW);
}
}
catch { }
}
///
/// IC 리더 콜백 함수 가능 설정
///
private void IcReaderSettingDevice(bool bEnabled)
{
try
{
IICReaderUs cDeviceICReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER);
cDeviceICReader.IcReaderSettingDevice(bEnabled);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region 서명패드 체크
//private bool SignPadFileUpdate()
//{
// bool bRet = false;
// int nUpdateCnt = 0;
// try
// {
// // 업데이트 가능 건수 확인
// //nUpdateCnt = m_SignPadUpdate.SignPadUpdateCnt();
// if (nUpdateCnt > 0)
// {
// bRet = true;
// }
// }
// catch (Exception ex)
// {
// WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
// }
// return bRet;
//}
#endregion
#region 화면해상도 및 Exploer 화면 배율 설정
///
/// 화면 해상도 강제변경
///
private void ChangeDisplayRate(int nRate)
{
string sDeviceName = "";
bool result = true;
try
{
DISPLAY_DEVICE d = new DISPLAY_DEVICE(0);
int devNum = 0;
do
{
result = EnumDisplayDevices(IntPtr.Zero, devNum, ref d, 0);
if (result)
{
string item = devNum.ToString() + ". " + d.DeviceString.Trim();
if ((d.StateFlags & 4) != 0)
{
sDeviceName = d.DeviceName.Trim();
break;
}
}
devNum++;
} while (result);
if (sDeviceName == "") return;
DEVMODE devMode = new DEVMODE();
int modeNum = 0;
do
{
result = EnumDisplaySettings(sDeviceName, modeNum, ref devMode);
if (result)
{
if (nRate == 1024)
{
// 1024*768 32Bit 60Hz
if (devMode.dmPelsWidth.ToString() == "1024" && devMode.dmPelsHeight.ToString() == "768" && devMode.dmBitsPerPel.ToString() == "32" && devMode.dmDisplayFrequency.ToString() == "60")
{
devMode.dmDisplayOrientation = DMDO_DEFAULT;
devMode.dmDisplayFixedOutput = DMDFO_STRETCH;
ChangeDisplaySettings(ref devMode, CDS_UPDATEREGISTRY | CDS_FULLSCREEN); // 해상도 변경 처리
ChangeExplorerRate(125); // IE 화면 배율 설정
m_cPosStatus.Sale.ScreenSizeUser = 1024;
//if (devMode.dmDefaultSource.ToString() == "1") break;
break;
}
}
else if (nRate == 800)
{
// 800*600 32Bit 60Hz
if (devMode.dmPelsWidth.ToString() == "800" && devMode.dmPelsHeight.ToString() == "600" && devMode.dmBitsPerPel.ToString() == "32" && devMode.dmDisplayFrequency.ToString() == "60")
{
devMode.dmDisplayOrientation = DMDO_DEFAULT;
devMode.dmDisplayFixedOutput = DMDFO_STRETCH;
ChangeDisplaySettings(ref devMode, CDS_UPDATEREGISTRY | CDS_FULLSCREEN); // 해상도 변경 처리
ChangeExplorerRate(100); // IE 화면 배율 설정
//if (devMode.dmDefaultSource.ToString() == "1") break;
break;
}
}
}
modeNum++;
} while (result);
Thread.Sleep(1000);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// Exploer 화면 배율 설정
///
private void ChangeExplorerRate(int nRate)
{
try
{
// IE 화면 배율 설정
RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Zoom\", RegistryKeyPermissionCheck.ReadWriteSubTree);
if (regKey == null) return;
regKey.SetValue("ResetTextSizeOnStartup", 0x00000000, RegistryValueKind.DWord);
regKey.SetValue("ResetZoomOnStartup2", 0x00000000, RegistryValueKind.DWord);
regKey.SetValue("ResetTextSizeOnZoom", 0x00000001, RegistryValueKind.DWord);
if (nRate == 75)
{
// 75%
regKey.SetValue("ZoomFactor", 0x00012df8, RegistryValueKind.DWord);
}
else if (nRate == 100)
{
// 100%
regKey.SetValue("ZoomFactor", 0x000186a0, RegistryValueKind.DWord);
}
else if (nRate == 125)
{
// 125%
regKey.SetValue("ZoomFactor", 0x0001e848, RegistryValueKind.DWord);
}
else if (nRate == 150)
{
// 150%
regKey.SetValue("ZoomFactor", 0x000249f0, RegistryValueKind.DWord);
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region 긴급 프로그램 여러번 재부팅 실행 막기
///
/// 긴급 프로그램 여러번 재부팅 실행 막기
///
private void SetEmgProgramUpdate()
{
try
{
// 다중 긴급 프로그램 배포가 내려올때 여러번 재부팅되기 때문에 재 가동시
// 긴급공지 메세지를 강제 업데이트 처리함 2017-03-21
IDataServiceUs m_cPosNoticeCom = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.POS_NOTICE_COM);
if (m_cPosNoticeCom != null)
m_cPosNoticeCom.SetData("");
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region ZookAgentSetup 설치
///
/// ZookAgentSetup 설치(원격 프로그램)
///
private void ZookAgentSetup()
{
try
{
string sSetupFile = BaseCom.NxBinPath + "ZOOKAppAgentSetup.exe"; // 원본파일
if (m_cPosStatus.Base.BrandDiv != "" && m_cPosStatus.Base.StoreNo != "" && m_cPosStatus.Base.PosNo != "")
{
//실행시 있으면 실행
if (CmUtil.Exists(sSetupFile) == true)
{
CmUtil.ExecuteProcess(sSetupFile, "");
}
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return;
}
#endregion ZookAgentSetup
#region 중국 알리페이/위챗페이 승인 데몬 기동 및 중지
///
/// 중국 알리페이/위챗페이 승인 데몬 기동 및 중지
///
///
///
private string WeChatPayApprDeamon(bool bClose)
{
string sRet = UserCom.RST_ERR;
Process[] arPgm = null;
try
{
// 중국
if (m_cPosStatus.Mst.CntryDiv != ItemConst.CNTRY_DIV.CN) return UserCom.RST_OK;
if (bClose == true)
{
// 승인 데몬 종료
arPgm = Process.GetProcessesByName("fmclient");
foreach (Process pPgm in arPgm)
{
pPgm.Kill();
}
}
else
{
// 승인 데몬 조회
arPgm = Process.GetProcessesByName("fmclient");
foreach (Process pPgm in arPgm)
{
return UserCom.RST_OK;
}
// 승인 데몬 실행
ProcessStartInfo startInfo = new ProcessStartInfo(Directory.GetCurrentDirectory().ToString() + @"\fmclient.exe");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.CreateNoWindow = false;
Process.Start(startInfo);
}
return UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
//#20170918 기념일 배송 출력 start
#region 기념일 배송 출력 PBILL 종료
private string PbillDemonRun()
{
string sRet = UserCom.RST_ERR;
Process[] arPgm = null;
Process[] arPgm2 = null;
try
{
// PBILL 종료 시
// WBP 실행 중이면 종료하지 않고
// 구포스 EXE 폴더에 PBILL 파일이 존재하지 않으면
// 종료한다.
//#20180511 기념일배송시 구포스 PBILL 실행되는 증상 수정 start
//주석처리
arPgm2 = Process.GetProcessesByName("WBP");
foreach (Process pPgm in arPgm2)
{
return UserCom.RST_OK;
}
//#20180511 기념일배송시 구포스 PBILL 실행되는 증상 수정 end
/*
//구포스와 동시 사용 매장은 아니지만
//구포스가 설치되어 있으면 종료가 안되므로 주석처리.
if ((File.Exists("C:\\SPCPOS\\EXE\\PBILL.exe") == true) && ((m_cPosStatus.Base.CmpCd == "PCKR")))
{
return UserCom.RST_OK;
}
else if ((File.Exists("C:\\SLPOS\\EXE\\PBILL.exe") == true) && ((m_cPosStatus.Base.CmpCd == "SLKR")))
{
return UserCom.RST_OK;
}
*/
// PBILL 데몬 종료
arPgm = Process.GetProcessesByName("PBILL");
foreach (Process pPgm in arPgm)
{
pPgm.Kill();
}
return UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
//#20170918 기념일 배송 출력 end
//#20180223 인천공항T2 사용인 경우 O2IAIRPORT.exe 실행 start
#region O2IAIRPORT.exe 실행
/*
private bool RunO2IAIRPORT()
{
try
{
string sO2IAIRPORTFile = BaseCom.NxBinPath + "O2IAIRPORT.exe";
var isUPExist = CmUtil.Exists(sO2IAIRPORTFile);
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
isUPExist ? "O2IAIRPORT.exe [Exist]" : "O2IAIRPORT.exe [None]");
//실행시 있으면 실행
if (isUPExist == true)
{
CmUtil.ExecuteProcess(sO2IAIRPORTFile, "");
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
return false;
}
return true;
}
*/
#endregion O2IAIRPORT.exe 실행
//#20180223 인천공항T2 사용인 경우 O2IAIRPORT.exe 실행 end
//20180611 프린터 미출력 개선 02Printer.exe start
//변경
#if (PRT_O2PRINTER)
#region O2Printer.exe 실행, 종료
private bool RunO2Printer(bool bStart)
{
try
{
string sO2PrinterFile = BaseCom.NxBinPath + "O2Printer.exe";
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("O2Printer");
if (p.GetLength(0) > 0)
{
p[0].Kill();
//if (bReStart == true) Thread.Sleep(1000);
}
if (bStart == true)
{
var isUPExist = CmUtil.Exists(sO2PrinterFile);
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
isUPExist ? "O2Printer.exe [Exist]" : "O2Printer.exe [None]");
//실행시 있으면 실행
if (File.Exists(sO2PrinterFile) == true)
{
System.Diagnostics.Process.Start(sO2PrinterFile);
}
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
return false;
}
return true;
}
#endregion O2Printer.exe 실행, 종료
#endif
//20180611 프린터 미출력 개선 02Printer.exe end
//#20180711 O2SKIOSK_UPDATE.exe 실행 start
#region O2SKIOSK_UPDATE.exe 실행
private bool RunO2SKIOSK_UPDATE()
{
try
{
string sO2KIOSKUPDATEFile = BaseCom.NxBinPath + "O2SKIOSK_UPDATE.EXE";
string sO2KIOSKNEWFile = BaseCom.NxBinPath + "O2skiosk_new.exe";
var isUPExist = CmUtil.Exists(sO2KIOSKUPDATEFile);
var isNEWExist = CmUtil.Exists(sO2KIOSKNEWFile);
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
isUPExist ? "O2SKIOSK_UPDATE.exe [Exist]" : "O2SKIOSK_UPDATE.exe [None]");
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
isNEWExist ? "O2skiosk_new.exe [Exist]" : "O2skiosk_new.exe [None]");
//실행시 있으면 실행
if ((isUPExist == true) && (isNEWExist == true))
{
CmUtil.ExecuteProcess(sO2KIOSKUPDATEFile, "");
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
return false;
}
return true;
}
#endregion O2SKIOSK_UPDATE.exe 실행
//#20180711 O2SKIOSK_UPDATE.exe 실행 end
//20180718 O2SKIOSK.EXE start
//변경
#region O2SKIOSK.EXE 실행
private bool RunO2SKIOSK(bool bStart)
{
try
{
string sO2SKIOSKFile = BaseCom.NxBinPath + "O2SKIOSK.exe";
if (bStart == true)
{
//실행 중이라면 건너뜀
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("O2SKIOSK");
if (p.GetLength(0) > 0)
{
return true;
}
var isUPExist = CmUtil.Exists(sO2SKIOSKFile);
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
isUPExist ? "O2SKIOSK.exe [Exist]" : "O2SKIOSK.exe [None]");
//파일이 있으면 실행
if (isUPExist == true)
{
System.Diagnostics.Process.Start(sO2SKIOSKFile);
}
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
return false;
}
return true;
}
#endregion O2SKIOSK.EXE 실행
//20180718 O2SKIOSK.EXE start
}
}