protected override void WndProc(ref Message m) { if ((int)Lib.Win.Document.Win32.Msgs.WM_SYSCOMMAND == m.Msg && (int)m.WParam == Lib.Win.Document.Win32.User32.SC_CLOSE) { _closeClick = true; } if ((int)Lib.Win.Document.Win32.Msgs.WM_COPYDATA == m.Msg && m.LParam != null) { try { string text = string.Empty; var cd = new Lib.Win.Document.Win32.User32.COPYDATASTRUCT(); cd = (Lib.Win.Document.Win32.User32.COPYDATASTRUCT)Marshal.PtrToStructure(m.LParam, typeof(Lib.Win.Document.Win32.User32.COPYDATASTRUCT)); if (cd.dwData == 1024) { if (cd.cbData > 0) { var B = new byte[cd.cbData]; IntPtr lpData = cd.lpData; Marshal.Copy(lpData, B, 0, cd.cbData); text = Encoding.UTF8.GetString(B); Console.WriteLine("{0}: Message: {1}", DateTime.Now.ToString("HH:mm:ss fff"), text); } } text = text.Trim(); try { AnalyzeArgs(text); } catch (Exception ex) { Lib.Win.Data.Env.WriteToLog(ex); Kesco.Lib.Win.Error.ErrorShower.OnShowError(this, ex.Message, Environment.StringResources.GetString("Error")); } m.Result = new IntPtr(1); return; } catch (Exception ex) { Lib.Win.Data.Env.WriteToLog(ex); } } if (m.Msg == (int)Lib.Win.Document.Win32.Msgs.WM_HOTKEY && ActiveForm != null) { HotKeys.DoWork(m.WParam); } base.WndProc(ref m); }
public static int SendMessage(IntPtr wndHandle, string sendText, bool send) { Console.WriteLine("{0}: Send message: {1}", DateTime.Now.ToString("HH:mm:ss fff"), sendText); int result = 0; IntPtr lpB = IntPtr.Zero; IntPtr textPointer = IntPtr.Zero; try { Lib.Win.Document.Win32.User32.ShowWindow(wndHandle, 8); if (send) { byte[] B = Encoding.UTF8.GetBytes(sendText); lpB = Marshal.AllocHGlobal(B.Length); Marshal.Copy(B, 0, lpB, B.Length); var cdt = new Lib.Win.Document.Win32.User32.COPYDATASTRUCT { dwData = 1024, lpData = lpB, cbData = B.Length }; textPointer = Marshal.AllocHGlobal(Marshal.SizeOf(cdt)); Marshal.StructureToPtr(cdt, textPointer, false); } if (wndHandle != IntPtr.Zero) { result = Lib.Win.Document.Win32.User32.SendMessage(wndHandle, (int)Lib.Win.Document.Win32.Msgs.WM_COPYDATA, (send && Program.MainFormDialog != null) ? Program.MainFormDialog.Handle : IntPtr.Zero, textPointer).ToInt32(); #if (DEBUG) if (result > 0) { Console.WriteLine("{0}: true {1}", DateTime.Now.ToString("HH:mm:ss fff"), result); } else { Console.WriteLine("{0}: false {1}", DateTime.Now.ToString("HH:mm:ss fff"), result); } #endif } if (send) { Marshal.FreeHGlobal(lpB); Marshal.FreeHGlobal(textPointer); } } catch (Exception ex) { result = 0; Kesco.Lib.Win.Error.ErrorShower.OnShowError(null, ex.Message, Environment.StringResources.GetString("Error")); Lib.Win.Data.Env.WriteToLog(ex); } return(result); }