Класс 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
для обработки новых флагов.
Иерархия наследования
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_strPrinterName
m_strDriverName
, третий и четвертый параметры, не относящиеся к флагу, и m_strPortName
соответственно.
Реализация по умолчанию также задает m_bShowSplash
значение TRUE
только в случае нового файла. В случае нового файла пользователь предпринял действия, связанные с самим приложением. В любом другом случае, включая открытие существующих файлов с помощью оболочки, действие пользователя включает файл напрямую. В документоориентированной точке экран-заставка не должен объявлять о запуске приложения.
Переопределите эту функцию в производном классе, чтобы обрабатывать другие значения флагов и параметров.
См. также
CObject
Класс
Диаграмма иерархии
CWinApp::ParseCommandLine
CWinApp::ProcessShellCommand