Einzelnen Beitrag anzeigen

Andreas2k

Registriert seit: 2. Jan 2003
108 Beiträge
 
Delphi XE5 Professional
 
#1

Drucker installation (printui.dll funktionen direkt einbinden ohne Shellexec)

  Alt 3. Mär 2016, 13:31
Hallo,
mein Programm installiert bzw. deinstalliert Drucker mit Treibers aus einer oemsetup.inf.

Bisher mach ich das immer per Umweg über ShellExec und rundll32

Beispiel:
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /if /b "Mein Drucker" /f \inf\oemsetup.inf /r "MeinPort" /m "HP Laserjet 4 PCL5e"

siehe auch
https://technet.microsoft.com/de-de/...=ws.10%29.aspx


Das funktioniert zu 99% auch doch immer wieder bleibt mein Programm hängen weil PRINTUI.DLL eine Fehlermeldung anzeigt die ich nicht selbst abfangen kann.

Code:
Der Vorgang konnte nicht abgeschlossen werden (Fehler 0x000000c)

Der Zugriffscode ist unzulässig.
Daher habe ich mir gedacht das es besser wäre die Funktion PrintUIEntry direkt aus printui.dll in mein Programm zu laden. Nur habe ich keine Ahnung wie ich das am besten mache weil ich keine Infos über die Struktur (Parameter und Rückgabe Typ) der Funktion gefunden habe. Auch bei MS gibt es nur die Rundll32 Beispiele.

Vielleicht gibt's auch ne besseren weg folgende Funktionalität in Delphi umzusetzen:
- Anzahl von xx Drucker installieren durch Angabe des Druckernamens, Anschlussnamen und der Treibeinformationen (.inf)
- Anzahl von xx Druckern deinstallieren durch Angabe des Druckernamens
- Speichern der Druckereinstellungen in einer Datei durch Angebe des Druckernamens + Zieldatei
- Wiederherstellen der gespeicherten Druckereinstellungen durch Angabe des Druckernamens + Quelldatei
- Anlegen von TCP/IP Druckeranschlüssen durch Angabe des Protokolls LPR/IPP, Queue, Port
Andreas
  Mit Zitat antworten Zitat