Classe CCommandLineInfo

Ajuda na análise da linha de comando na inicialização do aplicativo.

Sintaxe

class CCommandLineInfo : public CObject

Membros

Construtores públicos

Nome Descrição
CCommandLineInfo::CCommandLineInfo Constrói um objeto CCommandLineInfo padrão.

Métodos públicos

Nome Descrição
CCommandLineInfo::ParseParam Substitua esse retorno de chamada para analisar parâmetros individuais.

Membros de Dados Públicos

Nome Descrição
CCommandLineInfo::m_bRunAutomated Indica que a opção de linha de comando /Automation foi encontrada.
CCommandLineInfo::m_bRunEmbedded Indica que a opção de linha de comando /Embedding foi encontrada.
CCommandLineInfo::m_bShowSplash Indica se uma tela inicial deve ser mostrada.
CCommandLineInfo::m_nShellCommand Indica o comando shell a ser processado.
CCommandLineInfo::m_strDriverName Indica o nome do driver se o comando shell for Print To; caso contrário, será vazio.
CCommandLineInfo::m_strFileName Indica o nome do arquivo a ser aberto ou impresso; será vazio se o comando shell for New ou DDE.
CCommandLineInfo::m_strPortName Indica o nome da porta se o comando shell for Print To; caso contrário, será vazio.
CCommandLineInfo::m_strPrinterName Indica o nome da impressora se o comando shell for Print To; caso contrário, será vazio.
CCommandLineInfo::m_strRestartIdentifier Indica o identificador de reinicialização exclusivo para o gerenciador de reinicialização se esse gerenciador reiniciou o aplicativo.

Comentários

Um aplicativo MFC normalmente criará uma instância local dessa classe na função InitInstance de seu objeto de aplicativo. Em seguida, esse objeto é passado para CWinApp::ParseCommandLine, que chama ParseParam repetidamente para preencher o objeto CCommandLineInfo. Então, o objeto CCommandLineInfo é passado para CWinApp::ProcessShellCommand manipular os argumentos e sinalizadores de linha de comando.

Você pode usar esse objeto para encapsular as seguintes opções e parâmetros de linha de comando:

Argumento de linha de comando Comando executado
app Novo arquivo.
app filename Abra o arquivo .
nome do arquivo do aplicativo /p Imprimir arquivo na impressora padrão.
nome do arquivo do aplicativo /pt porta do driver da impressora Imprimir arquivo na impressora especificada.
aplicação /dde Inicie e aguarde o comando DDE.
aplicação /Automation Inicie como um servidor de automação OLE.
aplicação /Embedding Comece a editar um item OLE inserido.
aplicação /Register

aplicação /Regserver
Informa o aplicativo para realizar quaisquer tarefas de registro.
aplicação /Unregister

aplicação /Unregserver
Informa o aplicativo para realizar quaisquer tarefas de cancelamento de registro.

Derive uma nova classe de CCommandLineInfo para manipular outros sinalizadores e valores de parâmetro. Substitua ParseParam para manipular os novos sinalizadores.

Hierarquia de herança

CObject

CCommandLineInfo

Requisitos

Cabeçalho: afxwin.h

CCommandLineInfo::CCommandLineInfo

Esse construtor cria um objeto CCommandLineInfo com valores padrão.

CCommandLineInfo();

Comentários

O padrão é mostrar a tela inicial ( m_bShowSplash=TRUE) e executar o comando New no menu Arquivo ( m_nShellCommand=NewFile).

A estrutura do aplicativo chama ParseParam para preencher membros de dados desse objeto.

Exemplo

CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

CCommandLineInfo::m_bRunAutomated

Indica que o sinalizador /Automation foi encontrado na linha de comando.

BOOL m_bRunAutomated;

Comentários

Se for TRUE, isso significa iniciar como um servidor de automação OLE.

CCommandLineInfo::m_bRunEmbedded

