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