Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WritePrinter将原始数据发送到打印机_C#_C++_Winapi_Printing - Fatal编程技术网

C# 使用WritePrinter将原始数据发送到打印机

C# 使用WritePrinter将原始数据发送到打印机,c#,c++,winapi,printing,C#,C++,Winapi,Printing,我正在尝试将原始字节发送到打印机。我试过各种各样的打印机,但似乎都没用OpenPrinter返回一个有效句柄,并且StartDocPrinter和StartPagePrinter都成功。即使是WritePrinter也会成功写入,写入的字节数与传入的字节数相同,并且打印作业会出现在后台打印程序窗口中。所有这些看起来都很成功,但仍然没有印刷出来 我知道将原始字节写入打印机实际上是特定于打印机的,所以我尝试打印到一个文件,并将这些文件的内容发送到WritePrinter。所有显示都很好,仍然没有打印

我正在尝试将原始字节发送到打印机。我试过各种各样的打印机,但似乎都没用
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);
}

[编辑]打印机:佳能iP4200

代码没有明显错误。没有记录打印机品牌和型号是错误的。编辑问题。打印机为佳能iP4200。为什么现在就投票关闭?您需要用打印机能理解的语言在
str
中完整地传递打印机特定的配置信息……使用如此便宜的打印机可能不容易。@SixlettVariables:PRN不是有效的数据类型,除非打印机有自己的支持它的打印处理器。标准Windows数据类型的示例有RAW、TEXT、NT EMF 1.003等。prn只是“打印到文件”的默认文件扩展名。它不是数据类型。@wpfwanabe:转到打印机属性,高级选项卡,打印处理器。查看数据类型设置为什么。在docInfo结构中将您的设置为匹配。