示例#1
0
        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;
        }
示例#2
0
        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);
        }