RemovePrinter (IEpnPrinterList) VC++ Example
void CEPrintDemoView::OnRemovePrinter()
{
IEpnEnhancedOptions * pEnhancedOptions = NULL;
IEpnBatchPrinterInfo * pBatchPrinterInfo;
IEpnPrinterList * pPrintersList;
IEPrint * pLeadPrnt;
HRESULT hr;
int PrinterIndex = 0;
hr = ::CoCreateInstance(CLSID_EPrint, NULL, CLSCTX_ALL, IID_IEPrint, (void**) &pLeadPrnt);
if(FAILED(hr))
return;
hr = ::CoCreateInstance(CLSID_EpnPrinterList, NULL, CLSCTX_ALL, IID_IEpnPrinterList, (void**) &pPrintersList);
if(FAILED(hr))
return;
hr = ::CoCreateInstance(CLSID_EpnBatchPrinterInfo, NULL, CLSCTX_ALL, IID_IEpnBatchPrinterInfo, (void**) &pBatchPrinterInfo);
if(FAILED(hr))
return;
if (pLeadPrnt->IsSupportLocked(SUPPORT_OEM))
pLeadPrnt->UnlockSupport(SUPPORT_OEM,OEM_KEY);
pBatchPrinterInfo->PrinterName="";
pEnhancedOptions=pBatchPrinterInfo->GetEnhancedOptions();
pLeadPrnt->GetDefaultEnhancedOptions(&pEnhancedOptions);
pBatchPrinterInfo->Flags=VALID_ENHANCED_OPTIONS;
PrinterIndex=pPrintersList->GetPrinterIndex(pBatchPrinterInfo);
pPrintersList->RemovePrinter(PrinterIndex);
if(pBatchPrinterInfo)
{
pBatchPrinterInfo->Release();
pBatchPrinterInfo=NULL;
}
if(pPrintersList)
{
pPrintersList->Release();
pPrintersList=NULL;
}
if(pLeadPrnt)
{
pLeadPrnt->Release();
pLeadPrnt=NULL;
}
}