Compartilhar via


Método IVsUIHierarchy.ExecCommand (UInt32, Guid, UInt32, UInt32, IntPtr, IntPtr)

 

Executa um comando em um item específico dentro de uma janela de hierarquia de interface do usuário ou na própria hierarquia.

Namespace:   Microsoft.VisualStudio.Shell.Interop
Assembly:  Microsoft.VisualStudio.Shell.Interop (em Microsoft.VisualStudio.Shell.Interop.dll)

Sintaxe

int ExecCommand(
    uint itemid,
    [InAttribute] ref Guid pguidCmdGroup,
    uint nCmdID,
    uint nCmdexecopt,
    IntPtr pvaIn,
    IntPtr pvaOut
)
int ExecCommand(
    unsigned int itemid,
    [InAttribute] Guid% pguidCmdGroup,
    unsigned int nCmdID,
    unsigned int nCmdexecopt,
    IntPtr pvaIn,
    IntPtr pvaOut
)
abstract ExecCommand : 
        itemid:uint32 *
        pguidCmdGroup:Guid byref *
        nCmdID:uint32 *
        nCmdexecopt:uint32 *
        pvaIn:nativeint *
        pvaOut:nativeint -> int
Function ExecCommand (
    itemid As UInteger,
    <InAttribute> ByRef pguidCmdGroup As Guid,
    nCmdID As UInteger,
    nCmdexecopt As UInteger,
    pvaIn As IntPtr,
    pvaOut As IntPtr
) As Integer

Parâmetros

  • itemid
    [in] Identificador do item afetado pelo comando passado para IVsUIHierarchy.Para obter uma lista de itemid valores, consulte VSITEMID.Para seleção única, esse valor é a identificação de item real.Para várias seleções, defina itemid igual a VSITEMID_SELECTION.
  • pguidCmdGroup
    [in, exclusivo] Identificador exclusivo do grupo de comandos; pode ser null para especificar o grupo padrão.Todos os comandos que são passados a nCmdID deve pertencer ao grupo especificado porpguidCmdGroup
  • nCmdID
    [in] O comando a ser executado.Este comando deve pertencer ao grupo especificado com pguidCmdGroup.
  • nCmdexecopt
    [in] Valores descrevem como o objeto deve executar o comando.

    valor de nCmdexecopt [1|1]

    [1|2] Valor

    [1|3] Descrição

    [2|1] OLECMDEXECOPT_DODEFAULT

    [2|2] 0

    [2|3] Solicitar ao usuário para entrada ou não, dependendo do comportamento padrão

    [3|1] OLECMDEXECOPT_PROMPTUSER

    [3|2] 1

    [3|3] Execute o comando depois de obter entrada do usuário.

    [4|1] OLECMDEXECOPT_DONTPROMPTUSER

    [4|2] 2

    [4|3] Execute o comando sem avisar o usuário.Por exemplo, clicando no botão da barra de ferramentas de impressão faz com que um documento a ser impresso imediatamente sem a intervenção do usuário.

    [5|1] OLECMDEXECOPT_SHOWHELP

    [5|2] 3

    [5|3] Mostrar Ajuda para o comando correspondente, mas não executar.

  • pvaIn
    [in, exclusivo] Ponteiro para uma VARIANTARG estrutura que contém os argumentos de entrada.Can be null.
  • pvaOut
    [in, out, exclusivo] VARIANTARG estrutura para receber a saída do comando.Can be null.

Valor de retorno

Type: System.Int32

Se o método for bem-sucedido, ele retorna S_OK.Se ele falhar, ele retorna um código de erro.

Comentários

COM assinatura

De vsshell.idl:

HRESULT IVsUIHierarchy::ExecCommand(
   [in] VSITEMID itemid,
   [in, unique] const GUID * pguidCmdGroup,
   [in] DWORD nCmdID,
   [in] DWORD nCmdexecopt,
   [in, unique] VARIANT * pvaIn,
   [in, out, unique]VARIANT* pvaOut
);

Este método é semelhante do Exec método, exceto que o Exec método não oferece suporte a hierarquias, ao passo que o IVsUIHierarchy.ExecCommand método inclui o parâmetro de itemid, que identifica o item de hierarquia ao qual o comando se aplica.

O ambiente executa IVsUIHierarchy.ExecCommand quando a janela hierarquia de interface do usuário tem o foco.A janela hierarquia de interface do usuário delega todos os comandos de menu ou barra de ferramentas para o UIHierarchy o objeto que é o pai comum para a seleção.Isso fornece a UIHierarchy a opção para manipular os comandos que se aplicam somente quando a janela hierarquia de interface do usuário tem o foco de objeto.Os exemplos incluem o Excluir e Remover comandos.Esses comandos não devem ser tratados por meio de Exec.O IOleCommandTarget do projeto ativo é incluído no comando usual roteamento do ambiente, mesmo quando a outra janela (por exemplo, uma janela de documento) tem o foco.Para lidar com Excluir e Remover para um projeto, use IVsHierarchyDeleteHandler.

Se a janela hierarquia de interface do usuário não é a janela ativa, mas ainda é a hierarquia ativa, o que significa que é a última hierarquia para foram selecionados, então todos os comandos que envolvem a hierarquia ativa são enviados através do IOleCommandTarget interface em vez da IVsUIHierarchy interface.Por exemplo, se a seleção é alterada do Solution Explorer à lista de tarefas, em seguida, a Solution Explorer a hierarquia ativa, mas a janela ativa é a lista de tarefas.Nesse caso, todos os comandos relacionados a hierarquia de ativa, como, por exemplo, adicionando um item ao projeto, são enviados através do IOleCommandTarget interface.

Comandos como adicionar um item de projeto não devem ser tratados pelo IVsUIHierarchy métodos porque elas não estarão disponíveis de fora da janela de hierarquia.Use somente IVsUIHierarchy para lidar com os comandos que exigem o A hierarquia de interface do usuário janela para ter foco, ou que agir em um item específico dentro da hierarquia.

O grupo de comandos VSConstants.VsUIHierarchyWindowCmdIds é usado para tratar diretas manipulações de interface do usuário na janela de hierarquia de interface do usuário.

VSHPROPID_EditLabeldeve ser suportada em GetProperty e SetProperty para edição de nome de item para ser ativado.

Os seguintes comandos padrão só devem ser manipulados usando o IVsUIHierarchy interface:

// {5efc7975-14bc-11cf-9b2b-00aa00573819}

DEFINE_GUID(CLSID_StandardCommandSet97, 0x5efc7975, 0x14bc, 0x11cf, 0x9b, 0x2b, 0x00, 0xaa, 0x00, 0x57, 0x38, 0x19);

#define cmdidCopy 15

#define cmdidCut 16

#define cmdidDelete 17

#define cmdidPaste 26

#define cmdidRemove 168

#define cmdidRename 150

Consulte também

Interface IVsUIHierarchy
Namespace Microsoft.VisualStudio.Shell.Interop

Retornar ao topo