Bonjour je dois imprimer des documents PDF a partir de mon application.
pour cela j'utilise cette méthode :
A partir de la, aucun problème, il ouvre brièvement adobe et lance l'impression dans la foulé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 [DllImport("shell32.dll")] private static extern int ShellExecuteA(IntPtr hwnd, string operation, string file, string paramters, string directory, int showcmd); private void Print() { if (_filename != null) { ShellExecuteA(IntPtr.Zero, "print", _filename, null, null, 0); } }
Seulement il ne me demande pas l'imprimante et lance sur celle par défaut.
Alors pour détourné cela je change l'imprimante par défaut juste avant ce cette manière :
Avant sa je récupère l'imprimante par défaut actuel pour la remétre après mon traitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool SetDefaultPrinter(string Name); public static void change(string printer) { SetDefaultPrinter(printer); } if (printDlg.ShowDialog() == DialogResult.OK) { change(printDlg.PrinterSettings.PrinterName); ////////////////////////// Print(); ////////////////////////// }
De cette façon je permet a l'utilisateur de choisir son imprimante, mais le problème est le suivant :
Quand je laisse l'imprimante par défaut, pas de problème !
Quand je choisie une autre imprimante, il continue a imprimé sur la dernière?!?!
Pourtant l'imprimante par défaut change bien
En recommencent un nombre aléatoire de fois l'impression se fait bien sur celle que je veux. Après je veux retenter sur celle par défaut et il imprime sur la dernière malgrés que se soit pas celle par defaut
je me suis aperçus d'une chose en mode debug : l'impression ne s'exécute pas juste après "Print();" mais une ou deux ligne après...
pouvez vous m'aider svp? je ne comprend vraiment pas!
merci d'avance
Partager