NOTE : Cet article est uniquement destiné aux programmeurs Delphi …eursurs
On trouve sur le net des hackers une quantité de lignes de codes pour modifier l’imprimante par défaut utilisée par un programme DELPHI
Il y a des codes sérieux, ce sont en général des codes courts, qui tiennent sur une seule fonction de quelques lignes, et à côté des délires absolus écrits par des illuminés, sur des pages et des pages, dont le seul but ne semble être que celui d’embrouiller de client, juste pour lui montrer combien ils sont des intelligences supérieures et surtout comme ils sont indispensables…
J’ai retenu 2 codes robustes qui font le job en un minimum de lignes :
Celui de cJcSoft.NET :
- Qui modifie l’imprimante par défaut au panneau de Windows
procedure SetDefaultPrinter(NewDefPrinter: string); { http://delphi.cjcsoft.net/viewthread.php?tid=49559 } var ResStr: array [0 .. 255] of Char; begin StrPCopy(ResStr, NewDefPrinter); WriteProfileString('windows', 'device', ResStr); StrCopy(ResStr, 'windows'); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@ResStr)); end;
- Il est parfait car il tient sur 4 lignes,
- Mais il a l’inconvénient d’obliger à redémarrer le programme pour que ses modifications prennent effet.
Celui de BlueGYN.COM ***{:-
- Qui a l’avantage de modifier immédiatement l’imprimante active du programme, et l’immense avantage de tenir sur une seule ligne
procedure PRINT_SetDefaultPrinter(PrinterName: string); { BlueGYN 2017 } begin Printer.SetPrinter(PChar(PrinterName), 'WINSPOOL', '', 0); end;
J’ai cherché et testé tous les codes possibles glanés sur internet, pour finir par appuyer sur la touche F1 de DELPHI qui ouvre simplement la propriété SetPrinter de l’Objet PRINTER qui gère la collection d’imprimantes système
Pour changer d’imprimante :
- Dans mon cas pour passer de l’imprimante Papier à PDF
- Je déclare l’objet PRINTER
uses Printer;
- Je liste les imprimantes système dans une ListBox:
ListBox_PRINTERS.items := Printer.printers;
- Je pointe l’imprimante active
ListBox_PRINTERS.ItemIndex := Printer.PrinterIndex;
- Je choisis une autre imprimante dans ma ListBox
- Et je clique pour l’activer
Print_SetDefaultPrinter( ListBox_PRINTERS.items[ListBox_PRINTERS.ItemIndex] );
- La modification est instantanée !
NE PAS OUBLIER DE RESTAURER L’IMPRIMANTE ORIGINALE A LA FIN DE LA MANIP !
Mise en pratique :
Voir programme PrintyCS
Un bonnet d’âne à tous ces prétendus programmeurs du net qui ne sont en fait que des faiseurs de crottes de bique , payés au kilomètre …