从Windows服务打印

Printing from windows service

本文关键字:打印 服务 Windows      更新时间:2023-10-16

i在Windows Service上在Microsoft XPS文档作者上打印。打印良好(没有任何错误(。BUF如果我再次在上面打印(甚至不是通过服务(,则不会打印。在打印队列上,我可以看到我的第一个打印作业(系统(具有状态错误,其他作业阻止了它。如何正确从服务打印?我使用CreateC,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功能返回良好结果。

我使用setJob with参数命令job_control_delete在打印后修复了此操作。