Indica que o sinalizador /Embedding foi encontrado na linha de comando.

BOOL m_bRunEmbedded;

Comentários

Se for TRUE, isso significa iniciar para editar um item OLE inserido.

CCommandLineInfo::m_bShowSplash

Indica que a tela inicial deve ser exibida.

BOOL m_bShowSplash;

Comentários

Se for TRUE, isso significa que a tela inicial desse aplicativo deve ser exibida durante a inicialização. A implementação padrão de ParseParam define esse membro de dados como TRUE se m_nShellCommand for igual a CCommandLineInfo::FileNew.

CCommandLineInfo::m_nShellCommand

Indica o comando shell para esta instância do aplicativo.

m_nShellCommand;

Comentários

O tipo desse membro de dados é o seguinte tipo enumerado, que é definido na classe CCommandLineInfo.

enum {
    FileNew,
    FileOpen,
    FilePrint,
    FilePrintTo,
    FileDDE,
    AppRegister,
    AppUnregister,
    RestartByRestartManager,
    FileNothing = -1
    };

Para obter uma breve descrição desses valores, consulte a lista a seguir.

  • CCommandLineInfo::FileNew Indica que nenhum nome de arquivo foi encontrado na linha de comando.

  • CCommandLineInfo::FileOpen Indica que um nome de arquivo foi encontrado na linha de comando e que nenhum dos seguintes sinalizadores foi encontrado na linha de comando: /p, /pt e /dde.

  • CCommandLineInfo::FilePrint Indica que o sinalizador /p foi encontrado na linha de comando.

  • CCommandLineInfo::FilePrintTo Indica que o sinalizador /pt foi encontrado na linha de comando.

  • CCommandLineInfo::FileDDE Indica que o sinalizador /dde foi encontrado na linha de comando.

  • CCommandLineInfo::AppRegister Indica que o sinalizador /Register ou /Regserver foi encontrado na linha de comando e o aplicativo foi solicitado a se registrar.

  • CCommandLineInfo::AppUnregisterIndica que o aplicativo /Unregister ou /Unregserver foi solicitado a cancelar o registro.

  • CCommandLineInfo::RestartByRestartManager Indica que o aplicativo foi reiniciado pelo gerenciador de reinicialização.

  • CCommandLineInfo::FileNothing Desativa a exibição de uma nova janela filho do MDI na inicialização. Por design, os aplicativos MDI gerados pelo Assistente de Aplicativo exibem uma nova janela filho na inicialização. Para desativar esse recurso, um aplicativo pode usar CCommandLineInfo::FileNothing como o comando shell quando ele chamar ProcessShellCommand. ProcessShellCommand é chamado por InitInstance( ) de todas as classes derivadas CWinApp.

Exemplo

// From CMyWinApp::InitInstance

// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

// DON'T display a new MDI child window during startup!!!
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;

// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
{
   return FALSE;
}

CCommandLineInfo::m_strDriverName

Armazena o valor do terceiro parâmetro não sinalizador na linha de comando.

CString m_strDriverName;

Comentários

Normalmente, esse parâmetro é o nome do driver da impressora para um comando shell Print To. A implementação padrão de ParseParam define esse membro de dados somente se o sinalizador /pt foi encontrado na linha de comando.

CCommandLineInfo::m_strFileName

Armazena o valor do primeiro parâmetro não sinalizador na linha de comando.

CString m_strFileName;

Comentários

Normalmente, esse parâmetro é o nome do arquivo a ser aberto.

CCommandLineInfo::m_strPortName

Armazena o valor do quarto parâmetro não sinalizador na linha de comando.

CString m_strPortName;

Comentários

Esse parâmetro normalmente é o nome da porta da impressora para um comando shell Print To. A implementação padrão de ParseParam define esse membro de dados somente se o sinalizador /pt foi encontrado na linha de comando.

CCommandLineInfo::m_strPrinterName

Armazena o valor do segundo parâmetro não sinalizador na linha de comando.

