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 Aufruf Rundll zur Druckerinstallation (https://www.delphipraxis.net/46112-aufruf-rundll-zur-druckerinstallation.html)

Mario 18. Mai 2005 19:10


Aufruf Rundll zur Druckerinstallation
 
Hallo,

ich kann an der Kommandozeile folgenden Befehl problemlos ausführen:
Code:
rundll32.exe printui.dll,PrintUIEntry /if /b "PS Printer" /f %windir%\inf\ntprint.inf /r "FILE:" /m "Apple Color LW 12/660 PS"
Es wird unter 2k/XP ein Druckertreiber installiert.

Nun habe ich versucht, dass von meinem Delphi Programm aus zu starten, ohne Erfolg: Der Vorgang konnte nicht abgeschlossen werden

V1:
Delphi-Quellcode:
JCL:
ShellExecEx('rundll32.exe', 'printui.dll,PrintUIEntry /if /b "PS Printer" /f %windir%\inf\ntprint.inf /r "FILE:" /m "Apple Color LW 12/660 PS"','', SW_SHOWNORMAL);
V2:
Delphi-Quellcode:
Delphi WinApi:
ShellExecute(0, 'open', 'rundll32.exe', 'printui.dll,PrintUIEntry /if /b "PS Printer" /f %windir%\inf\ntprint.inf /r "FILE:" /m "Apple Color LW 12/660 PS"', nil, 0);
V3: Mit RunProcess, basierend auf CreateProcess

Was könnte ich falsch machen?

marabu 18. Mai 2005 19:20

Re: Aufruf Rundll zur Druckerinstallation
 
Vermutlich musst du dich um die Expansion der Environment-Variablen selbst kümmern, da sich sonst niemand zuständig fühlt.

Grüße vom marabu

Robert Marquardt 18. Mai 2005 19:32

Re: Aufruf Rundll zur Druckerinstallation
 
Zur Expansion der Environmentvariablen enthaelt die JCL einige Funktionen.
Warum machst du es so umstaendlich? Mit LoadLibrary printui.dll laden und dann die Funktion mit GetProcAddress holen und aufrufen.
Es fehlt nur noch die Deklaration von PrintUIEntry.

Mario 19. Mai 2005 06:54

Re: Aufruf Rundll zur Druckerinstallation
 
Das mit der Auswertung von %windir% scheint in der Tat der Knackpunkt zu sein. Danke!

Zitat:

Zitat von Robert Marquardt
Warum machst du es so umstaendlich? Mit LoadLibrary printui.dll laden und dann die Funktion mit GetProcAddress holen und aufrufen.
Es fehlt nur noch die Deklaration von PrintUIEntry.

Der Aufruf einer Kommandozeile ist doch eigentlich nicht so umständlich (wenn es funktioniert). Sonst muss ich mir zusätzlich noch den DLL-Aufruf besorgen. Ist zwar auch kein Ackt, aber die Kommandozeile ist mir im Moment sympatischer.


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