private void EnableMessageHandling() { var changeFilter = new NativeMethods.CHANGEFILTERSTRUCT(); changeFilter.size = (uint)Marshal.SizeOf(changeFilter); changeFilter.info = 0; if ( NativeMethods.ChangeWindowMessageFilterEx( new WindowInteropHelper(this).EnsureHandle(), NativeMethods.WM_COPYDATA, NativeMethods.ChangeWindowMessageFilterExAction.Allow, ref changeFilter) ) { return; } var error = Marshal.GetLastWin32Error(); MessageBox.Show($"Enabling message handling failed with the error: {error}"); }
private void LoadMainType() { ShowProcessInfo(); NativeMethods.CHANGEFILTERSTRUCT changeFilter = new NativeMethods.CHANGEFILTERSTRUCT(); changeFilter.size = (uint)Marshal.SizeOf(changeFilter); changeFilter.info = 0; if (!NativeMethods.ChangeWindowMessageFilterEx( this.Handle, NativeMethods.WM_COPYDATA, NativeMethods.ChangeWindowMessageFilterExAction.Allow, ref changeFilter)) { int error = Marshal.GetLastWin32Error(); MessageBox.Show(String.Format("The error {0} occurred.", error)); } if (!String.IsNullOrEmpty(data)) { SendMessage(data); } // 윈도우가 보이지 않으면 핸들을 가져오지 못합니다. //this.Hide(); }