Ich habe einige Code, der ein Dokument mit dem System.Drawing.Printing
Namespace druckt. Dies muss jetzt in einen Windows-Dienst verschoben werden. The documentation gibt an, dass dies nicht möglich ist, was meine bisherigen Ergebnisse unterstützen würde (insofern es nicht funktioniert). Ich arbeite unter der Annahme, dass ich dies mit dem Namespace System.Printing
stattdessen arbeiten kann. HierDrucken EMF von einem Windows-Dienst
ist der Code, den ich bisher:
private Metafile myDoc;
myDoc = GetEmfDoc();
PrintServer ps = new PrintServer("\\server1\printer1");
EnumeratedPrintQueueTypes[] flags = { EnumeratedPrintQueueTypes.Local };
PrintQueueCollection queues = ps.GetPrintQueues(flags);
PrintQueue pq = queues.First<PrintQueue>();
pq.AddJob("JobName", ?);
Deshalb möchte ich myDoc
-pq.AddJob()
passieren, aber dies scheint nicht möglich zu sein. Unter Verwendung von System.Drawing.Printing
war es möglich, dies seitenweise im Ereignis PrintDocument.PrintPage
einfach darzustellen.
Ist was ich versuche zu tun, und wenn ja, könnte mir jemand in die richtige Richtung zeigen?
Haben Sie versucht, den Dienst so zu konfigurieren, dass er sich als "Lokales Systemkonto" anmeldet + Aktivieren Sie das Kontrollkästchen "Dienst mit dem Desktop interagieren"? –
Bis jetzt ist dies der nächste, dem ich zu einer Lösung gekommen bin. Die Verwendung von System.Drawing.Printing.PrintDocument funktioniert, wenn dieses Flag gesetzt ist und kein Aufruf von PrintSettings.IsValid erfolgt. –