//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 } }