分享方式:


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 以處理新的旗標。

繼承階層架構

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為 ,這表示啟動期間應該顯示此應用程式的啟動顯示畫面。 如果 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::FileNothingProcessShellCommandInitInstance( ) 所有 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_bRunAutomatedm_bRunEmbeddedm_nShellCommand中。 旗標會以正斜線 / 或連字元 -標示。

預設實作會將第一個非旗標參數放入 m_strFileName。 在旗標的情況下,預設實作 /pt 會將第二個、第三個和第四個非旗標參數 m_strPrinterName分別放入 、 m_strDriverNamem_strPortName

預設實作也只會在新檔案的情況下設定 m_bShowSplashTRUE 。 在新檔案的情況下,用戶已採取涉及應用程式本身的動作。 在任何其他情況下,包括使用殼層開啟現有的檔案,用戶動作會直接牽涉到檔案。 在以檔為中心的觀點中,啟動顯示畫面不需要宣佈應用程式啟動。

覆寫衍生類別中的這個函式,以處理其他旗標和參數值。

另請參閱

CObject 類別
階層架構圖表
CWinApp::ParseCommandLine
CWinApp::ProcessShellCommand