Ошибка DV_E_FORMATETC при запросе CFSTR_PRINTERGROUP — Windows 7

У WI есть расширение оболочки Windows, которое добавляет пункты меню в меню принтера, когда принтер щелкнут правой кнопкой мыши. Код отлично работает в Windows 2000, XP, Vista, но в Windows 7 вызов GetData() завершается с ошибкой DV_E_FORMATETC. Я нашел различные темы по этому поводу, но все они, похоже, связаны с VB/asp. Структуры FORMATETC и STGMEDIUM инициализируются следующим образом.

STGMEDIUM medium = {TYMED_HGLOBAL, {0}, 0};
FORMATETC fmte  = {(unsigned short)RegisterClipboardFormat(CFSTR_PRINTERGROUP), 
                   NULL, 
                   DVASPECT_CONTENT, 
                   -1, 
                   TYMED_HGLOBAL};
<snip>
hrc = pDataObj->GetData(&fmte, &medium);
if (FAILED(hrc))
{
   hrc is DV_E_FORMATETC 

person Jon    schedule 28.06.2010    source источник


Ответы (1)


Я нашел http://blogs.msdn.com/b/asklar/archive/2009/10/21/getting-the-printer-friendly-name-from-the-device-center-shell-folder.aspx, который, похоже, отвечает на этот вопрос.

person Jon    schedule 28.06.2010