E
Ein weiteres Problem, das ich dadurch habe, ist, dass ich nicht weiss, ob durch ein schiefgelaufenes "GetPrinter(..)",
über das ich eigentlich nur den Status abfragen will, meine bisher schon aufgebaute Verbindung zum Drucker beendet wird.
Im Grunde brauche ich das "GetPrinter(..)" nicht, um (zumindest bei uns) zu drucken.
Da die gewünschte Funktion aber ein AutoDruck ist, soll schon irgend ein Grund erkennbar sein, warum gerade nix aus dem Drucker kommt.
Würde man über einen Druck-Dialog, manuell gehen, bekommt man ja auf andere Weise eine Rückmeldung.
Zumindest geht man gleich der Sache am Drucker nach, wenn nix passiert.
Meine Anwendung macht eben keinen Druck-Dialog auf.
Und wenn dann, statt zu drucken, nix passiert, ist eben die Anwendung schuld.
Also sollte man wenigstens im Logfile etwas finden können.
Beim Kunden zu testen ist leider immer eine scheiss Variante.
Momentan habe ich die Drucker-Functions so zusammengefasst:
GetPrinterFromDialog(&cDrucken, &cPrintDeviceName, &pDevMode, ...); // Ohne "DoModal(..)" !! Also ohne User-Interaktion.
OpenMyPrinter(&hPrinter, cPrintDeviceName, ...);
GetPrinterAndStatus(&hPrinter, ...); // Das ist die Problem-Funktion mit dem "GetPrinter(..)" und Status-abfrage
CreatePrinterDCandStart(&cDrucken, &hPrinter, ...);
Bei Fehlern in den einzelnen Funktionsaufrufen breche ich den Druckvorgang ab und schreibe ins Logfile.
Aber wie gehe ich da besser vor?
Kann ich das erste "GetPrinter(..)", das fehlschlägt, ignorieren und versuche es dann mit dem nächsten, bis eines geht?
Und wenn ich dann trotzdem noch so ein ERROR_INVALID_LEVEL bekomme, drucke ich trotzdem?