protected virtual void OnRecvEvt(RecvInfEventArgs e) { if (RecvEvt != null) { RecvEvt(this, e); } }
// カスタマイズしたウィンドウ処理関数 private int MyWndProc(int hWnd, int wMsg, int wParam, int lParam) { try { switch (wMsg) { case WM_COPYDATA: string str = ""; COPYDATASTRUCT cds = new COPYDATASTRUCT(); cds = (COPYDATASTRUCT)Marshal.PtrToStructure((IntPtr)lParam, typeof(COPYDATASTRUCT)); if (cds.cbData > 0) { byte[] data = new byte[cds.cbData]; Marshal.Copy(cds.lpData, data, 0, cds.cbData); Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); str = sjisEnc.GetString(data).Replace("\0", "\r\n"); } RecvInfEventArgs e = new RecvInfEventArgs(); e.RecvInf = str; OnRecvEvt(e); return 0; case WM_DESTROY: PostMessage(hWnd, WM_QUIT, 0, 0); break; case WM_CLOSE: break; case WM_QUIT: break; case WM_NULL: break; } // デフォルトのメッセージ処理 return DefWindowProc(hWnd, wMsg, wParam, lParam); } catch (Exception) { } return 0; }