Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Verfügbare Druckerschächte eines Druckers anzeigen (https://www.delphipraxis.net/60260-verfuegbare-druckerschaechte-eines-druckers-anzeigen.html)

jaevencooler 4. Jan 2006 16:00


Verfügbare Druckerschächte eines Druckers anzeigen
 
Moin, Moin,

folgendes Problem:

Ich möchte eine Liste aller verfügbaren Schächte eine installierten Druckers finden, und anzeigen, sowie den Bincode herausfinden.

Hat jemand eine Idee :drunken:


Beste Grüße
Michael

WePo 11. Jan 2006 18:30

Re: Verfügbare Druckerschächte eines Druckers anzeigen
 
Hi,
da jeder Druckerhersteller andere codes verwendet nutze mal ein Testprogramm.
www.qusoft.com / DIY Fixes / This article.
Dies ist die Seite von Quickreport. Deine Version D5 Ent sollte zudem über die source-codes , insbesondere qrprinter.pas verfügen. Du kannst dann das Druckerarray anpassen. Weiters auf der QR-Hilfeseite.
Gruß Werner

Lannes 11. Jan 2006 21:42

Re: Verfügbare Druckerschächte eines Druckers anzeigen
 
Hallo,

erstmal willkommen in der DP :hi:

Das könnte auch Dir helfen:
Delphi-Forum: [TPrinter, VCL Win32] Papierquelle/Papierfach ermitteln und setzen

squetk 12. Jan 2006 23:35

Re: Verfügbare Druckerschächte eines Druckers anzeigen
 
Hallo,

die Klasse TJclPrintSet der JCL des Projekts JEDI verwaltet u.a. auch die Druckerschächte recht komfortabel.

QuickAndDirty 23. Okt 2006 11:37

Re: Verfügbare Druckerschächte eines Druckers anzeigen
 
ja, aber leider GPL.

Reinhard Kern 23. Okt 2006 14:40

Re: Verfügbare Druckerschächte eines Druckers anzeigen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von jaevencooler
Moin, Moin,

folgendes Problem:

Ich möchte eine Liste aller verfügbaren Schächte eine installierten Druckers finden, und anzeigen, sowie den Bincode herausfinden.

Hat jemand eine Idee :drunken:


Beste Grüße
Michael

Hallo Michael,

im Attachment ein Programm, das unter anderem genau das macht, Ausgabe u.a.:

Text Caps :
Supports character output precision.
Supports 90-degree character rotation.
Supports character rotation at any degree.
Supports underlining.
Supports strikeouts.
Paper Bins :
Automatischer Einzug = 7
Mehrzweckfach (MZ) = 1
Kassette = 2
Manuelle Papierzufuhr = 4
Untere Kassette = 11
Umschlag-Zuführung = 5
Paper Sizes :
Letter (8 ½ x 11 Zoll) = 1 (215.9x279.4)
Legal (8 ½ x 14 Zoll) = 5 (215.9x355.6)
Executive (7 ¼ x 10 ½ Zoll) = 7 (184.1x266.7)
A4 (210 x 297 mm) = 9 (209.9x296.9)
Com-10 Umsch (4 1/8 x 9½ Zoll) = 20 (104.7x241.3)
DL Umschlag (110 x 220 mm) = 27 (109.9x219.9)
C5 Umschlag (162 x 229 mm) = 28 (161.9x228.9)
B5 Umschlag (176 x 250 mm) = 34 (175.9x249.9)
Monarch Umsch (3 7/8 x 7½ Zoll) = 37 (98.3x190.5)

gibt auch alles andere aus, was man über den Drucker wissen sollte, und beruht auf Windows API. Ist allerdings ein uraltes TPW (Turbo Pascal für Windows) Programm, das ich seither nicht mehr gebraucht habe und deshalb nicht auf Delphi portiert. Es läuft jedoch nach wie vor, auch unter XP, und du müsstest alles Nötige finden, um das Windows API entsprechend zu benutzen.

Gruss Reinhard

uwewo 23. Okt 2006 14:52

Re: Verfügbare Druckerschächte eines Druckers anzeigen
 
Probier mal das

Delphi-Quellcode:
function GetPaperTrays: TStrings;
var pDevMode : PDeviceMode;
    bin      : array[0..255,0..23] of char;
    i        : DWORD;
    Res      : DWORD;
begin
if (FPaperTrays = nil) then begin
  try
    FPaperTrays := TStringList.Create;
  except
    FPaperTrays.Free;
    FPaperTrays := nil;
  raise;
  end;
end;
   FPaperTrays.Clear;
   GetPrinter(ADevice,ADriver,APort,hDMode);
   pDevMode := nil;
   Res := DeviceCapabilities(ADevice,APort,DC_BINNAMES,PCHAR(@(bin[0][0])),pDevMode);

    for i := 0 to Res-1 do
      begin
          FPaperTrays.Add(bin[i]);
      end;
    Result := FPaperTrays;
end;
Uwe

uwewo 24. Okt 2006 11:21

Re: Verfügbare Druckerschächte eines Druckers anzeigen
 
Würde mich schon interessieren ob es funktioniert oder nicht :?

Uwe

HannsW 25. Jan 2010 13:10

Re: Verfügbare Druckerschächte eines Druckers anzeigen
 
Zitat:

Zitat von uwewo
Probier mal das

Delphi-Quellcode:
function GetPaperTrays: TStrings;
var pDevMode : PDeviceMode;
    bin      : array[0..255,0..23] of char;
    i        : DWORD;
    Res      : DWORD;
begin
if (FPaperTrays = nil) then begin
  try
    FPaperTrays := TStringList.Create;
  except
    FPaperTrays.Free;
    FPaperTrays := nil;
  raise;
  end;
end;
   FPaperTrays.Clear;
   GetPrinter(ADevice,ADriver,APort,hDMode);
   pDevMode := nil;
   Res := DeviceCapabilities(ADevice,APort,DC_BINNAMES,PCHAR(@(bin[0][0])),pDevMode);

    for i := 0 to Res-1 do
      begin
          FPaperTrays.Add(bin[i]);
      end;
    Result := FPaperTrays;
end;
Uwe

Hallo Uwe,
liegt ja nun schonein wenig zurück, aber: es klappt nicht!

FPapertrays: TStringList; in die VAR einzufügen habe ich geschafft, aber
Delphi-Quellcode:
  GetPrinter(ADevice,ADriver,APort,hDMode);
  pDevMode := nil;
  Res := DeviceCapabilities(ADevice,APort,DC_BINNAMES,PCHAR(@(bin[0][0])),pDevMode);
ergibt unter D5 diese Meldungen
Zitat:

undefinierter Bezeichner : 'GetPrinter'
undefinierter Bezeichner : 'ADevice'
undefinierter Bezeichner : 'APort'
inkompatible Typen: 'Integer' und 'PChar'
Die Aufrufparameter von "DeviceCapabilities" stimmen nicht mitdenen in windows.pas überein,
und es übersteigt meine Fähigkeiten, dies Fehler zu lösen
Hanns

DeddyH 25. Jan 2010 13:16

Re: Verfügbare Druckerschächte eines Druckers anzeigen
 
Dann versuch es mal bei den Schweizern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr.
Seite 1 von 2  1 2   

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