AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Druckaufträge steuern
Thema durchsuchen
Ansicht
Themen-Optionen

Druckaufträge steuern

Offene Frage von "delphis spassbremse"
Ein Thema von delphis spassbremse · begonnen am 15. Jun 2007 · letzter Beitrag vom 16. Jul 2007
Antwort Antwort
delphis spassbremse

Registriert seit: 7. Jun 2007
Ort: Enger
104 Beiträge
 
Delphi 7 Enterprise
 
#1

Druckaufträge steuern

  Alt 15. Jun 2007, 12:12
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
  Mit Zitat antworten Zitat
delphis spassbremse

Registriert seit: 7. Jun 2007
Ort: Enger
104 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Druckaufträge steuern

  Alt 15. Jul 2007, 17:54
keiner ne idee?
  Mit Zitat antworten Zitat
Benutzerbild von Mamphil
Mamphil

Registriert seit: 17. Jul 2004
Ort: Garching b. München
149 Beiträge
 
Delphi 7 Professional
 
#3

Re: Druckaufträge steuern

  Alt 15. Jul 2007, 18:06
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
The laws of physics are the canvas God laid down on which to paint his masterpiece. “Leonardo Vetra” in Dan Brown’s “Angels & Demons”
  Mit Zitat antworten Zitat
delphis spassbremse

Registriert seit: 7. Jun 2007
Ort: Enger
104 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Druckaufträge steuern

  Alt 15. Jul 2007, 18:13
da ich keine ahnung von C++ habe um nen druckertreiber zu
programmieren wirds so wohl net gehen
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Druckaufträge steuern

  Alt 16. Jul 2007, 00:21
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
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz