IPublishingWizard 介面 (shobjidl.h)
公開使用 [在線列印精靈]、[Web 發行精靈] 和 [新增網络位置精靈] 的方法。 在 Windows Vista 中, IPublishingWizard 不再支援 Web 發佈精靈或在線列印精靈。
繼承
IPublishingWizard 介面繼承自 IWizardExtension。 IPublishingWizard 也有下列類型的成員:
方法
IPublishingWizard 介面具有這些方法。
IPublishingWizard::GetTransferManifest 取得發佈精靈所執行之檔案傳輸作業的傳輸指令清單,例如 [在線列印精靈] 或 [新增網络位置精靈]。 |
IPublishingWizard::Initialize 使用要傳送的檔案、要使用的設定,以及要建立的精靈類型,初始化發行精靈物件。 |
備註
在線列印精靈是在線訂購相片列印的精靈。 Windows Vista 不再支援 使用 IPublishingWizard 來使用在線列印精靈。
[新增網络位置精靈] 可讓使用者在 Windows XP) 或 Windows Vista) 的計算機 (中,建立 [我的網络] Places (中的網络資源快捷方式。
Windows Shell 提供 一個發行精靈物件 ,可實作 IPublishingWizard 和 IWizardExtension。 IPublishingWizard 的方法可用來初始化精靈的類型、設定精靈的特定屬性,以及擷取傳輸指令清單。 IWizardExtension 的方法可用來擷取組成所選取精靈主體的延伸模組頁面。 若要具現化 發行精靈物件,請呼叫 CoCreateInstance 並使用類別標識碼 (CLSID) CLSID_PublishingWizard,並IID_IPublishingWizard作為 REFIID。
IPublishingWizard *pPublish = NULL;
HRESULT hr = CoCreateInstance(CLSID_PublishingWizard,
NULL,
CLSCTX_INPROC_SERVER,
IID_IPublishingWizard,
(LPVOID*)&pPublish);
一旦具現化 發行精靈物件 ,請呼叫 IPublishingWizard::Initialize 來初始化 發行精靈物件。
// Initializing the Online Print Wizard
hr = pPublish->Initialize(pDataObject,
SHPWHF_NOFILESELECTOR,
L"InternetPhotoPrinting");
// pDataObject: A data object that represents files or folders to transfer.
// SHPWHF_NOFILESELECTOR: This flag must be set.
// L"InternetPhotoPrinting": Display the Online Print Wizard.
請注意 ,IPublishingWizard::Initialize 實際上不會顯示精靈。 若要顯示 [在線列印精靈],您必須建立 PROPSHEETHEADER 結構,然後修改其 phpage 成員,以包含 IWizardExtension::AddPages 傳回的 PROPSHEETPAGE 句柄數位。 IWizardExtension::AddPages 是由實作 IPublishingWizard 的相同發行精靈物件所實作。
如果顯示在線列印精靈,應該在包含擴充頁面之 PROPSHEETHEADER 結構的 dwFlags 成員中設定PSH_NOMARGIN旗標。
除了從 IWizardExtension::AddPages 擷取的延伸模組頁面之外, phpage 陣列應該包含起始頁、取消頁面,以及應用程式所提供的完成頁面。 當使用者退出或取消延伸模組時,或擴充功能完成顯示其頁面時,延伸模組接著會與精靈通訊,指出它必須從擴充功能頁面堆疊巡覽至其中一個應用程式提供的頁面。 您的應用程式必須提供 IWizardSite 的實作來處理此通訊。 IPublishingWizard 物件的月台必須設定為 IWizardSite 實作。 IUnknown_SetSite函式可用來設定月臺。 一旦您的應用程式使用 IPublishingWizard::Initialize 指定精靈設定,並正確填入 PROPSHEETHEADER 結構的 phpage 成員,並將網站設定為 IWizardSite 的實作,精靈可能會藉由呼叫 PropertySheet 函式來顯示。
/* This is example code demonstrating how to populate a PROPSHEETHEADER
structure and use it to display the Online Print Wizard.
This sample assumes that the PublishingWizard object has already
been instantiated and initialized elsewhere in the application. */
// Define the number of wizard pages that we expect to get from
// the Publishing Wizard object.
// The Online Print Wizard provides 6 predefined pages in Windows Vista,
// but provided 9 in Windows XP.
#if NTDDI_VERSION >= NTDDI_VISTA
#define NUMPAGES 6
#else
#define NUMPAGES 9
#endif
// Number of wizard pages supplied by the application in addition to
// the predefined pages supplied by the Online Print Wizard.
#define NUMNONEXTENSIONPAGES 3
// Array to hold the property sheets to display in the wizard,
// including both those returned by IPublishingWizard::AddPages()
// and those application-defined pages returned by IWizardSite methods.
HPROPSHEETPAGE hPropSheets[NUMPAGES + NUMNONEXTENSIONPAGES];
// Handles to the application-defined property sheets.
// This example assumes that they are initialized elsewhere in the application.
HPROPSHEETPAGE hPropSheetFinishPage = CreateFinishPage;
HPROPSHEETPAGE hPropSheetStartPage = CreateStartPage;
HPROPSHEETPAGE hPropSheetCanceledPage = CreateCanceledPage;
// Number of property sheets returned by IPublishingWizard::AddPages().
UINT uCount = 0;
INT_PTR retval = 0; // return value from PropertySheet
HRESULT hr;
// Property sheet header structure whose phpage member will receive
// the array of wizard pages retrieved from AddPages.
PROPSHEETHEADER psh;
psh.dwSize = sizeof(PROPSHEETHEADER);
// Set the PublishingWizard object's site to an IWizardSite implementation
// defined by your application.
hr = IUnknown_SetSite(pIPublish, (IUnknown *)pWizSite);
// Fill the hPropSheets array with the pages of the wizard.
if SUCCEEDED(hr)
{
hr = pIPublish->AddPages(&hPropSheets[0], NUMPAGES, &uCount);
}
if SUCCEEDED(hr)
{
// Define start, finish, and canceled pages elsewhere in your application.
// Here, these pages are added after the extension pages.
hPropSheets[uCount] = hPropSheetFinishPage;
hPropSheets[uCount + 1] = hPropSheetCanceledPage;
hPropSheets[uCount + 2] = hPropSheetStartPage;
// Assign the array of property sheets.
psh.phpage = hPropSheets;
// Number of extension pages from AddPages + # of your own pages.
psh.nPages = uCount + NUMNONEXTENSIONPAGES;
// The index into phpage where the first page to display is located.
psh.nStartPage = 0;
// PSH_NOMARGIN must be specified for the Online Print Wizard.
psh.dwFlags = PSH_AEROWIZARD | PSH_WIZARD | PSH_NOMARGIN;
psh.hwndParent = NULL;
psh.hInstance = NULL;
// Display the wizard.
PropertySheet(&psh);
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP、Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | shobjidl.h |