コード例 #1
0
        private object ExecCommandCallback(object arguments)
        {
            object[] array = (object[])arguments;
            Invariant.Assert(array.Length == 3);
            Guid        guidCmdGroup       = (Guid)array[0];
            uint        num                = (uint)array[1];
            object      argument           = array[2];
            IDictionary oleCmdMappingTable = this.GetOleCmdMappingTable(guidCmdGroup);

            if (oleCmdMappingTable == null)
            {
                return(-2147221244);
            }
            CommandWithArgument commandWithArgument = oleCmdMappingTable[num] as CommandWithArgument;

            if (commandWithArgument == null)
            {
                return(-2147221248);
            }
            if (Application.Current.MainWindow == null)
            {
                return(-2147221247);
            }
            IInputElement inputElement = FocusManager.GetFocusedElement(Application.Current.MainWindow);

            if (inputElement == null)
            {
                inputElement = Application.Current.MainWindow;
            }
            return(commandWithArgument.Execute(inputElement, argument) ? 0 : -2147221247);
        }
コード例 #2
0
ファイル: OleCmdHelper.cs プロジェクト: dox0/DotNet471RS3
        private object ExecCommandCallback(object arguments)
        {
            object[] args = (object[])arguments;
            Invariant.Assert(args.Length == 3);
            Guid   guidCmdGroup = (Guid)args[0];
            uint   commandId    = (uint)args[1];
            object arg          = args[2];

            IDictionary oleCmdMappingTable = GetOleCmdMappingTable(guidCmdGroup);

            if (oleCmdMappingTable == null)
            {
                return(OLECMDERR_E_UNKNOWNGROUP);
            }
            CommandWithArgument command = oleCmdMappingTable[commandId] as CommandWithArgument;

            if (command == null)
            {
                return(OLECMDERR_E_NOTSUPPORTED);
            }

            if (Application.Current.MainWindow == null)
            {
                return(OLECMDERR_E_DISABLED);
            }
            IInputElement target = FocusManager.GetFocusedElement(Application.Current.MainWindow);

            if (target == null)
            {
                // This will always succeed because Window is IInputElement
                target = (IInputElement)Application.Current.MainWindow;
            }
            return(command.Execute(target, arg) ? NativeMethods.S_OK : OLECMDERR_E_DISABLED);
        }