Я пытаюсь отправить необработанные байты на принтер. Я пробовал различные принтеры, и ничего не работает. OpenPrinter
возвращает действительный дескриптор, и StartDocPrinter
и StartPagePrinter
успешны. Даже WritePrinter
завершается успешно и записывает столько байтов, сколько было передано, и задание печати появляется в окне диспетчера очереди печати. Все выглядит как успех, и все равно ничего не печатается.
Я знаю, что запись необработанных байтов на принтер действительно зависит от принтера, поэтому я попытался распечатать в файл и отправить содержимое этого файла на WritePrinter
. Все выглядит нормально и все еще нет распечатки. Что может быть не так? Все примеры кода, которые я нашел до сих пор, делают это на 100% так же, как и я. Вот код:
if (OpenPrinter(printerName, &printer, NULL))
{
DOC_INFO_1 docInfo = {L"Print Job", NULL, L"RAW"};
DWORD printJob = StartDocPrinter(printer, 1, (LPBYTE) &docInfo);
if (printJob != 0)
{
if (StartPagePrinter(printer))
{
DWORD written = 0;
if (WritePrinter(printer, (LPVOID) (LPCSTR) str, str.GetLength(), &written))
{
}
EndPagePrinter(printer);
}
EndDocPrinter(printer);
}
ClosePrinter(printer);
}
[Редактировать] Принтер: Canon iP4200