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,則為 empty。 |
CCommandLineInfo::m_strPortName |
如果殼層命令是列印至,則指出埠名稱;否則為空白。 |
CCommandLineInfo::m_strPrinterName |
如果殼層命令是列印至,則指出印表機名稱;否則為空白。 |
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
為 ,這表示啟動期間應該顯示此應用程式的啟動顯示畫面。 如果 m_nShellCommand
等於,這個資料成員的預設實作ParseParam
會將這個資料成員TRUE
設定為 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 應用程式會在啟動時顯示新的子視窗。 若要關閉這項功能,應用程式可以在呼叫ProcessShellCommand
時作為殼層命令使用CCommandLineInfo::FileNothing
。ProcessShellCommand
由InitInstance( )
所有CWinApp
衍生類別的呼叫。
範例
// 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;
備註
此參數通常是列印到殼層命令的印表機驅動程序名稱。 只有在命令列上找到旗標時,/pt
才會設定此資料成員的預設實ParseParam
作。
CCommandLineInfo::m_strFileName
將第一個非旗標參數的值儲存在命令行上。
CString m_strFileName;
備註
此參數通常是要開啟的檔名。
CCommandLineInfo::m_strPortName
將第四個非旗標參數的值儲存在命令行上。
CString m_strPortName;
備註
此參數通常是列印至殼層命令的印表機埠名稱。 只有在命令列上找到旗標時,/pt
才會設定此資料成員的預設實ParseParam
作。
CCommandLineInfo::m_strPrinterName
將第二個非旗標參數的值儲存在命令行上。
CString m_strPrinterName;
備註
此參數通常是列印至殼層命令的印表機名稱。 只有在命令列上找到旗標時,/pt
才會設定此資料成員的預設實ParseParam
作。
CCommandLineInfo::m_strRestartIdentifier
命令行上的唯一重新啟動識別碼。
CString m_strRestartIdentifier;
備註
每個應用程式實例的重新啟動標識碼都是唯一的。
如果重新啟動管理員結束應用程式並設定為重新啟動應用程式,重新啟動管理員會從命令行執行應用程式,並以重新啟動標識碼作為選擇性參數。 當重新啟動管理員使用重新啟動標識碼時,應用程式可以重新開啟先前開啟的檔並復原自動儲存的檔案。
CCommandLineInfo::ParseParam
架構會呼叫此函式,從命令行剖析/解譯個別參數。 第二個版本與 Unicode 專案中的第一個版本不同。
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
。 如果參數的第一個字元是 -
或 /
,則會將其移除並 bFlag
設定為 TRUE
。 剖析最終參數時, bLast
會設定為 TRUE
。
此函式的預設實作可辨識下列旗標:/p
、、、/dde
/pt
/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