protected override void WndProc(ref Message m) { if (m.Msg != NativeMethods.WM_COPYDATA) { base.WndProc(ref m); return; } //------------------------------- // Handle WM_COPYDATA. // Supported commands: // - Trigger capture. //------------------------------- log.DebugFormat("Received WM_COPYDATA."); NativeMethods.COPYDATASTRUCT copyData = (NativeMethods.COPYDATASTRUCT)Marshal.PtrToStructure(m.LParam, typeof(NativeMethods.COPYDATASTRUCT)); int dataType = (int)copyData.dwData; if (dataType != 0) { return; } if (Marshal.PtrToStringUni(copyData.lpData) == COMMAND_TRIGGERCAPTURE || Marshal.PtrToStringAnsi(copyData.lpData) == COMMAND_TRIGGERCAPTURE) { log.DebugFormat("Received capture trigger command."); NotificationCenter.RaiseCaptureTriggered(this); } else { log.ErrorFormat("Unrecognized command."); } return; }
protected override void WndProc(ref Message m) { if (m.Msg != NativeMethods.WM_COPYDATA) { base.WndProc(ref m); return; } log.DebugFormat("Received WM_COPYDATA."); NativeMethods.COPYDATASTRUCT copyData = (NativeMethods.COPYDATASTRUCT)Marshal.PtrToStructure(m.LParam, typeof(NativeMethods.COPYDATASTRUCT)); int dataType = (int)copyData.dwData; if (dataType != 0) { log.DebugFormat("Malformed command."); return; } string message = Marshal.PtrToStringUni(copyData.lpData); bool parsed = message.StartsWith(EXTERNAL_COMMAND_IDENTIFIER); if (!parsed) { message = Marshal.PtrToStringAnsi(copyData.lpData); parsed = message.StartsWith(EXTERNAL_COMMAND_IDENTIFIER); } if (!parsed) { log.ErrorFormat("Unrecognized command."); return; } int commandIndex = message.IndexOf(':'); if (commandIndex < 0) { log.ErrorFormat("Malformed command. Separator not found."); return; } string command = message.Substring(commandIndex + 1, message.Length - (commandIndex + 1)); log.DebugFormat("Received external command:\"{0}\"", command); NotificationCenter.RaiseExternalCommand(this, command); }