DWORD dwFlags = PRINTER_ENUM_FAVORITE | PRINTER_ENUM_LOCAL;
LPPRINTER_INFO_2 pPrinters;
DWORD cbPrinters;
DWORD cReturned, i;
EnumPrinters (dwFlags, NULL, 2, NULL, 0, &cbPrinters,&cReturned);
if (!(pPrinters = (LPPRINTER_INFO_2) LocalAlloc (LPTR, cbPrinters + 4)))
return false;
if (!EnumPrinters (dwFlags, NULL, 2, (LPBYTE) pPrinters,
cbPrinters, &cbPrinters, &cReturned))
{
LocalFree (LocalHandle (pPrinters));
return false;
}
if (cReturned > 0)
{
for (i = 0; i < cReturned; i++)
{
AfxMessageBox((pPrinters + i)->pPrinterName);
if(strstr((pPrinters + i)->pPrinterName,"PDF")!=0 && strstr((pPrinters + i)->pPrinterName,"Writer")<=0)
{
m_sNewPrinter = "Adobe PDF";
return true;
}
}
for (i = 0; i < cReturned; i++)
{
if(strstr((pPrinters + i)->pPrinterName,"Acrobat Distiller")!=0 && m_sNewPrinter==""){
m_sNewPrinter = "Acrobat Distiller";
return true;
}
}
}
LocalFree (LocalHandle (pPrinters));
return false;
LPPRINTER_INFO_2 pPrinters;
DWORD cbPrinters;
DWORD cReturned, i;
EnumPrinters (dwFlags, NULL, 2, NULL, 0, &cbPrinters,&cReturned);
if (!(pPrinters = (LPPRINTER_INFO_2) LocalAlloc (LPTR, cbPrinters + 4)))
return false;
if (!EnumPrinters (dwFlags, NULL, 2, (LPBYTE) pPrinters,
cbPrinters, &cbPrinters, &cReturned))
{
LocalFree (LocalHandle (pPrinters));
return false;
}
if (cReturned > 0)
{
for (i = 0; i < cReturned; i++)
{
AfxMessageBox((pPrinters + i)->pPrinterName);
if(strstr((pPrinters + i)->pPrinterName,"PDF")!=0 && strstr((pPrinters + i)->pPrinterName,"Writer")<=0)
{
m_sNewPrinter = "Adobe PDF";
return true;
}
}
for (i = 0; i < cReturned; i++)
{
if(strstr((pPrinters + i)->pPrinterName,"Acrobat Distiller")!=0 && m_sNewPrinter==""){
m_sNewPrinter = "Acrobat Distiller";
return true;
}
}
}
LocalFree (LocalHandle (pPrinters));
return false;
博客代码通过枚举本地和常用打印机,查找Adobe相关打印机。先分配内存,再次枚举打印机,遍历结果,若找到含'PDF'且不含'Writer'的打印机,设置为'Adobe PDF';若找到'Acrobat Distiller'且之前未设置,则设置为该值。

1911

被折叠的 条评论
为什么被折叠?



