从Windows服务打印

时间:2018-03-24 22:37:15

标签: c++ service printing

我在Windows服务上打印Microsoft XPS Document Writer。打印完成得很好(没有任何错误)。如果我再次打印它(甚至不是服务)它不打印。在打印队列中,我可以看到我的第一个打印作业(系统)状态为错误,其他作业阻塞购买它。如何正确打印服务? 我使用CreateDC,StartDoc等。

修改

void Print(const std::wstring& path)
{
    ...
    HDC hdcMXDW = CreateDC(L"WINSPOOL", printerName.c_str(), NULL, NULL);
    if (!hdcMXDW)
    {
        return;
    }

    DOCINFO docInfo = {
        sizeof(DOCINFO),
        L"emf_to_xps",
        xpsName.c_str(),
        NULL,
        0
    };

    if (StartDoc(hdcMXDW, &docInfo) > 0)
    {
        if (StartPage(hdcMXDW) > 0)
        {
            ...
            EndPage(hdcMXDW);
        }
        EndDoc(hdcMXDW);
    }
    DeleteDC(hdcMXDW);
}

所有打印Api功能都会返回良好的效果。

1 个答案:

答案 0 :(得分:0)

I fixed this using SetJob with parameter command JOB_CONTROL_DELETE after printing.