Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Drucker auslesen mit EnumPrinters (https://www.delphipraxis.net/100922-drucker-auslesen-mit-enumprinters.html)

RWarnecke 5. Okt 2007 14:29


Drucker auslesen mit EnumPrinters
 
Hallo zusammen,

ich habe folgendes Problem. Wenn ich mit dem Befehl
Delphi-Quellcode:
EnumPrinters(PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL or PRINTER_ENUM_NAME, nil, 4, PByte(Buffer), Count, Count, NumInfo)
die Anzahl meiner Drucker auslese, bekomme ich 4 raus bei NumInfo. Mache ich das gleiche nur mit dem Level 2, dann bekomme ich nur 3 raus bei NumInfo. Woran liegt das ? Der eine Drucker der nicht erkannt wird, ist ein Share-Drucker auf einen anderen Rechner. Wenn dieser Share weg ist, funktioniert alles Wunderbar.

f.siebler 5. Okt 2007 15:19

Re: Drucker auslesen mit EnumPrinters
 
Zitat:

Zitat von RWarnecke
die Anzahl meiner Drucker auslese, bekomme ich 4 raus bei NumInfo. Mache ich das gleiche nur mit dem Level 2, dann bekomme ich nur 3 raus bei NumInfo. Woran liegt das ? Der eine Drucker der nicht erkannt wird, ist ein Share-Drucker auf einen anderen Rechner. Wenn dieser Share weg ist, funktioniert alles Wunderbar.

Soweit ich weiß, ist das so gewollt, darüber lassen sicht meines wissens nach Netzwerkdrucker ausschließen.. macht also schon Sinn....

RWarnecke 5. Okt 2007 15:49

Re: Drucker auslesen mit EnumPrinters
 
Zitat:

Zitat von f.siebler
Soweit ich weiß, ist das so gewollt, darüber lassen sicht meines wissens nach Netzwerkdrucker ausschließen.. macht also schon Sinn....

Ok, das kann ich ja vielleicht noch einsehen. Nur wie lese ich dann die Drucker aus, die ich als Share zugewiesen habe ?

marabu 5. Okt 2007 16:53

Re: Drucker auslesen mit EnumPrinters
 
Hallo Rolf,

mit WNetOpenEnum() kannst du dir eine Liste der verbundenen Drucker (dwType = RESOURCETYPE_PRINT) besorgen.

Grüße vom marabu

RWarnecke 5. Okt 2007 18:43

Re: Drucker auslesen mit EnumPrinters
 
Zitat:

Zitat von marabu
Hallo Rolf,

mit WNetOpenEnum() kannst du dir eine Liste der verbundenen Drucker (dwType = RESOURCETYPE_PRINT) besorgen.

Grüße vom marabu

Noch eine Verständnisfrage. Funktioniert dieser Befehl auch dann, wenn ich die Share's in einer Umgebung verbinde, wo keine Domaine existiert ? Also meine Rechner sind alle nur in einer Arbeitsgruppe mit Ihren eigenen Namen. Da kann es auch passieren das die Arbeitsgruppen unterschiedlich heißen.

marabu 5. Okt 2007 19:36

Re: Drucker auslesen mit EnumPrinters
 
Warum nicht?

Aber mal eine Frage zurück: Warum verwendest du bei EnumPrinters nicht einfach andere Flags?

Delphi-Quellcode:
EnumPrinters(PRINTER_ENUM_SHARED or PRINTER_ENUM_LOCAL or PRINTER_ENUM_NAME, ...

RWarnecke 5. Okt 2007 19:37

Re: Drucker auslesen mit EnumPrinters
 
Ich habe schon verschiedene Möglichkeiten ausprobiert, nur leider bisher noch nicht die richtige gefunden.

marabu 5. Okt 2007 20:07

Re: Drucker auslesen mit EnumPrinters
 
Vergiss bitte _SHARED, da war ich auf dem Holzweg. Ich habe jetzt einfach mal den VCL-Code verwendet und muss feststellen, dass der soeben eigens im Netz installierte GENERIC PRINTER anstandslos in der Liste Printer.Printers auftaucht. Dort werden die Flags PRINTER_ENUM_CONNECTIONS und PRINTER_ENUM_LOCAL verwendet. Vielleicht steckt ja dein Fehler wo anders?

RWarnecke 5. Okt 2007 20:31

Re: Drucker auslesen mit EnumPrinters
 
Danke marabu für Deine Hilfe. Ich habe meinen Fehler vorerst einmal gefunden. Ich habe irgendwie ein kudelmuddel mit den Flags und den Level's gehabt. Habe jetzt nochmals die Flags neu geschrieben und nun funktioniert es. Ich weiß allerdings noch nicht warum das so ist. Ich werde es morgen nochmal auf einen Rechner testen, der in einer Domaine ist. Ich bin aber zuversichtlich, dass es jetzt funktioinert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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