[C++] 纯文本查看 复制代码
HANDLE hPrinter;
TCHAR szPrinterName[] = _T("打印机名称~");
OpenPrinter(szPrinterName, &hPrinter, NULL);
DWORD dwNeeded = 0;
GetPrinter(hPrinter, 2, NULL, 0, &dwNeeded);
PRINTER_INFO_2* pPrinterInfo = (PRINTER_INFO_2*)malloc(dwNeeded);
if (pPrinterInfo)
{
if (GetPrinter(hPrinter, 2, (LPBYTE)pPrinterInfo, dwNeeded, &dwNeeded))
{
_tprintf(_T("Printer Name: %s\n"), pPrinterInfo->pPrinterName);
_tprintf(_T("Driver Name: %s\n"), pPrinterInfo->pDriverName);
_tprintf(_T("Port Name: %s\n"), pPrinterInfo->pPortName);
}
free(pPrinterInfo);
}
ClosePrinter(hPrinter);
[C++] 纯文本查看 复制代码
#include <iostream>
#include <windows.h>
int main()
{
// 获取默认打印机名称大小
DWORD printerNameSize = 0;
GetDefaultPrinter(NULL, &printerNameSize);
// 分配缓冲区存储打印机名称
LPWSTR printerName = new WCHAR[printerNameSize];
if (!GetDefaultPrinter(printerName, &printerNameSize))
{
std::cout << "获取默认打印机失败: " << GetLastError() << std::endl;
return 1;
}
std::wcout << "默认打印机名称: " << printerName << std::endl;
delete[] printerName;
// 获取打印机信息
PRINTER_INFO_2* pPrinterInfo = NULL;
DWORD bytesNeeded = 0;
if (!GetPrinter(NULL, 2, (LPBYTE)pPrinterInfo, 0, &bytesNeeded) && GetLastError() != ERROR_INSUFFICIENT_BUFFER)
{
std::cout << "获取打印机信息失败: " << GetLastError() << std::endl;
return 1;
}
pPrinterInfo = (PRINTER_INFO_2*) new BYTE[bytesNeeded];
if (!GetPrinter(NULL, 2, (LPBYTE)pPrinterInfo, bytesNeeded, &bytesNeeded))
{
std::cout << "获取打印机信息失败: " << GetLastError() << std::endl;
delete[] pPrinterInfo;
return 1;
}
std::wcout << "打印机驱动名称: " << pPrinterInfo->pDriverName << std::endl;
std::wcout << "打印机端口名称: " << pPrinterInfo->pPortName << std::endl;
delete[] pPrinterInfo;
return 0;
}