Salut On passe la vitesse supérieur ;) Le plus simple est d'utiliser ceci. L'idée est de comparer le nombre d'impression dans la file d'attente de Pdfcreator et le nombre de feuilles que l'on imprime. S'il y a une différence, je fais une boucle d'attente. Supprimer un process. C'est la seul manière de fermer Pdfcreator. Un vlax-release-object de Pdfcreator en lui-même ne suffit pas.
(defun kill(qui / item meth1 meth2 obj WMI)
(setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil)
meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process")
)
(vlax-for item meth2
(and (setq obj (vlax-get item 'CommandLine)) (vl-string-search (strcase qui) (strcase obj))
(vlax-invoke item 'Terminate)
)
)
(foreach item (list WMI meth1 meth2)
(vlax-release-object item)
)
)
Ma routine d'impression
(kill "PDFCreator.exe") ; Eradiquer PdfCreator si jamais on s'en est déjà servit.
(setq pdf (vlax-create-object "PDFCreator.clsPDFCreator")) ; Apeller l'activex PdfCreator
(vlax-invoke pdf 'cstart "/NoProcessingAtStartup") ; Ne pas démarrer au lancement
(vlax-put pdf 'cPrinterStop :vlax-true) ; Activer la file d'attente
(vlax-put pdf 'cWindowState 0) ; Afficher la fenêtre de Pdfcreator
(vlax-invoke pdf 'cClearCache) ; Vider la file d'attente
(setq tot 0) ; Initialiser mon nombre d'impression
(mon_impression) ; Mon Impression en cours...
(while (/= (vlax-get pdf 'cCountOfPrintjobs) (1+ tot))) ; Pause tant que la nouvelle impression n'est pas dans la file d'attente
(setq tot (1+ tot)) ; Incrémenter mon nombre d'impression pour correspondre à ma file d'attente
Pour regrouper mes impressions en un seul
(vlax-invoke pdf 'cCombineAll)
Et nettoyer
(vlax-release-object pdf)
@+