共用方式為


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 檔案名印表機驅動程式埠 將檔案列印至指定的印表機。
app/dde 啟動並等候 DDE 命令。
app/Automation 以 OLE 自動化伺服器的形式啟動。
app/Embedding 開始編輯內嵌的 OLE 專案。
app/Register

app/Regserver
通知應用程式執行任何註冊工作。
app/Unregister

app/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 檔案名印表機驅動程式埠 將檔案列印至指定的印表機。
app/dde 啟動並等候 DDE 命令。
app/Automation 以 OLE 自動化伺服器的形式啟動。
app/Embedding 開始編輯內嵌的 OLE 專案。
app/Register

app/Regserver
通知應用程式執行任何註冊工作。
app/Unregister

app/Unregserver
通知應用程式執行任何未註冊工作。

這項資訊會儲存在 m_bRunAutomatedm_bRunEmbeddedm_nShellCommand 中。 旗標會以正斜線 / 或連字號 - 標示。

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

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

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

另請參閱

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