首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据打印机的状态获取打印机详细信息

根据打印机的状态获取打印机详细信息
EN

Stack Overflow用户
提问于 2015-05-23 06:22:35
回答 1查看 1.1K关注 0票数 1

使用管理工具()在VC++中可以找到类似于SystemInfo的系统名称和其他属性。

GetComputerName示例:

代码语言:javascript
复制
BOOL WINAPI GetComputerName(
  _Out_   LPTSTR  lpBuffer,
  _Inout_ LPDWORD lpnSize
);

我的系统中有3台打印机,1台热敏打印机和2台共享打印机,

如何获得有关脱机打印机的信息?

如何根据打印机的状态对打印机进行分类/列表?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-23 20:33:14

另见EnumPrinters

代码语言:javascript
复制
DWORD flags = PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS;
DWORD bufsize, printerCount;
DWORD level = 2; //2 is for PRINTER_INFO_2

::EnumPrinters(flags, NULL, level, NULL, 0, &bufsize, &printerCount);
if (bufsize)
{
    BYTE* buffer = new BYTE[bufsize];
    ::EnumPrinters(flags, NULL, level, buffer, bufsize, &bufsize, &printerCount);

    if (bufsize && printerCount)
    {
        const PRINTER_INFO_2* info = (PRINTER_INFO_2*)buffer;
        for (DWORD i = 0; i < printerCount; i++)
        {
            if (info->pServerName)  cout << "pServerName: " << info->pServerName << endl;
            if (info->pPrinterName) cout << "pPrinterName: " << info->pPrinterName << endl;
            if (info->pShareName) cout << "pShareName: " << info->pShareName << endl;
            if (info->pPortName) cout << "pPortName: " << info->pPortName << endl;
            if (info->Attributes & PRINTER_ATTRIBUTE_LOCAL) cout << "[local]\n";
            if (info->Attributes & PRINTER_ATTRIBUTE_NETWORK) cout << "[network]\n";

            wcout << "status: " << info->Status << endl;
            if (info->Status & PRINTER_STATUS_ERROR) cout << "status: error\n";

            wcout << endl;
            info++;
        }
    }
    delete[] buffer;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30409596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档