Поделиться через


Класс CCommandLineInfo

Помогает в синтаксическом разборе командной строки при запуске приложения.

Синтаксис

class CCommandLineInfo : public CObject

Участники

Открытые конструкторы

Имя Описание
CCommandLineInfo::CCommandLineInfo Создает объект по умолчанию CCommandLineInfo .

Открытые методы

Имя Описание
CCommandLineInfo::ParseParam Переопределите этот обратный вызов, чтобы проанализировать отдельные параметры.

Открытые члены данных

Имя Описание
CCommandLineInfo::m_bRunAutomated Указывает, что найден параметр командной строки /Automation .
CCommandLineInfo::m_bRunEmbedded Указывает, что найден параметр командной строки /Embedding .
CCommandLineInfo::m_bShowSplash Указывает, должен ли отображаться экран-заставка.
CCommandLineInfo::m_nShellCommand Указывает команду оболочки для обработки.
CCommandLineInfo::m_strDriverName Указывает имя драйвера, если команда оболочки имеет значение Print To; в противном случае пуст.
CCommandLineInfo::m_strFileName Указывает имя файла, которое нужно открыть или распечатать; пуст, если команда оболочки — New или DDE.
CCommandLineInfo::m_strPortName Указывает имя порта, если команда оболочки —Print To; в противном случае пуст.
CCommandLineInfo::m_strPrinterName Указывает имя принтера, если команда оболочки имеет значение Print To; в противном случае пуст.
CCommandLineInfo::m_strRestartIdentifier Указывает уникальный идентификатор перезапуска для диспетчера перезапуска, если диспетчер перезапуска перезагрузил приложение.

Замечания

Приложение MFC обычно создает локальный экземпляр этого класса в InitInstance функции объекта приложения. Затем этот объект передается CWinApp::ParseCommandLineв , в который неоднократно вызывается ParseParam для заполнения CCommandLineInfo объекта. Затем CCommandLineInfo объект передается для CWinApp::ProcessShellCommand обработки аргументов и флагов командной строки.

Этот объект можно использовать для инкапсулации следующих параметров и параметров командной строки:

Аргумент командной строки Выполненная команда
app Новый файл.
имя файла приложения Откройте файл.
имя файла приложения /p Печать файла на принтер по умолчанию.
Порт драйвера принтера для имени файла приложения /pt Печать файла на указанный принтер.
приложение /dde Запуск и ожидание команды DDE.
приложение /Automation Запуск в качестве сервера автоматизации OLE.
приложение /Embedding Начните редактировать внедренный элемент OLE.
приложение /Register

приложение /Regserver
Сообщает приложению о выполнении любых задач регистрации.
приложение /Unregister

приложение /Unregserver
Сообщает приложению о выполнении любых задач без регистрации.

Наследуйте новый класс от CCommandLineInfo обработки других флагов и значений параметров. Переопределите ParseParam для обработки новых флагов.

Иерархия наследования

CObject

CCommandLineInfo

Требования

Заголовок: afxwin.h

CCommandLineInfo::CCommandLineInfo

Этот конструктор создает CCommandLineInfo объект со значениями по умолчанию.

CCommandLineInfo();

Замечания

По умолчанию отображается экран-заставка ( m_bShowSplash=TRUE) и выполнить команду "Создать " в меню "Файл " ( m_nShellCommand=NewFile).

Платформа приложений вызывает ParseParam заполнение элементов данных этого объекта.

Пример

CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

CCommandLineInfo::m_bRunAutomated

Указывает, что /Automation флаг найден в командной строке.

BOOL m_bRunAutomated;

Замечания

Если TRUEэто означает запуск в качестве сервера автоматизации OLE.

CCommandLineInfo::m_bRunEmbedded

Указывает, что /Embedding флаг найден в командной строке.

BOOL m_bRunEmbedded;

Замечания

Если TRUEэто означает запуск для редактирования внедренного элемента OLE.

CCommandLineInfo::m_bShowSplash

Указывает, что экран-заставка должен отображаться.

BOOL m_bShowSplash;

Замечания

Если TRUEэто означает, что экран-заставка для этого приложения должен отображаться во время запуска. Реализация по умолчанию ParseParam задает этот элемент данных, TRUE если m_nShellCommand равен CCommandLineInfo::FileNew.

CCommandLineInfo::m_nShellCommand

Указывает команду оболочки для этого экземпляра приложения.

m_nShellCommand;

Замечания

Тип для этого элемента данных является следующим перечисленным типом, который определяется в CCommandLineInfo классе.

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

