/// <summary> /// Used to print over the voucher image /// </summary> /// <returns></returns> public static VoucherProcessDelegate CreatePrintOnImageDelegate() { var method = new VoucherProcessDelegate((Voucher data, StateObj state) => { var printLocation = SettingsTable.Get <Point>(Strings.VScan_PrintAreaLocation, Point.Empty); if (printLocation == Point.Empty) { var ex = new ApplicationException("Cannot find 'print on image' configuration."); ex.AddNext(new MethodInvoker(() => { string id = Strings.VScan_EditItem.Uniqueue(); data.Message = ex.Message; DataSlot.Set(id, data); WinMsg.SendText(state.Scan, state.Main, id); })); throw ex; } var aliases = new Hashtable(StringComparer.InvariantCultureIgnoreCase); aliases["[DATE]"] = new Func <string>(() => DateTime.Now.ToString()); aliases["[OPERATOR]"] = new Func <string>(() => SettingsTable.Get <UserAuth>(Strings.Transferring_AuthObject, UserAuth.Default).Name); aliases["[PCNAME]"] = new Func <string>(() => PTFUtils.GetMachine()); aliases["[SITEID]"] = new Func <string>(() => data.SiteCode); aliases["[NUMBER]"] = new Func <string>(() => Convert.ToString(SettingsTable.Get <int>(Strings.VScan_ScanCount, 0))); string voucherTemplate = SettingsTable.Get <string>(Strings.VScan_ImPrinterTemplate, Strings.VScan_ImPrinterTemplateDefault); string voucherText = voucherTemplate.format(aliases); using (var g = Graphics.FromImage(data.VoucherImage)) g.DrawString(voucherText, SystemFonts.CaptionFont, Brushes.Red, printLocation); }); return(method); }
public static void Stop() { if (ms_This != IntPtr.Zero) { WinMsg.SendText(ms_This, Strings.VScan_SinglentonFormClose); } }
/// <summary> /// Used to find and cover the cardcode by using the barcode location /// </summary> /// <returns></returns> public static VoucherProcessDelegate CreateHideCardDetailsDelegateByBarcode() { var method = new VoucherProcessDelegate((Voucher data, StateObj state) => { var distanceToHiddenArea = SettingsTable.Get <Point>(Strings.VScan_DistanceFromBarcodeBottomLeftToHiddenArea, Point.Empty); if (distanceToHiddenArea == Point.Empty) { var ex = new ApplicationException("Cannot find chunk configuration."); ex.AddNext(new MethodInvoker(() => { string id = Strings.VScan_EditItem.Uniqueue(); data.Message = ex.Message; DataSlot.Set(id, data); WinMsg.SendText(state.Scan, state.Main, id); })); throw ex; } Size hideAreaSize = SettingsTable.Get <Size>(Strings.VScan_HiddenAreaSize, Size.Empty); Point hiddenAreaLocation = new Point(data.BarCodeArea.Left, data.BarCodeArea.Bottom); hiddenAreaLocation.Offset(distanceToHiddenArea); Rectangle hiddenArea = new Rectangle(hiddenAreaLocation, hideAreaSize); var hiddenAreaDraw = SettingsTable.Get <HiddenAreaDrawingCfg>(Strings.VScan_HiddenAreaDrawingCfg, HiddenAreaDrawingCfg.Default); using (var g = Graphics.FromImage(data.VoucherImage)) g.FillRectangleHatch(hiddenArea, hiddenAreaDraw.ForeColor, hiddenAreaDraw.BackColor, hiddenAreaDraw.Style); }); return(method); }
public static void Stop() { if (ms_This != IntPtr.Zero) { WinMsg.SendText(ms_This, Strings.VScan_DesktopUnlock); } }
protected override void WndProc(ref Message m) { switch (m.Msg) { case user32.WM_COPYDATA: { string text = WinMsg.ReceiveText(m.LParam); if (text.CompareNoCase(Strings.VScan_DesktopUnlock)) { DialogResult = DialogResult.OK; if (Unlocked != null) { Unlocked(this, EventArgs.Empty); } ms_Thread = null; ms_This = IntPtr.Zero; Application.ExitThread(); } else { Message = text; Invalidate(); } } break; default: base.WndProc(ref m); break; } }
private void dealWinMsg(WindowsBase topWin, WinMsg msg) { switch (msg) { case WinMsg.Show: topWin.OnShow(); topWin.CanvasGroup.interactable = true; topWin.OnResume(); break; case WinMsg.Hide: topWin.CanvasGroup.interactable = false; topWin.OnPause(); topWin.OnHide(); break; case WinMsg.Pause: topWin.CanvasGroup.interactable = false; topWin.OnPause(); break; case WinMsg.Resume: topWin.CanvasGroup.interactable = true; topWin.OnResume(); break; case WinMsg.Destroy: topWin.OnDestroy(); break; } }
/// <summary> /// Used to find and cover the card code by a mark on the voucher image /// </summary> /// <returns></returns> public static VoucherProcessDelegate CreateHideCardDetailsDelegateByMark() { var method = new VoucherProcessDelegate((Voucher data, StateObj state) => { var markArea = SettingsTable.Get <MarkAreaCfg>(Strings.VScan_MarkAreaConfiguration, MarkAreaCfg.Empty); if (markArea.Equals(MarkAreaCfg.Empty)) { var ex = new ApplicationException("Cannot find 'hide area' configuration."); ex.AddNext(new MethodInvoker(() => { string id = Strings.VScan_EditItem.Uniqueue(); data.Message = ex.Message; DataSlot.Set(id, data); WinMsg.SendText(state.Scan, state.Main, id); })); throw ex; } Rectangle hiddenArea; using (var bmp2 = data.VoucherImage.ToBlackWhite(markArea.BlackWhiteThreshold)) hiddenArea = bmp2.FindRectangle(Point.Empty, markArea.BackColor, markArea.MinAreaSize, markArea.MaxAreaSize, markArea.Threshold); var hiddenAreaDraw = SettingsTable.Get <HiddenAreaDrawingCfg>(Strings.VScan_DistanceFromBarcodeBottomLeftToHiddenArea, HiddenAreaDrawingCfg.Default); using (var g = Graphics.FromImage(data.VoucherImage)) g.FillRectangleHatch(hiddenArea, hiddenAreaDraw.ForeColor, hiddenAreaDraw.BackColor, hiddenAreaDraw.Style); }); return(method); }
/// <summary> /// Shows image on monitor if its open /// </summary> /// <param name="name"></param> public static void ShowImage(string name) { if (ms_This != IntPtr.Zero) { WinMsg.SendText(ms_This, name); } }
/// <summary> /// 设置鼠标的位置 /// </summary> /// <param name="x">x坐标</param> /// <param name="y">y坐标</param> /// <param name="msg">操作内容</param> public int MouseHandle(WinMsg msg, int x, int y) { if (!this) { return(-1); } return(WindowHelp.MouseHandle(IntPtr, msg, x, y)); }
public void PostMessage(WinMsg msg, int wParam = 0, int lParam = 0) { if (!this) { return; } WindowHelp.PostMessage(IntPtr, msg, wParam, lParam); }
public static void SendWindowMessage(string winName, string metho, object param) { WinMsg wm = new WinMsg(); wm.winName = winName; wm.metho = metho; wm.param = param; EventMgr.single.SendEvent("Window", wm); }
public void ShowMsg(string msg, int type) { var winMsg = new WinMsg(msg, type) { Owner = this, Topmost = true }; winMsg.Show(); }
/// <summary> /// Used to insert voucher data to the database /// </summary> /// <returns></returns> public static VoucherProcessDelegate CreateInsertVoucherDelegate() { var method = new VoucherProcessDelegate((Voucher data, StateObj state) => { Debug.Assert(state.Dib != IntPtr.Zero); Debug.Assert(state.Main != IntPtr.Zero); Debug.Assert(state.Scan != IntPtr.Zero); Debug.Assert(data != null); try { data.Validate(); ClientDataAccess.UpdateFileAsync((DbClientVoucher)data, new EventHandler((o, e) => { string fileName = Path.ChangeExtension( string.Format("{0}{1}", PTFUtils.GetMachine(), DateTime.Now).ReplaceAll(new char[] { '.', '/', '\\', '-' }, '_'), ".xml"); //Data has been saved successfully. Show message string id = string.Concat(Strings.VScan_ItemSaved, fileName); DataSlot.Set(id, data); WinMsg.SendText(state.Main, id); }), new ThreadExceptionEventHandler((o, e) => { //Data has failed to save. var ex = new ApplicationException("Can't insert: ".concat(e.Exception.Message), e.Exception); ex.AddNext(new MethodInvoker(() => { string id = Strings.VScan_EditItem.Uniqueue(); data.Message = ex.Message; DataSlot.Set(id, data); WinMsg.SendText(state.Scan, state.Main, id); })); throw ex; })); } catch (Exception e) { var ex = new ApplicationException("Err: ".concat(e.Message), e); ex.AddNext(new MethodInvoker(() => { string id = Strings.VScan_EditItem.Uniqueue(); data.Message = ex.Message; DataSlot.Set(id, data); WinMsg.SendText(state.Main, id); })); throw ex; } }); return(method); }
/// <summary> /// Send data to UI editor directly /// </summary> /// <returns></returns> public static VoucherProcessDelegate CreateSendToUIDelagete() { var method = new VoucherProcessDelegate((Voucher data, StateObj state) => { string id = Strings.VScan_EditItem.Uniqueue(); data.Message = "Insert data to db is switched off"; DataSlot.Set(id, data); WinMsg.SendText(state.Scan, state.Main, id); }); return(method); }
public bool PreFilterMessage(ref Message m) { TwainCommand cmd = m_twain.PassMessage(ref m); if (cmd == TwainCommand.Not) { return(false); } switch (cmd) { case TwainCommand.TransferReady: { bool status = m_twain.TransferPictures(VoucherData); if (status) { AcquireVoucher(true); } else { m_twain.CloseDS(); m_twain.CloseDSM(); Close(); } break; } case TwainCommand.CloseRequest: { m_twain.CloseDS(); m_twain.CloseDSM(); Close(); break; } case TwainCommand.CloseOk: { WinMsg.SendText(m_MainFormHandler, Strings.VScan_ScanIsDoneEvent); Close(); break; } case TwainCommand.DeviceEvent: break; default: break; } return(true); }
public void PopWindow(WinMsg msg) { if (winStack.Count > 0) { GameObject.Destroy(winStack.Last().gameObject); winStack.RemoveAt(winStack.Count - 1); if (winStack.Count > 0) { dealWinMsg(winStack.Last(), msg); } } else { throw new System.Exception("Winstack is empty!"); } }
public void PopWindow(WinMsg msg) { WindowsBase topWin; if (winStack.TryPop(out topWin)) { GameObject.Destroy(topWin.gameObject); if (winStack.TryPeek(out topWin)) { dealWinMsg(topWin, msg); } } else { throw new System.Exception("Winstack is empty!"); } }
public WindowsBase PushWindow(WindowType type, WinMsg msg, Vector3 initPos = default(Vector3), params object[] parameters) { var go = WindowFactory.Instance.CreateWindows(type); go.name = type.ToString(); go.transform.position = initPos; var win = go.GetComponent <WindowsBase>(); win.Parameters = parameters; WindowsBase topWin; if (winStack.TryPeek(out topWin)) { win.Canvas.sortingOrder = topWin.Canvas.sortingOrder + 1; dealWinMsg(topWin, msg); } winStack.Push(win); return(win); }
public WindowsBase PushWindow(WindowType type, WinMsg msg, int sortLayer = -1, Vector3 initPos = default(Vector3), params object[] parameters) { var guid = System.Guid.NewGuid(); TimeScope.Start(guid, "push window " + type.ToString()); var go = WindowFactory.Instance.CreateWindows(type); TimeScope.Stop(guid); go.name = type.ToString(); go.transform.position = initPos; var win = go.GetComponent <WindowsBase>(); win.Parameters = parameters; if (winStack.Count > 0) { dealWinMsg(winStack.Last(), msg); if (sortLayer == -1) { if (win.Canvas.sortingOrder == 0) { win.Canvas.sortingOrder = winStack.Last().Canvas.sortingOrder + 1; } } else { win.Canvas.sortingOrder = sortLayer; } } winStack.Add(win); winStack.Sort((w1, w2) => { if (w1.Canvas.sortingOrder < w2.Canvas.sortingOrder) { return(-1); } else if (w1.Canvas.sortingOrder >= w2.Canvas.sortingOrder) { return(1); } return(0); }); return(win); }
protected override void WndProc(ref Message m) { switch (m.Msg) { case user32.WM_COPYDATA: { IntPtr sender; string text = WinMsg.ReceiveText(m.LParam, out sender); if (text.CompareNoCase(Strings.VScan_StopTheScanner)) { Close(); } } break; default: base.WndProc(ref m); break; } }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); if (!SingleInstance.IsNewInstance(InstanceId)) { WinMsg.BroadcastMessage(ShowWpfUiMsg); Shutdown(); return; } WinMsg.RegisterReciveMessage(ShowWpfUiMsg, () => { this.MainWindow.Show(); }); Log.LogLocation = true; Log.ListenSystemDiagnosticsLog(); Clipboards.Instance.IsListenning = true; this.MainWindow = new MainWindow(); this.MainWindow.Show(); this.ShutdownMode = ShutdownMode.OnMainWindowClose; }
void OnWindowMessage(EventMgr.EventData eb) { WinMsg wm = eb.data as WinMsg; if (wm.winName == null) { //广播 foreach (Window item in mWindows.Values) { item.OnWindowMessage(wm.metho, wm.param); } } else { Window w = GetWindow(wm.winName, false); if (w == null) { return; } w.OnWindowMessage(wm.metho, wm.param); } }
protected override void WndProc(ref Message m) { switch (m.Msg) { case user32.WM_COPYDATA: { string text = WinMsg.ReceiveText(m.LParam); if (text.CompareNoCase(Strings.VScan_SinglentonFormClose)) { DialogResult = DialogResult.OK; OnClosed(EventArgs.Empty); Application.ExitThread(); } } break; default: base.WndProc(ref m); break; } }
protected override void WndProc(ref Message m) { switch (m.Msg) { case user32.WM_COPYDATA: { string text = WinMsg.ReceiveText(m.LParam); if (text.CompareNoCase(Strings.VScan_SinglentonFormClose)) { DialogResult = DialogResult.OK; OnClosed(EventArgs.Empty); Application.ExitThread(); } else if (text.StartsWith(Strings.VScan_EditItem)) { var data = DataSlot.Get <Voucher>(text); Debug.Assert(data != null); MoveImage((Bitmap)data.VoucherImage.Clone()); DataSlot.Free(text); } else if (text.StartsWith(Strings.VScan_ItemSaved)) { var data = DataSlot.Get <Voucher>(text); Debug.Assert(data != null); MoveImage((Bitmap)data.VoucherImage.Clone()); DataSlot.Free(text); } if (tsmiShowNumber.Checked) { this.TitleBar.TitleBarCaption = "Voucher monitor ".concat(SettingsTable.Get <int>(Strings.VScan_ScanCount, 0)); } } break; default: base.WndProc(ref m); break; } }
/// <summary> /// Send a Windows message. /// </summary> /// <param name="win">The target window handler</param> /// <param name="msg">The message code</param> /// <param name="lParam">The message parameter</param> /// <param name="wParam">The second message parameter</param> internal static IntPtr SendTextMessage(IntPtr win, WinMsg msg, [MarshalAs(UnmanagedType.LPStr)] string lParam) { return SendMessage_(win, (int)msg, IntPtr.Zero, lParam); }
public static extern int SendMessage(IntPtr hwnd, WinMsg wMsg, IntPtr wParam, int lParam);
public void sendMsgToWinFunc(WinMsg msg) { if (!valmoWin.flagStartUpOk) return; switch (msg.type) { case WinMsgType.mwLinkPlcOK: { tbMenu.SelectedItem = Menu_Msg; valmoWin.sMainPanelCtrl.cvsMain.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0x78, 0xDD, 0xFF)); lbMsg.Content = "linkPlcOK !"; dtStart = DateTime.Now.Ticks; if (dtMsg.IsEnabled == false && valmoWin.flagStartUpOk) dtMsg.Start(); } break; case WinMsgType.mwLinkPlcError: { tbMenu.SelectedItem = Menu_Msg; valmoWin.sMainPanelCtrl.cvsMain.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0x78, 0xDD, 0xFF)); lbMsg.Content = "linkPlcError !"; } break; case WinMsgType.mwLogInOK: { lbMsg.Content = valmoWin.dv.getCurDis("lanKey035") + valmoWin.dv.users.curUser.name + valmoWin.dv.getCurDis("lanKey1104"); lastUserName = valmoWin.dv.users.curUser.name; tbMenu.SelectedItem = Menu_Msg; valmoWin.sMainPanelCtrl.cvsMain.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0x78, 0xDD, 0xFF)); dtStart = DateTime.Now.Ticks; if (dtMsg.IsEnabled == false && valmoWin.flagStartUpOk) dtMsg.Start(); } break; case WinMsgType.mwLogOut: { lbMsg.Content = valmoWin.dv.getCurDis("lanKey035") + msg.pStr + valmoWin.dv.getCurDis("lanKey1103"); tbMenu.SelectedItem = Menu_Msg; valmoWin.sMainPanelCtrl.cvsMain.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0x78, 0xDD, 0xFF)); dtStart = DateTime.Now.Ticks; if (dtMsg.IsEnabled == false && valmoWin.flagStartUpOk) dtMsg.Start(); } break; case WinMsgType.mwAccessLower: { lbMsg.Content = valmoWin.dv.getCurDis("lanKey1102"); tbMenu.SelectedItem = Menu_Msg; valmoWin.sMainPanelCtrl.cvsMain.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0x78, 0xDD, 0xFF)); dtStart = DateTime.Now.Ticks; if (dtMsg.IsEnabled == false && valmoWin.flagStartUpOk) dtMsg.Start(); } break; case WinMsgType.mwUserNull: { lbMsg.Content = valmoWin.dv.getCurDis("lanKey1100"); tbMenu.SelectedItem = Menu_Msg; valmoWin.sMainPanelCtrl.cvsMain.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0x78, 0xDD, 0xFF)); dtStart = DateTime.Now.Ticks; if (dtMsg.IsEnabled == false && valmoWin.flagStartUpOk) dtMsg.Start(); } break; case WinMsgType.mwJumpHeartErr: { lbMsg.Content = valmoWin.dv.getCurDis("lanKey1101"); tbMenu.SelectedItem = Menu_Msg; valmoWin.sMainPanelCtrl.cvsMain.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0x78, 0xDD, 0xFF)); } break; case WinMsgType.mwMsgSys: { dtStart = DateTime.Now.Ticks; if (dtMsg.IsEnabled == false && valmoWin.flagStartUpOk) dtMsg.Start(); } break; case WinMsgType.mwMsgAlm: { dtMsg.Stop(); } break; case WinMsgType.mwRelink: { curActiveAlmObjLst.Clear(); tbMenu.SelectedItem = Menu_Null; valmoWin.sMainPanelCtrl.cvsMain.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0xF4, 0xF4, 0xF4)); } break; } }
/// <summary> /// post消息到窗口 /// </summary> /// <param name="intPtr"></param> /// <param name="msg"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> public static void PostMessage(IntPtr intPtr, WinMsg msg, int wParam = 1, int lParam = 0) { PostMessage(intPtr, (int)msg, wParam, lParam); }
public static int MouseHandle(IntPtr intPtr, WinMsg wm, int x, int y) { return(SendMessage(intPtr, (int)wm, 0, (uint)GetLParamByPoint(x, y))); }
public void sendMsgToWinFunc(WinMsg msg) { //if (!valmoWin.flagMainWindowInitOk) // return; switch (msg.type) { case WinMsgType.mwLinkPlcOK: { PLCLinkState = true; linkPanel.flagForceClose = false; linkPanel.active = true; linkPanel.Visibility = Visibility.Hidden; linkState = true; recUnit obj = new recUnit("Als000", DateTime.Now, recType.sysType); valmoWin.eventMgr.msgSave(obj); //WinMsg mwMsg = new WinMsg(); //mwMsg.type = WinMsgType.mwMsg; //valmoWin.sendMsgToWinHandle(mwMsg); } break; case WinMsgType.mwLinkPlcError: { PLCLinkState = false; if (!linkPanel.flagForceClose) linkPanel.show(); if (linkState) { linkState = false; recUnit obj = new recUnit("Als001", DateTime.Now, recType.sysType); valmoWin.eventMgr.msgSave(obj); } //WinMsg mwMsg = new WinMsg(); //mwMsg.type = WinMsgType.mwMsg; //valmoWin.sendMsgToWinHandle(mwMsg); } break; case WinMsgType.mwLogInOK: { PLCLinkState = true; //imgUserNull.Opacity = 0; //imgUserOn.Opacity = 1; lbUserName.Content = valmoWin.dv.users.curUser.name; } break; case WinMsgType.mwLogOut: { //imgUserNull.Opacity = 1; //imgUserOn.Opacity = 0; lbUserName.Content = "null"; } break; case WinMsgType.mwPidClear: { } break; case WinMsgType.mwJumpHeartErr: { //imgLineOn.Visibility = Visibility.Hidden; } break; case WinMsgType.mwJumpHeartRetart: { } break; case WinMsgType.mwRelink: { PLCLinkState = true; linkPanel.flagForceClose = false; linkPanel.active = true; recUnit obj = new recUnit("Als000", DateTime.Now, recType.sysType); valmoWin.eventMgr.msgSave(obj); } break; } lstWinMsgCtrl1.sendMsgToWinFunc(msg); }
internal static extern IntPtr SendMessage(IntPtr hwnd, WinMsg msg, ushort wParam, StringBuilder strBuffer);
public void refreshAlmLst(objUnit obj) { for (int i = 0; i < 32; i++) { if (((obj.value >> i) & 0x01) == 1) { bool bIsExist = false; for (int j = 0; j < curActiveAlmObjLst.Count; j++) { if (curActiveAlmObjLst[j].serialNum == obj.bitSers[i]) { bIsExist = true; break; } } if (bIsExist == false) { recUnit ergObj = null; if (obj.objType == objectType.AlmPr) { ergObj = new recUnit(obj.bitSers[i], DateTime.Now, recType.alarmType); curActiveAlmObjLst.Insert(0, ergObj); } else if (obj.objType == objectType.AlmSys) { ergObj = new recUnit(obj.bitSers[i], DateTime.Now, recType.sysType); curActiveAlmObjLst.Insert(0, ergObj); WinMsg msgSys = new WinMsg(); msgSys.type = WinMsgType.mwMsgSys; sendMsgToWinFunc(msgSys); } if (ergObj != null) { valmoWin.eventMgr.msgSave(ergObj); } valmoWin.execHandle(opeOrderType.winMsg, new WinMsg(WinMsgType.mwMsg)); refreshAlarmList(); } } else { for (int j = curActiveAlmObjLst.Count - 1; j >= 0; j--) { if (curActiveAlmObjLst[j].serialNum == obj.bitSers[i]) { curActiveAlmObjLst.RemoveAt(j); valmoWin.execHandle(opeOrderType.winMsg, new WinMsg(WinMsgType.mwMsg)); refreshAlarmList(); } } } } }
public void ExportAndCloseAsync() { if (this.Parent != null) { IntPtr main = this.Parent.Handle; Voucher bData = Canvas.Data; bData.VoucherImage = (Bitmap)Canvas.BackgroundImage; var cnts = Canvas.Controls.Find(ManualInsertDataControl.MANUALINSERT_DATACONTROL_NAME, true); if (cnts != null && cnts.Length != 0) { ManualInsertDataControl cnt = (ManualInsertDataControl)cnts[0]; if (!string.IsNullOrEmpty(cnt.BarCodeString)) { bData.Parse(cnt.BarCodeString); } else { string[] str = cnt.BarCodeNumberGroups; bData.CountryID = int.Parse(str[0]); //bData.Business = int.Parse(str[1]); bData.RetailerID = int.Parse(str[2]); bData.VoucherID = str[3]; bData.BarCodeString = string.Format("{0:000}{1:00}{2:000000}{3:000000000}", bData.CountryID, "na", bData.RetailerID, bData.VoucherID); } } new Action <Voucher>((data) => { Debug.Assert(data != null); Debug.Assert(data.VoucherImage != null); lock (data.VoucherImage) { try { DelegateUtils.CreateAuditIdReloadDelegate().FireAndForget(); data.SiteCode = AuditIDSTable.SelectRemoveFirstOrEmpty().ThrowIfDefault <string, AppExclamationException>(); data.Validate(); ClientDataAccess.UpdateFileAsync((DbClientVoucher)data, new EventHandler((o, s) => { string fileName = Path.ChangeExtension( string.Format("{0}{1}", PTFUtils.GetMachine(), DateTime.Now).ReplaceAll(new char[] { '.', '/', '\\', '-' }, '_'), ".xml"); //Data has been saved successfully. string text = string.Concat(Strings.VScan_ItemSaved, fileName); WinMsg.SendText(main, text); this.InvokeSf(() => { //Set DialogResult OK //Or else the form will resign to close this.DialogResult = DialogResult.OK; this.Close(); }); }), //No error handling. //General processing handler. null); } catch (Exception ee) { ee.AddNext(new MethodInvoker(() => { Canvas.InvokeSf(() => { Canvas.ShowInputControl(ee.Message); }); })); throw; } } }).FireAndForget(bData); } }
internal static extern IntPtr SendMessage(IntPtr hwnd, WinMsg msg, ushort wParam, uint lParam);
protected override void WndProc(ref Message m) { switch (m.Msg) { case user32.WM_COPYDATA: { //The scaning Form sends ready status //Get image from appslot IntPtr sender; string text = WinMsg.ReceiveText(m.LParam, out sender); if (!string.IsNullOrEmpty(text)) { if (text.StartsWith(Strings.VScan_EditItem)) { new MethodInvoker(() => { const int MAX_OPENED_FORMS = 5; int openedForms = ScanAppContext.Default.OpenFormsOf <VoucherForm>().Count(); int settings = SettingsTable.Get <int>(Strings.VScan_MaximumOpenedScanForms, MAX_OPENED_FORMS); if (openedForms > settings) { WinMsg.SendText(sender, Strings.VScan_StopTheScanner); throw new AppExclamationException("Too many opened windows in editor.\nStop scanning."); } }).FireAndForget(); var data = DataSlot.Get <Voucher>(text); Debug.Assert(data != null && data.VoucherImage != null && !string.IsNullOrEmpty(data.Message), "MainForm.WndProc"); try { VoucherForm form = AddNewChild(); form.Canvas.Update(data); } finally { if (VoucherMonitorForm.IsStarted) { VoucherMonitorForm.ShowImage(text); } DataSlot.Free(text); } } else if (text.StartsWith(Strings.VScan_ItemSaved)) { string[] msgs = text.Split('|'); if (msgs.Length > 1) { tssLabel1.Text = msgs[0]; tssLabel2.Text = msgs[1]; } if (VoucherMonitorForm.IsStarted) { VoucherMonitorForm.ShowImage(text); } DataSlot.Free(text); } else if (text.CompareNoCase(Strings.VScan_ScanIsDoneEvent)) { WaitForm.Stop(this); } else if (string.Compare(text, Strings.Transferring_RemoteLock) == 0) { Lock(); } } } break; default: base.WndProc(ref m); break; } }
internal static bool PostMessage(IntPtr win, WinMsg msg) { return PostMessage_(win, (uint)msg, new IntPtr(0), new IntPtr(0) ); }
} // func GetNumPadValue internal bool HandleScannerCommand(WinMsg dwMsg, ushort wMakeCode, out string barcode) { int tmp; barcode = null; // lookup the vkey from scancode IntPtr hkl; lock (this) hkl = config.KeyboardLayoutHandle; var wVKey = (KeyCode)MapVirtualKeyEx(wMakeCode, 1, hkl); // MAPVK_VSC_TO_VK=1, MAPVK_VSC_TO_VK_EX=3 //System.IO.File.AppendAllText("c:\\temp\\test.txt", String.Format("Msg=0x{0:X4}, Code=0x{1:X4}, VK={2}" + Environment.NewLine, dwMsg, wMakeCode, wVKey)); // process key if (dwMsg == WinMsg.WM_KEYDOWN || dwMsg == WinMsg.WM_SYSKEYDOWN) { //Debug.Print("KeyDown:{0}", (Keys)wVKey); statesScanner[(byte)wVKey] |= 0x80; if (wVKey == KeyCode.Enter || wVKey == KeyCode.LineFeed || ((statesScanner[(byte)KeyCode.ControlKey] & 0x80) != 0 && wVKey == KeyCode.M)) { if (scannerBuffer.Length > 0) { // Jump over possible prefixes var start = 0; while (start < scannerBuffer.Length && scannerBuffer[start] < (char)32) { start++; } barcode = scannerBuffer.ToString(start, scannerBuffer.Length - start); //System.IO.File.AppendAllText("c:\\temp\\test.txt", "BarCode=" + sBarCode + Environment.NewLine); Debug.Print("BarCode: {0}", barcode); scannerBuffer.Length = 0; return(true); } } else if (wVKey == KeyCode.Menu) { numInput = 0; } else if ((statesScanner[(byte)KeyCode.Menu] & 0x80) != 0 && (tmp = GetNumPadValue(wVKey)) >= 0) { numInput = numInput * 10 + tmp; } else { var sb = new StringBuilder(64); var ret = ToUnicodeEx((uint)wVKey, (uint)wMakeCode, statesScanner, sb, 64, 0, hkl); if (ret > 0) { scannerBuffer.Append(sb.ToString()); } } } else if (dwMsg == WinMsg.WM_KEYUP || dwMsg == WinMsg.WM_SYSKEYUP) { //Debug.Print("KeyUp:{0}", (Keys)wVKey); if (wVKey == KeyCode.Menu && numInput > 0) { try { scannerBuffer.Append(Convert.ToChar(numInput)); } catch (Exception) { } numInput = 0; } statesScanner[(byte)wVKey] &= 0x7F; } //System.IO.File.AppendAllText("c:\\temp\\test.txt", " Buf=" + sbScannerBuffer.ToString() + Environment.NewLine); return(false); } // proc HandleScannerCommand
public void sendMsgToWinFunc(WinMsg msg) { if (!valmoWin.flagStartUpOk) return; switch (msg.type) { case WinMsgType.mwLogInOK: case WinMsgType.mwLogOut: case WinMsgType.mwMsg: { ////overViewPage1.eventRecord1.refreshListFunc(); } break; } }