Comment créer une imprimante virtuelle sous Windows?

je veux créer une imprimante virtuelle pour Windows. Où dois-je commencer? Le WDK a quelques exemples de pilotes d'impression, mais rien que je puisse utiliser. MSDN ne semble pas très utile.

il y a beaucoup d'imprimantes virtuelles pour Windows là-bas (la plupart génèrent des fichiers PDF), comment font-elles?

tous les liens vers la documentation que je semble manquer sont appréciés.

Merci.

18
demandé sur Terminus 2009-06-19 21:08:37

6 réponses

quand je l'ai fait (ce qui il y a environ 12 ans) j'ai commencé avec l'échantillon de pilote postscript, remplacé tous les trucs spécifiques à postscript (dans mon cas, pour écrire sur un bitmap au lieu de générer des commandes postscript).

j'ai aussi écrit un moniteur d'impression personnalisé (le pilote écrit au spooler, qui écrit à un moniteur): mon moniteur a écrit à un fichier au lieu par exemple du port parallèle.

cependant, l'architecture du pilote d'imprimante et / ou l'ensemble des pilotes d'exemple peuvent avoir changé depuis.

11
répondu ChrisW 2009-06-19 17:33:04

vous pouvez consulter le développement' minidriver ' dans le de Microsoft (Microsoft MDT), qui peut vous aider en fonction de vos besoins exacts. Si le port que vous devez gérer (c'est-à-dire que vous allez prendre les données d'un pilote d'imprimante existant et que vous voulez les traiter), vous pouvez consulter le code source de RedMon. Il ne supporte pas Vista / Win7 mais pourrait vous indiquer la bonne direction.

3
répondu Douglas Anderson 2009-06-19 17:45:20

L'un des pilotes que vous mentionnez est open-source (GPL), peut-être pourriez-vous explorer sa source ou l'adapter: http://www.pdfforge.org/products/pdfcreator/download

2
répondu JCCyC 2009-06-19 17:23:03

Quelqu'un d'autre a déjà mentionné PDFCreator. Voici un lien plus spécifique à leur code qui crée l'imprimante, le port et le moniteur. En dépit d'être dans VB, je peux le suivre comme quelqu'un plus habitué à C++, donc je suppose que vous pouvez aussi. modPrinter.bas le travail des jambes. modMain.bas, à partir de la ligne 28, appelle modPrinter.bas.

2
répondu Jon Bright 2009-06-30 09:19:47

créez un moniteur de Port D'impression, associez ce port à une imprimante, et vous obtiendrez les données que le pilote d'imprimante envoie au port.

exemple pratique de la façon de faire en Cpp et java peut être trouvé ici: http://www.mms-computing.co.uk/uk/co/mmscomputing/device/printmonitor/index.php

0
répondu 2009-12-21 01:43:31