2011-05-30 48 views
6

我正在更新我們的「打印機監控」應用程序。以前,此應用程序在Windows 2000服務器上成功運行。現在我們轉向Windows 7服務器。在Windows 7上,我們的「打印監視器」應用程序崩潰。當我調試它,我發現我們SetJob函數拋出了以下異常:Windows打印機假脫機程序setjob功能不適用於Windows 7?

參數不正確。

有沒有人知道這件事?

函數調用:

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

後臺程序的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 
+0

該API調用在Windows7上未更改。該異常通常意味着您要麼有一個無效的JobId,要麼JobId沒有與該打印機句柄關聯。從Windows Vista開始,MS引入了客戶端渲染(CSR)以提高打印效率,這可能會導致作業通過假脫機程序多次運行,也可能是其他地方的某些其他錯誤導致不匹配。 – BBoy 2011-06-30 22:33:18

+1

當您說「Windows 7 Server」時,我們可以假設您的意思是「Windows Server 2008 R2」?我假設基於標籤。 – 2012-05-10 18:54:25

+1

您是否在事件日誌中獲得了提供事件id的條目? – 2012-05-10 19:00:02

回答

相關問題