2011-05-30 19 views
6

"Yazıcı İzleme" uygulamamı güncelliyorum. Önceden bu uygulama, Windows 2000 sunucusunda başarıyla çalışır. Şimdi Windows 7 sunucusuna geçtik. Windows 7'de "Print monitor" uygulamanız çöküyor. Hata ayıkladığımda, SetJob işlevimizin aşağıdaki özel durumu oluşturduğunu buldum:Windows yazıcı biriktiricisi setjob işlevi Windows 7'de çalışmıyor mu?

Parametre yanlış.

Bu konuda herhangi bir şey bilen var mı?

Fonksiyon çağrısı: işlev inşa edilmelidir ve parsmeters denir nasıl nasıl

<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

Windows7'de bu API çağrısı değişmedi. Bu istisna genellikle, geçersiz bir JobId değerine sahip olduğunuz veya JobId'in bu Yazıcı tanıtıcısıyla ilişkili olmadığı anlamına gelir. Windows Vista'dan itibaren MS, baskı verimliliğini artırmak için Client Side Rendering'i (CSR) tanıttı; bu, biriktirici üzerinden birçok kez çalışan işlerin görünmesine neden olabilir, belki kodunuzda başka bir hata vardır ve başka bir yanlış eşleşmeye neden olabilir. – BBoy

+1

"Windows 7 Server" dediğiniz zaman "Windows Server 2008 R2" demek istediniz mi? Etikete dayanarak varsayıyorum. –

+1

Etkinlik günlüğünde etkinlik kimlikleri sağlayan girişler var mı? –

cevap

0

burada bir döngü var Lütfen: Kullandığımız

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

Biriktirme API

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

Biraz farklı, sonra uyguladınız. Umarım yardımcı olur.