Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Druckaufträge steuern (https://www.delphipraxis.net/94057-druckauftraege-steuern.html)

delphis spassbremse 15. Jun 2007 12:12


Druckaufträge steuern
 
Hallo,

ich habe ja mal für ein Internetcafe eine Internetcafésoftware geschrieben.
Nun hatte der Cheffe die Idee, dass die User ihre Sachen ausdrucken können
und automatisch 2 Minuten pro Seite vom Onlineguthaben abgezogen werden.

Hat vllt. jemand eine Idee, wie man realisieren könnte?

Also das ganze soll so ablaufen.

Der Kunde druckt über Firefox eine Seite
anschließend soll der Druckauftrag angehalten werden
und eine Meldung ausgeben werden (z.B. Sie möchten 4 Seiten Drucken. Es werden Ihnen 8 Minuten vom Zeitkonto abgezogen |OK | Abbrechen)
Wenn auf OK geklickt wird, dann soll der Druckauftrag wieder freigegben werden.
Wenn man auf Abbrechen drückt oder nicht genügend Zeit vorhanden ist, dann
soll der Auftrag gelöscht werden.

Ich habe mir schon einige Thread zum Thema Druckaufträge abfangen durchgelesen.
Aber ich denke, dass sich es bei diesem Problem einfacher zu relasieren ist,
weil ich nur den Druckauftrag Starten / Anhalten / Löschen und die Seitenzahl auslesen möchte.

MFG

Björn

delphis spassbremse 15. Jul 2007 17:54

Re: Druckaufträge steuern
 
keiner ne idee?

Mamphil 15. Jul 2007 18:06

Re: Druckaufträge steuern
 
Hi,

ohne viel Ahnung von der programmiertechnischen Seite zu haben:

Programmiere doch einen Software-Drucker, der auf den Rechnern installiert ist. Mit diesem wird gedruckt, sobald ein Druckauftrag eingeht, meldet der Software-Drucker den Druckauftrag deiner Internet-Café-Software, die die entsprechenden Abfragen startet und ggf. den Druckauftrag an den zentralen Netzwerkdrucker weiterleitet.

Mamphil

delphis spassbremse 15. Jul 2007 18:13

Re: Druckaufträge steuern
 
da ich keine ahnung von C++ habe um nen druckertreiber zu
programmieren wirds so wohl net gehen :(

bitsetter 16. Jul 2007 00:21

Re: Druckaufträge steuern
 
Zitat:

Zitat von delphis spassbremse
Aber ich denke, dass sich es bei diesem Problem einfacher zu relasieren ist,
weil ich nur den Druckauftrag Starten / Anhalten / Löschen und die Seitenzahl auslesen möchte.

Hallo,
Delphi-Quellcode:
uses
  WinSpool, Printers;

procedure SetPrinterJob;
type
  PJobs = ^TJobs;
  TJobs = array[0..0]of TJobInfo2;
var
  Needed, JobCounter : DWORD;
  i : Integer;
  Device, Driver, Port : array[0..255] of char;
  hPrinter, hDeviceMode : THandle;
  Buffer : Pointer;
  Job : PJobs;
const
  NoJobs = 100;
begin
  Printer.PrinterIndex := -1;
  Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
  if WinSpool.OpenPrinter(@Device, hPrinter, nil) then
  begin
    EnumJobs(hPrinter, 0, NoJobs, 2, nil, 0, Needed, JobCounter);
    GetMem(Buffer, Needed);
    try
      Job := Buffer;
      if EnumJobs(hPrinter, 0, NoJobs, 2, Buffer, Needed, Needed, JobCounter) then
        begin
        //Form1.Caption := Caption+ ' Anzahl der Druckaufträge: ' + inttostr(JobCounter);
          for i := 0 to JobCounter - 1 do
            begin
            if Job[i].pDocument <> nil then
              if messagebox(0, PChar('Soll der Druckauftrag des Dokuments "' + Job[i].pDocument + '" mit ' + inttostr( Job[i].TotalPages)+ ' zu druckenden Seiten abgebrochen werden?')
                ,'Nachfrage', MB_YESNO or MB_ICONQUESTION) = idYES then
                SetJob(hPrinter, Job[i].JobId, 0, nil, winspool.JOB_CONTROL_DELETE);//JOB_CONTROL_PAUSE
            end;
        end;
    finally
      FreeMem(Buffer, Needed);
    end;
    WinSpool.ClosePrinter(hPrinter);
  end;
end;
Hier soll eine Nachfrage erscheinen ob der Druckauftrag mit der angezeigten Seitenzahl des Standarddruckers abgebrochen werden soll.

Wenn du auf eingehende Druckaufträge auch noch reagieren möchtest, dann könntest du dich ja mal mit FindFirstPrinterChangeNotification und FindNextPrinterChangeNotification beschäftigen


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz