2012-06-26 22 views
5

Ho un'applicazione .net 2.0 (C#) con un componente in esecuzione come servizio e un'interfaccia utente per la configurazione del servizio.Come posso sapere se una stampante stamperà su file?

L'interfaccia utente consente all'utente di selezionare una stampante che verrà utilizzata dal servizio.

Desidero che l'interfaccia utente estrae tutte le stampanti configurate per la stampa su file perché questi pritner causeranno problemi per il servizio (verrà visualizzata una finestra di dialogo "Salva con nome" ma la finestra di dialogo è invisibile perché appartiene al servizio) .

Il problema è che non riesco a trovare alcun metodo per rilevare una stampante che è impostata per la stampa su file.

System.Drawing.Printing.PrinterSettings ha una proprietà denominata PrintToFile, ma è sempre impostata su false!

+1

E una stampante autentica potrebbe visualizzare "carica più carta", in pratica qualsiasi stampante * potrebbe * voler visualizzare l'interfaccia utente. –

+0

Sì, la mia stampante per cannonate ama spuntare qualche barra di avanzamento e finestre di dialogo –

+0

Aggiunta alla quale, credo che la maggior parte delle stampanti siano installate su base per utente - mentre i servizi tendono a girare sotto gli account macchina - quindi il servizio potrebbe non avere accesso alla stampante Comunque. –

risposta

1

PrinterSettings.PrintToFile può essere impostato solo dalla classe System.Windows.Forms.Printing.PrintDialog. L'opzione Stampa su file viene visualizzata solo su System.Windows.Forms.Printing.PrintDialog quando la proprietà System.Windows.Forms.Printing.PrintDialog.AllowPrintToFile è impostata su true.

Spero che questo risolva il tuo problema.

+0

Grazie per il tuo suggerimento, ma non mi aiuta. Devo sapere se una stampante è già stata configurata, tramite le proprietà della stampante, per stampare su file. E ho bisogno di farlo prima di inviare un nuovo lavoro di stampa. Inoltre, ci sono applicazioni 'là fuori' che aggiungono una stampante virtuale per la stampa in PDF - Mi piacerebbe sapere come posso rilevarle anche io! Dalle risposte finora, sembra che non possa essere fatto. – user1483326

+0

Per prima cosa prendi la seconda parte della tua domanda: Utilizza la proprietà 'System.Drawing.Printing.PrinterSettings.installedprinters'. Ottiene una raccolta di stampanti installate. È possibile utilizzare la raccolta di nomi di stampanti installate per fornire all'utente una scelta di stampanti su cui stampare. Per la prima parte della tua domanda, controlla la classe PrinterSettings se funziona per te. – mrd

Problemi correlati