2009-06-19 3 views
18

Voglio creare un driver di stampante virtuale per Windows. Dove dovrei iniziare? Il WDK ha alcuni esempi di driver di stampa, ma nulla che io possa usare. MSDN non sembra essere molto utile.Come creare una stampante virtuale in Windows?

Ci sono un sacco di stampanti virtuali per Windows (in genere generano PDF), come fanno?

Sono apprezzati tutti i collegamenti alla documentazione che sembra mancare.

Grazie.

+2

Si potrebbe ottenere più aiuto se ha detto che problema hai, che non è oggetto dei driver di esempio. –

+1

Sono un buon punto di partenza se si vogliono sviluppare driver "reali" ma non sono così utili se tutto ciò che serve sono driver "virtuali", non basati su hardware. L'esempio bitmap è il più utile, però. – Terminus

risposta

11

Quando l'ho fatto (che circa 12 anni fa) ho iniziato con l'esempio del driver postscript, ho sostituito tutti gli elementi specifici di postscript (nel mio caso, per scrivere in un bitmap invece di generare comandi postscript).

Ho anche scritto un monitor di stampa personalizzato (il driver scrive nello spooler, che scrive su un monitor): il mio monitor ha scritto su un file invece che ad es. alla porta parallela.

Tuttavia, l'architettura del driver di stampa e/o il set di driver di esempio potrebbero essere cambiati da allora.

+0

Spazio utente solo in post-Vista - Devo supportare Windows 2000. – Terminus

2

Uno dei piloti che hai citato è open-source (GPL), forse si potrebbe esplorare la sua origine o adattarlo: http://www.pdfforge.org/products/pdfcreator/download

+0

Sfortunatamente (la maggior parte?) È scritto in Visual Basic. Se ce ne fosse uno scritto in C/C++ ... :-). – Terminus

+0

Potrebbe non essere il driver della stampante; le sue directory come "Versione 0.9.8 \ Printer \ Adobe \ WinXP2k3-x86 \ English" sono vuote, per quanto posso vedere, ad eccezione di un readme. Forse il VB è una sorta di front end per GhostScript, disponibile separatamente. – ChrisW

+0

Il contenuto di "Versione 0.9.8 \ Stampante \ Adobe \ WinXP2k3-x86 \ Inglese \ readme.txt" è "psui.dll", "pscript5.dll" e "pscript.hlp"; questi nomi di file mi suggeriscono che anche questi file di driver sono stati creati dal driver di esempio postscript. – ChrisW

3

Potete guardare allo sviluppo 'minidriver' nel da Microsoft (Microsoft MDT) , che potrebbe aiutarti a seconda delle tue esigenze. Se la porta di cui hai bisogno (ad esempio: stai per prendere i dati da un driver di stampa esistente e vuoi elaborarli) puoi guardare il codice sorgente di RedMon. Non supporta Vista/Win7 ma potrebbe indirizzarti nella giusta direzione.

+1

Sì, la parte "virtuale" (non hardware) è il monitor e non il driver. Il driver controlla il formato dell'output (non la posizione/destinazione dell'output) – ChrisW

3
+1

Bene, ho già quel libro. Il problema non è lo sviluppo di driver, il problema è trovare informazioni specifiche rilevanti per lo sviluppo del tipo di driver di stampante virtuale che voglio. – Terminus

+0

Il link n. 4 è stato purtroppo rotto. Che cos 'era questo? –

2

Qualcuno ha già menzionato PDFCreator. Ecco un link più specifico al loro codice che sta creando la stampante, la porta e il monitor. Nonostante sia in VB, posso seguirlo come qualcuno più abituato al C++, quindi immagino che puoi farlo anche tu. modPrinter.bas funziona la gamba. modMain.bas, dalla riga 28 in poi, chiama in modPrinter.bas.