AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Drucker installation (printui.dll funktionen direkt einbinden ohne Shellexec)

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

Ein Thema von Andreas2k · begonnen am 3. Mär 2016 · letzter Beitrag vom 7. Mär 2016
Antwort Antwort
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, 12: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
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.192 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

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

  Alt 3. Mär 2016, 12:38
Hallo,

Bei PInvoke gibt es interessanterweise Informationen zur Signatur:

http://pinvoke.net/default.aspx/prin...tUIEntryW.html
=>
procedure PrintUIEntryW(hWnd: THandle; hInst: HINST; lpszCmdLine: WideString; nCMDShow: Integer); stdcall; external 'printui.dll';
Damit sollte das machbar sein.

EDIT: Wobei ich gerade mal getestet habe und ich befürchte die Meldungen kannst du trotzdem nicht abfangen :/

EDIT2: Besser wäre es wohl wenn du direkt die entsprechenden API Funktionen benutzt:

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General ( 3. Mär 2016 um 12:54 Uhr)
  Mit Zitat antworten Zitat
Andreas2k

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

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

  Alt 7. Mär 2016, 12:36
Danke für die Antwort!
Sieht etwas kompliziert aus, vorallem habe ich da bei Addprinter nichts gefunden wo man die Treiber (oemsetup.inf) übergeben kann, dafür angaben wie Printprocessor usw.

Ich habe aber den Fehler bei mir endlich gefunden. Es war eigentlich kein Fehler in meinem Programm sondern ein fehlender Parameter beim speichern und zurückschreiben der Druckereinstellungen. Der Fehler lies sich also auch per Kommandozeile reproduzieren

Trotzdem Danke für den Tipp mit der API!
Andreas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:47 Uhr.
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