CString m_strPrinterName;

Comentários

Esse parâmetro normalmente é o nome da impressora para um comando shell Print To. A implementação padrão de ParseParam define esse membro de dados somente se o sinalizador /pt foi encontrado na linha de comando.

CCommandLineInfo::m_strRestartIdentifier

O identificador de reinicialização exclusivo na linha de comando.

CString m_strRestartIdentifier;

Comentários

O identificador de reinicialização é exclusivo para cada instância do aplicativo.

Se o gerenciador de reinicialização sair do aplicativo e estiver configurado para reiniciá-lo, o gerenciador de reinicialização executará o aplicativo na linha de comando com o identificador de reinicialização como um parâmetro opcional. Quando o gerenciador de reinicialização usa o identificador de reinicialização, o aplicativo pode reabrir os documentos abertos anteriormente e recuperar arquivos salvos automaticamente.

CCommandLineInfo::ParseParam

A estrutura chama essa função para analisar/interpretar parâmetros individuais da linha de comando. A segunda versão é diferente da primeira somente em projetos Unicode.

virtual void ParseParam(
    const char* pszParam,
    BOOL bFlag,
    BOOL bLast);

virtual void ParseParam(
    const TCHAR* pszParam,
    BOOL bFlag,
    BOOL bLast);

Parâmetros

pszParam
O parâmetro ou sinalizador.

bFlag
Indica se pszParam é um parâmetro ou um sinalizador.

bLast
Indica se esse é o último parâmetro ou sinalizador na linha de comando.

Comentários

CWinApp::ParseCommandLine chama ParseParam uma vez para cada parâmetro ou sinalizador na linha de comando, passando o argumento para pszParam. Se o primeiro caractere do parâmetro for um - ou um /, ele será removido e bFlag será definido como TRUE. Ao analisar o parâmetro final, bLast será definido como TRUE.

A implementação padrão dessa função reconhece os seguintes sinalizadores: /p, /pt, /dde,/Automation e /Embedding, conforme mostrado na tabela a seguir:

Argumento de linha de comando Comando executado
app Novo arquivo.
app filename Abra o arquivo .
nome do arquivo do aplicativo /p Imprimir arquivo na impressora padrão.
nome do arquivo do aplicativo /pt porta do driver da impressora Imprimir arquivo na impressora especificada.
aplicação /dde Inicie e aguarde o comando DDE.
aplicação /Automation Inicie como um servidor de automação OLE.
aplicação /Embedding Comece a editar um item OLE inserido.
aplicação /Register

aplicação /Regserver
Informa o aplicativo para realizar quaisquer tarefas de registro.
aplicação /Unregister

aplicação /Unregserver
Informa o aplicativo para realizar quaisquer tarefas de cancelamento de registro.

Essas informações são armazenadas em m_bRunAutomated, m_bRunEmbedded e m_nShellCommand. Os sinalizadores são marcados por uma barra / ou hífen -.

A implementação padrão coloca o primeiro parâmetro não sinalizador em m_strFileName. No caso do sinalizador /pt, a implementação padrão coloca o segundo, o terceiro e o quarto parâmetros não sinalizadores em m_strPrinterName, m_strDriverName e m_strPortName, respectivamente.

A implementação padrão também define m_bShowSplash como TRUE somente no caso de um novo arquivo. No caso de um novo arquivo, o usuário tomou medidas envolvendo o próprio aplicativo. Em qualquer outro caso, incluindo a abertura de arquivos existentes usando o shell, a ação do usuário envolve o arquivo diretamente. Em um ponto de vista centrado em documento, a tela inicial não precisa anunciar a inicialização do aplicativo.

Substitua essa função em sua classe derivada para manipular outros valores de sinalizador e parâmetro.

Confira também

Classe CObject
Gráfico da hierarquia
CWinApp::ParseCommandLine
CWinApp::ProcessShellCommand