vb.net - Windows 打印机后台处理程序 setjob 功能不适用于 Windows-7?

标签 vb.net .net-4.0 windows-server-2008-r2 spooler

我正在更新我们的“打印机监控”应用程序。以前该应用程序可以在 Windows 2000 服务器上成功运行。现在我们转向 Windows 7 服务器。在 Windows 7 上,我们的“打印监视器”应用程序崩溃。当我调试它时,我发现我们的 SetJob 函数抛出以下异常:

The parameter is incorrect.

有人知道这件事吗?

函数调用:

SetJob(
    mhPrinter,
    midJob,
    0,
    IntPtr.Zero,
    PrintJobControlCommands.JOB_CONTROL_PAUSE) 'Here exception is thrown

我们使用的Spooler API:

<DllImport("winspool.drv", EntryPoint:="SetJob", _

SetLastError:=True, CharSet:=CharSet.Ansi, _

ExactSpelling:=False, _

CallingConvention:=CallingConvention.StdCall)> _

Public Function SetJob _

(<InAttribute()> ByVal hPrinter As IntPtr, _

<InAttribute()> ByVal dwJobId As Int32, _

<InAttribute()> ByVal Level As Int32, _

<InAttribute()> ByVal lpJob As IntPtr, _

<InAttribute(), MarshalAs(UnmanagedType.U4)> ByVal dwCommand As PrintJobControlCommands _

) As Boolean

最佳答案

请在这里有一个循环,如何构建函数以及如何调用参数计:

http://www.pinvoke.net/default.aspx/winspool.setjob

它与您实现的有点不同。希望它会有所帮助。

关于vb.net - Windows 打印机后台处理程序 setjob 功能不适用于 Windows-7?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6176977/

相关文章:

c# - 如何在控件的 ArrayList 上正确使用 Contains 方法?

python - 将 Excel VBA 脚本转换为 Python

c# - 方法 'Boolean Contains..' 没有支持的 SQL 转换

c# - 在 Windows Server 2008 R2 上运行 C# 应用程序时出现 KERNELBASE.dll 错误?

asp.net - asp :FileUpload has no file(flUploadDoc. HasFile = false) 第一次回发

c# - &H57 代表什么以及如何将其翻译为 C#?

c# - 使用 block 从内部返回一次性对象

asp.net - 在 IIS 7.5 Express 中使用 ASP.Net 预加载器

iis-7 - 使用 Powershell 3.0 在 2008 R2 和 IIS7 中启用/禁用处理程序映射

powershell - 如何使用 Powershell 设置时区