コード例 #1
0
        public void input_AppCommand(object sender, AppCommandEventArgs appCommandEventArgs)
        {
            Boolean handled = false;

            var appCommand = MapAppCommand(appCommandEventArgs.Cmd);

            _logger.Debug("input_AppCommand: {0} {1}", appCommandEventArgs.Cmd, appCommand == null ? "null" : appCommand.ToString());

            if (appCommand != null)
            {
                if (IsDuplicateMediaKeyEvent(appCommand.Value))
                {
                    _logger.Debug("input_AppCommand: IsDuplicate - cmd {0} after key {1}", appCommand, _lastKeyDown);
                    handled = true;
                }
                else
                {
                    var command = CommandMaps.MapInput(appCommand.Value);
                    handled = _defaultCommandActions.ExecuteCommand(command);
                }

                if (handled)
                {
                    _lastCmd     = appCommand.Value;
                    _lastCmdTime = DateTime.Now;
                }
                else
                {
                    _logger.Debug("input_AppCommand {0}, command not handled", appCommand);
                }
            }

            appCommandEventArgs.Handled = handled;
        }
コード例 #2
0
ファイル: AppCommand.cs プロジェクト: sammygd/DoubanFMFix
        protected virtual void OnFire(AppCommandEventArgs e)
        {
            AppCommndEventhandler handler = Fire;

            if (handler != null)
            {
                handler(this, e);
            }
        }
コード例 #3
0
ファイル: AppCommand.cs プロジェクト: sammygd/DoubanFMFix
        private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            if (msg == WM_SHELLHOOKMESSAGE && wParam == HSHELL_APPCOMMAND)
            {
                var command = GetAppCommandLParam(lParam);
                var device  = GetDeviceLParam(lParam);
                var keys    = GetKeyStateLParam(lParam);

                var e = new AppCommandEventArgs(command, device, keys);
                OnFire(e);
                handled = e.Handled;
            }
            return(IntPtr.Zero);
        }
コード例 #4
0
        private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            const int WM_APPCOMMAND = 0x319;

            if (msg == WM_APPCOMMAND)
            {
                if (_appCommand != null)
                {
                    var appCommandEventArgs = new AppCommandEventArgs {
                        Cmd = (lParam.ToInt32() / 65536)
                    };

                    _appCommand.Invoke(null, appCommandEventArgs);
                    handled = appCommandEventArgs.Handled;
                }
            }

            return(IntPtr.Zero);
        }
コード例 #5
0
        public void input_AppCommand(object sender, AppCommandEventArgs appCommandEventArgs)
        {
            var appCommand = MapAppCommand(appCommandEventArgs.Cmd);

            _logger.Debug("input_AppCommand: {0} {1}", appCommandEventArgs.Cmd, appCommand == null ? "null" : appCommand.ToString());

            if (appCommand != null)
            {
                if (IsDuplicateMediaKeyEvent(appCommand.Value))
                {
                    _logger.Debug("input_AppCommand: IsDuplicate - cmd {0} after key {1}", appCommand, _lastKeyDown);
                    appCommandEventArgs.Handled = false;
                }
                else
                {
                    if (_commandReceived != null)
                    {
                        var command          = _inputCommandMaps.GetMappedCommand(appCommand.Value);
                        var commandEventArgs = new CommandEventArgs {
                            Command = command, Handled = appCommandEventArgs.Handled
                        };
                        _commandReceived.Invoke(null, commandEventArgs);
                        appCommandEventArgs.Handled = commandEventArgs.Handled;
                    }
                }

                if (appCommandEventArgs.Handled)
                {
                    _lastCmd     = appCommand.Value;
                    _lastCmdTime = DateTime.Now;
                }
                else
                {
                    _logger.Debug("input_AppCommand {0}, command not handled", appCommand);
                }
            }
        }
コード例 #6
0
 private void hook_AppCommandReceived(object sender, AppCommandEventArgs e)
 {
     this.LastAppCommandEventData = e;
 }
コード例 #7
0
		/// <summary>
		/// Handles the default app commands.
		/// </summary>
		/// <param name="e">The AppCommandEventArgs
		/// instance containing the event data.</param>
		protected virtual void HandleDefaultAppCommands(
			AppCommandEventArgs e )
		{
			if ( e.CommandName == @"ShellExecuteFile" )
			{
				Process.Start( e.CommandParameters[@"FilePath"] );
			}
		}
コード例 #8
0
ファイル: AppCommand.cs プロジェクト: alexguo88/DoubanFM
 protected virtual void OnFire(AppCommandEventArgs e)
 {
     AppCommndEventhandler handler = Fire;
     if (handler != null) handler(this, e);
 }
コード例 #9
0
ファイル: AppCommand.cs プロジェクト: alexguo88/DoubanFM
        private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            if (msg == WM_SHELLHOOKMESSAGE && wParam == HSHELL_APPCOMMAND)
            {
                var command = GetAppCommandLParam(lParam);
                var device = GetDeviceLParam(lParam);
                var keys = GetKeyStateLParam(lParam);

                var e = new AppCommandEventArgs(command, device, keys);
                OnFire(e);
                handled = e.Handled;
            }
            return IntPtr.Zero;
        }