Du kannst eigentlich auf den Windows-
Spooler vertrauen:
dieser sorgt dafür, dass Dokumente ausgedruckt werden, sobald der Drucker zum Druck bereit wird.
Dies funktioniert auch nach einem Reboot.
Du möchtest wahrscheinlich verhindern, dass ein Benutzer viele Druckjobs absetzt,
der Drucker aber nicht bereit ist.
Im Extremfall könnte so die Arbeiten von Stunden verlorengehen.
Dann wäre es doch ratsamer, nur zu Prüfen,
wieviele Druckaufträge gerade im Spooler sind.
Sind mehr als 3 Druckaufträge vorhanden dann bringt dein Programm diese Meldung:
Zitat:
Es sind 4 Druckaufträge im Spooler für Drucker "HP Desk 1000".
Wollen Sie einen weiteren Auftrag hinzufügen ?
<Ja> <Nein>
Delphi-Quellcode:
var
info :TPrinterInfo2Easy;
begin
GetPrinterInfo2(druckername,info); // aus Code-Library; siehe Link aus früherem Posting
if info.cJobs > 3 then
begin
// Meldung ausgeben
if MessageDlg(Format('Es sind %d Druckaufträge im Spooler für Drucker "%s".'#13#10, [info.cJobs, info.PrinterName])+
'Wollen Sie einen weiteren Auftrag hinzufügen ?', mtConfirmation, [mbOK, mbCancel], 0) = mrCancel then
Abort;
end;
Jetzt bleibt nur noch das Problem, den aktuell eingestellten Druckername von WinWord
zu ermitteln. Das wäre aber eine eigene Frage.