Краткое описание этих значений см. в следующем списке.

  • CCommandLineInfo::FileNew Указывает, что имя файла не найдено в командной строке.

  • CCommandLineInfo::FileOpenУказывает, что имя файла найдено в командной строке и что ни один из следующих флагов не найден в командной строке: /p, /pt. /dde

  • CCommandLineInfo::FilePrint Указывает, что /p флаг найден в командной строке.

  • CCommandLineInfo::FilePrintTo Указывает, что /pt флаг найден в командной строке.

  • CCommandLineInfo::FileDDE Указывает, что /dde флаг найден в командной строке.

  • CCommandLineInfo::AppRegister Указывает, что /Register в командной строке найден или /Regserver флаг, и приложению было предложено зарегистрировать.

  • CCommandLineInfo::AppUnregister Указывает, что /Unregister приложению было /Unregserver предложено отменить регистрацию.

  • CCommandLineInfo::RestartByRestartManager Указывает, что приложение было перезапущено диспетчером перезапуска.

  • CCommandLineInfo::FileNothing Выключает отображение нового дочернего окна MDI при запуске. По проектированию приложения, созданные мастером приложений MDI, отображают новое дочернее окно при запуске. Чтобы отключить эту функцию, приложение может использовать CCommandLineInfo::FileNothing в качестве команды оболочки при вызове ProcessShellCommand. ProcessShellCommandвызывается всеми CWinApp производными классамиInitInstance( ).

Пример

// 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

Сохраняет значение третьего параметра, отличного от флага, в командной строке.

CString m_strDriverName;

Замечания

Обычно этот параметр является именем драйвера принтера для команды оболочки print To. Реализация по умолчанию ParseParam задает этот член данных только в том случае, если /pt флаг найден в командной строке.

CCommandLineInfo::m_strFileName

Сохраняет значение первого параметра, отличного от флага, в командной строке.

CString m_strFileName;

Замечания

Этот параметр обычно является именем открываемого файла.

CCommandLineInfo::m_strPortName

Сохраняет значение четвертого параметра, отличного от флага, в командной строке.

CString m_strPortName;

Замечания

Обычно этот параметр называется портом принтера для команды "Печать в оболочку". Реализация по умолчанию ParseParam задает этот член данных только в том случае, если /pt флаг найден в командной строке.

CCommandLineInfo::m_strPrinterName

Сохраняет значение второго параметра, отличного от флага, в командной строке.

CString m_strPrinterName;

Замечания

Обычно этот параметр является именем принтера для команды оболочки print To. Реализация по умолчанию ParseParam задает этот член данных только в том случае, если /pt флаг найден в командной строке.

CCommandLineInfo::m_strRestartIdentifier

Уникальный идентификатор перезапуска в командной строке.

CString m_strRestartIdentifier;

Замечания

Идентификатор перезапуска является уникальным для каждого экземпляра приложения.

Если диспетчер перезапуска выходит из приложения и настроен на перезапуск, диспетчер перезапуска выполняет приложение из командной строки с идентификатором перезапуска в качестве необязательного параметра. Когда диспетчер перезапуска использует идентификатор перезапуска, приложение может повторно открыть ранее открытые документы и восстановить автоматически сохраненные файлы.

CCommandLineInfo::ParseParam

Платформа вызывает эту функцию для анализа и интерпретации отдельных параметров из командной строки. Вторая версия отличается от первой только в проектах Юникода.

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

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

Параметры

pszParam
Параметр или флаг.

bFlag
Указывает, является ли pszParam параметр или флаг.

bLast
Указывает, является ли это последним параметром или флагом в командной строке.

Замечания

CWinApp::ParseCommandLine вызывает ParseParam один раз для каждого параметра или флага в командной строке, передав аргумент pszParamв . Если первый символ параметра имеет значение a - или a /, то он удаляется и bFlag имеет значение TRUE. При синтаксическом анализе окончательного параметра bLast задано значение TRUE.

Реализация этой функции по умолчанию распознает следующие флаги: /p, /pt, /dde, /Automationи /Embedding, как показано в следующей таблице:

Аргумент командной строки Выполненная команда
app Новый файл.
имя файла приложения Откройте файл.
имя файла приложения /p Печать файла на принтер по умолчанию.
Порт драйвера принтера для имени файла приложения /pt Печать файла на указанный принтер.
приложение /dde Запуск и ожидание команды DDE.
приложение /Automation Запуск в качестве сервера автоматизации OLE.
приложение /Embedding Начните редактировать внедренный элемент OLE.
приложение /Register

приложение /Regserver
Сообщает приложению о выполнении любых задач регистрации.
приложение /Unregister

приложение /Unregserver
Сообщает приложению о выполнении любых задач без регистрации.

Эти сведения хранятся в m_bRunAutomated, m_bRunEmbeddedи m_nShellCommand. Флаги помечены косой чертой / вперед или дефисом -.

Реализация по умолчанию помещает первый параметр m_strFileNameбез флага. В случае флага /pt реализация по умолчанию помещает второйm_strPrinterNamem_strDriverName, третий и четвертый параметры, не относящиеся к флагу, и m_strPortNameсоответственно.

Реализация по умолчанию также задает m_bShowSplash значение TRUE только в случае нового файла. В случае нового файла пользователь предпринял действия, связанные с самим приложением. В любом другом случае, включая открытие существующих файлов с помощью оболочки, действие пользователя включает файл напрямую. В документоориентированной точке экран-заставка не должен объявлять о запуске приложения.

Переопределите эту функцию в производном классе, чтобы обрабатывать другие значения флагов и параметров.

См. также

CObject Класс
Диаграмма иерархии
CWinApp::ParseCommandLine
CWinApp::ProcessShellCommand