共用方式為


線上列印精靈

Windows Vista Online 列印精靈可協助使用者訂購參與線上列印零售商的相片列印。 此精靈的設計目的是要讓使用者能夠訂購相片列印的任何應用程式,以程式設計方式叫用此精靈。 [相片列印精靈] 可在 Windows Vista 上使用。 適用于 Windows 的 PIX

線上列印精靈所提供的功能

Windows Vista Online 列印精靈可讓使用者從參與線上列印零售商的選取範圍訂購列印。 叫用時,精靈:

  1. 接受要排序列印的檔案或檔案清單。
  2. 自動擷取目前參與線上列印零售商的清單,並讓使用者選取要從中購買相片列印的零售商。
  3. 引導使用者完成程式或訂購列印。

任何應用程式都可以受益于 Windows Vista Online 列印精靈所提供的功能。 應用程式只需要傳入將排序列印的檔案或檔案,精靈會引導使用者完成排序程式。

下圖顯示 Windows Vista 線上列印精靈,其中顯示參與線上列印零售商的範例清單。

Windows vista 線上列印精靈

支援的相片檔案格式

Windows Vista Online 列印精靈支援安裝 WINDOWS 映射元件 (WIC) 編解碼器的任何圖像檔案格式。 WIC 提供數個標準編解碼器,包括:

  • 點陣圖 (BMP)
  • 圖形交換格式 (GIF)
  • 圖示格式 (ICO)
  • JPEG 格式 (JPEG)
  • 可攜式網路圖形 (PNG)
  • 標記的影像檔案格式 (TIFF)
  • Windows 媒體相片格式

如需 WIC 和 WIC 編解碼器的詳細資訊,請參閱 Windows 映像處理元件

線上列印零售商支援的檔案格式會因零售商而異;特定零售商可能不支援 Windows Vista Online 列印精靈支援的所有檔案格式。 如果使用者嘗試以所選零售商不支援的格式訂購列印,Windows Vista Online 列印精靈會通知使用者選取的零售商不支援提交的檔案格式。

以程式設計方式啟動線上列印精靈

若要叫用 Windows Vista Online 列印精靈,請使用下列類別識別碼呼叫 IDropTarget 介面, (CLSID) :

CLSID_PublishDropTarget

此 CLSID 定義于 Shobjidl.h 和 Shobjidl.idl 中。 Windows Vista 線上列印精靈所要處理的檔案是在 IDataObject 物件中指定。

下列程式碼範例示範如何叫用 Windows Vista Online 列印精靈。

// A data object that contains the list of photos to print.
IDataObject* pDataObject;

// Create the Photo Printing Wizard drop target.
CComPtr<IDropTarget> spDropTarget;
        
hr = CoCreateInstance(CLSID_PublishDropTarget,
                      NULL,
                      CLSCTX_INPROC_SERVER,
                      IID_PPV_ARGS(&spDropTarget));

// Drop the data object onto the drop target.
POINTL pt = {0};
DWORD dwEffect = DROPEFFECT_LINK | DROPEFFECT_MOVE | DROPEFFECT_COPY;

spDropTarget->DragEnter(pDataObject, MK_LBUTTON, pt, &dwEffect);

spDropTarget->Drop(pDataObject, MK_LBUTTON, pt, &dwEffect);}

存取線上列印精靈圖示

Windows Vista Online 列印精靈會匯出可由呼叫它的應用程式存取和顯示的圖示。 下圖顯示 Windows Vista Online 列印精靈圖示。

windows vista online 列印精靈圖示

下列程式碼範例示範如何讀取 OPWIcon 屬性來擷取 Windows Vista Online 列印精靈圖示的索引。

// Create the Online Printing Wizard drop target.
CComPtr<IDropTarget> spDropTarget;
        
HRESULT hr = CoCreateInstance(CLSID_PublishDropTarget,
                              NULL,
                              CLSCTX_INPROC_SERVER,
                              IID_PPV_ARGS(&spDropTarget));

// Get the Online Printing Wizard properties.
CComPtr<IPropertyBag> spPropsBag;

spDropTarget->QueryInterface(IID_PPV_ARGS(&spPropsBag));

// Read the icon index from the properties set. 
CComVariant vtIcon;
int nIndex;
hr = spPropsBag->Read(L"OPWIcon", &vtIcon, NULL);

if SUCCEEDED(hr)
{
    nIndex = vtIcon.lVal;
}

線上列印精靈 MRU 屬性

Windows Vista Online 列印精靈會定義三個與最近使用 (MRU) 線上列印零售商相關的屬性。

屬性名稱 屬性值/函式
MRUIcon 您可以從此屬性讀取最近使用之線上列印零售商的圖示索引。
MRUName 您可以從此屬性讀取最近使用之線上列印零售商的名稱。
UseMRU VARIANTVT_BOOL值,指出精靈是否應該略過線上列印零售商選取頁面,並只改用最近使用的線上列印零售商。 將此屬性設定為 VARIANT_TRUE 略過零售商選取頁面。

 

下列程式碼範例示範如何設定 UseMRU 屬性,讓 Windows Vista Online 列印精靈略過線上列印零售商選取頁面,並自動選取最近使用的零售商。

// A data object that contains the list of photos to order prints for.
IDataObject* pDataObject;

// Create the Online Printing Wizard drop target.
CComPtr<IDropTarget> spDropTarget;
        
HRESULT hr = CoCreateInstance(CLSID_PublishDropTarget,
                              NULL,
                              CLSCTX_INPROC_SERVER,
                              IID_PPV_ARGS(&spDropTarget));

// Set the UserMRU property to true to skip retailer selection and use 
// the MRU retailer instead.    
CComQIPtr<IPropertyBag> spPropsBag(spDropTarget);
if(spPropsBag) 
{
    VARIANT varTrue = {0};
    varTrue.vt = VT_BOOL;
    varTrue.boolVal = VARIANT_TRUE;
    spPropsBag->Write(L"UseMRU", &varTrue);
}

// Drop the data object onto the drop target.
POINTL pt = {0};
DWORD dwEffect = DROPEFFECT_LINK | DROPEFFECT_MOVE | DROPEFFECT_COPY;

spDropTarget->DragEnter(pDataObject, MK_LBUTTON, pt, &dwEffect);

spDropTarget->Drop(pDataObject, MK_LBUTTON, pt, &dwEffect);

下列程式碼範例示範如何讀取 MRUName 和 MRUIcon 屬性。

// Create the Online Printing Wizard drop target.
CComPtr<IDropTarget> spDropTarget;
        
HRESULT hr = CoCreateInstance(CLSID_PublishDropTarget,
                              NULL,
                              CLSCTX_INPROC_SERVER,
                              IID_PPV_ARGS(&spDropTarget));

// Get the Online Printing Wizard properties.
CComPtr<IPropertyBag> spPropsBag;
spDropTarget->QueryInterface(IID_PPV_ARGS(&spPropsBag));

CComVariant vtMRUName, vtMRUIconIndex;
CComBSTR bstrMRUName;
int nMRUIconIndex;

// Get the MRU name value.
hr = spPropsBag->Read(L"MRUName", &vtMRUName, NULL);
if SUCCEEDED(hr) 
{
    bstrMRUName = vtMRUName.bstrVal;
}

// Get the MRU icon index value.
hr = spPropsBag->Read(L"MRUIcon", &vtMRUIconIndex, NULL);
if SUCCEEDED(hr)
{
    nMRUIconIndex = vtMRUIconIndex.lVal;
}