I try to set duplex (two-sided) mode on my printer, but calling SetPrinter()
is not working:
bool SetDuplexMode(HANDLE hPrinter, short duplexMode) {
PRINTER_INFO_2* pInfo = NULL;
DWORD dwNeeded = 0;
GetPrinter(hPrinter, 2, NULL, 0, &dwNeeded);
pInfo = (PRINTER_INFO_2*)malloc(dwNeeded);
if (!GetPrinter(hPrinter, 2, (LPBYTE)pInfo, dwNeeded, &dwNeeded)) {
free(pInfo);
return false;
}
DEVMODE* pDevMode = pInfo->pDevMode;
if (!pDevMode) {
free(pInfo);
return false;
}
pDevMode->dmFields |= DM_DUPLEX;
pDevMode->dmDuplex = duplexMode;
if (!SetPrinter(hPrinter, 2, (LPBYTE)pInfo, 0)) {
std::wcout << L"SetPrinter not working" << L'n';
free(pInfo);
return false;
}
free(pInfo);
return true;
}
I have this message :
SetPrinter not working
1