AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Mal wieder Drucker im Netzwerk
Thema durchsuchen
Ansicht
Themen-Optionen

Mal wieder Drucker im Netzwerk

Offene Frage von "frankg"
Ein Thema von frankg · begonnen am 15. Aug 2003 · letzter Beitrag vom 19. Aug 2003
 
frankg

Registriert seit: 20. Mai 2003
Ort: Wetter
72 Beiträge
 
Delphi 7 Architect
 
#2

Re: Mal wieder Drucker im Netzwerk

  Alt 19. Aug 2003, 13:22
Hallo!

Offensichtlich wusste niemand etwas mit meinem Posting anzufangen, daher habe ich mal die Ärmel hochgekrempelt und bin selbst zur Tat geschritten . Eine Zuordnung zwischen lokalen Gerätenamen und Netzwerkshares kann man über die Win32-API Funktion WNetGetConnection erhalten. Dazu habe ich dann mal flugs eine kleine Routine geschrieben:

Delphi-Quellcode:
function ResolveShareName (LocalDevice : String) : String;
var
  pLocName : PChar;
  pShareName : PChar;
  FuncResult : DWORD;
  BufLength : Cardinal;
begin
  // Speicher für die Strings allozieren!
  pLocName := StrAlloc(255);
  pShareName := StrAlloc(255);
  // String in PString kopieren
  StrPCopy (pLocName, LocalDevice);
  BufLength := 255;
  FuncResult := WNetGetConnection(pLocName,pShareName,BufLength);
  if FuncResult <> NO_ERROR then
    result := 'ERROR'
  else
    result := pShareName;
  // aufräumen!
  StrDispose (pShareName);
  StrDispose (pLocName);
end;
Diese Funktion funktioniert auch sehr gut allerdings mit einer Einschränkung. Netzwerkshares werden nur gegen physikalische Gerätenamen aufgelöst, das soll heissen, das ich nur dann die Share eines Druckers ermitteln kann, wenn dieser z.B. mit dem LPT1 Anschluss verbunden ist. Normalerweise scheint das aber unter Windows XP nicht der Fall zu sein. Rufe ich das Programm einfach so auf ohne dass eine Verbindung hergestellt ist, so liefert mir WNetGetConnection den Wert 2 (ERROR_FILE_NOT_FOUND) zurück. Verbinde ich den Drucker einfach per

Code:
net use LPT1 \\homer\HPLaserJ
so funktioniert die Funktion hervorragend und liefert für den Übergabeparameter LPT1 auch korrekt \\homer\HPLaserJ zurück. Damit habe ich aber leider am Ziel vorbeigeschossen, da ich ja nicht wissen wollte welchem Geräteanschluss eine Netzwerk-Share zugeordnet ist sondern ich wollte ja ursprünglich wissen, auf welcher Netzwerkshare ein Druckertreiber, der im System installiert ist druckt (also im Prinzip das was man über TPrinter.Printers bekommt).

Kennt sich hier im Forum wirklich niemand mit dieser Thematik aus? Wie sieht das überhaupt aus, kann ich unter Windows 2000/XP nicht eigentlich einfach eine Netzwerkshare an einen Geräteanschluss binden (unabhängig davon, ob der Druckertreiber für diesen Drucker installiert ist oder nicht) und dann dort drucken? Wenn ich richtig informiert bin, dann müsste das doch funktionieren, weil das Betriebssystem erkennt, dass kein Druckertreiber installiert ist und demzufolge den Druckertreiber vom (Druck)Server herunterläd. Ich hoffe, dass nicht alle Mit-Windows-Im-Netzwerk-Drucken-Experten im Urlaub sind und jemand weiss, wie das hier funktioniert.

Viele Grüsse und vielen Dank

Frank
  Mit Zitat antworten Zitat
 


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 03:31 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-2025 by Thomas Breitkreuz