Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

38 lines
1.3 KiB

#include "shellprv.h"
#pragma hdrstop
#include "printer.h"
// PRINTUI.DLL calls this export to load shell exts registered for this printer
STDAPI_(void) Printer_AddPrinterPropPages(LPCTSTR pszPrinterName, LPPROPSHEETHEADER lpsh)
{
// Add hooked pages if they exist in the registry
HKEY hkeyBaseProgID = NULL;
RegOpenKeyEx(HKEY_CLASSES_ROOT, c_szPrinters, 0, KEY_QUERY_VALUE, &hkeyBaseProgID);
if (hkeyBaseProgID)
{
// we need an IDataObject
LPITEMIDLIST pidl;
HRESULT hr = ParsePrinterNameEx(pszPrinterName, &pidl, TRUE, 0, 0);
if (SUCCEEDED(hr))
{
IDataObject *pdtobj;
hr = SHGetUIObjectFromFullPIDL(pidl, NULL, IID_PPV_ARG(IDataObject, &pdtobj));
if (SUCCEEDED(hr))
{
// add the hooked pages
HDCA hdca = DCA_Create();
if (hdca)
{
DCA_AddItemsFromKey(hdca, hkeyBaseProgID, STRREG_SHEX_PROPSHEET);
DCA_AppendClassSheetInfo(hdca, hkeyBaseProgID, lpsh, pdtobj);
DCA_Destroy(hdca);
}
pdtobj->lpVtbl->Release(pdtobj);
}
ILFree(pidl);
}
RegCloseKey(hkeyBaseProgID);
}
}