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 Drucker via RunDll32 umbennen (https://www.delphipraxis.net/150051-drucker-via-rundll32-umbennen.html)

TheMiller 6. Apr 2010 14:11


Drucker via RunDll32 umbennen
 
Hallo,

neulich habe ich einen Thread eröffnet in dem es um das Umbennen eines Druckers ging. Ich habe mich heute wieder dran gesetzt und rausgefunden, dass man in der Kommandozeile einen Drucker auf folgende Weise erfolgreich umbennen kann:

Code:
rundll32 printui.dll,PrintUIEntry /Xs /n "ALTERNAME" Printername "NEUERNAME"
Nun habe ich es via ShellExecute probiert. Doch das passiert nix, außer, dass Windows sein "Ding"-Sound abspielt. Der Druckername ändert sich nicht. Hier mein Code:

Delphi-Quellcode:
ShellExecute(0, 'NULL', 'rundll32', 'printui.dll,PrintUIEntry /Xs /n "ALT" Printername "NEU"' , nil, 0);
Geht sowas nicht über ShellExecute? Den Drucker-Einstellungen-Dialog hatte ich schonmal offen.

Danke

mkinzler 6. Apr 2010 14:13

Re: Drucker via RunDll32 umbennen
 
Ruf mal ein cmd/command mit dem Rest als Parameter auf

TheMiller 6. Apr 2010 14:19

Re: Drucker via RunDll32 umbennen
 
Hm...

falls du es so gemeint hast...

Delphi-Quellcode:
ShellExecute(0, 'NULL', 'cmd', 'rundll32 printui.dll,PrintUIEntry /Xs /n "wow" Printername "NEU"' , nil, 0);
... das geht auch nicht.

Ich kann noch nichteinmal die Kommandozeile mit folgendem Code öffnen:

Delphi-Quellcode:
ShellExecute(0, 'open', 'C:\Windows\System32\cmd.exe', nil, nil, 0);
Seltsam... oder stehe ich auf der Leitung?

mkinzler 6. Apr 2010 14:20

Re: Drucker via RunDll32 umbennen
 
Das 0 als letzter Parameter heist unsichtbar
Was wird den zurückgegeben?

TheMiller 6. Apr 2010 14:28

Re: Drucker via RunDll32 umbennen
 
Och nö... Stimmt ja - das habe ich ganz übersehen. Nun wird wenigstens die CMD sichtbar. Aber den Parameter trägt er mir nicht ein.

Es ist lediglich der Pfad des aktuellen Verzeichnisses zu sehen. Hier meine aktuelle Version

Delphi-Quellcode:
ShellExecute(0, 'open', 'C:\Windows\System32\cmd.exe', 'rundll32 printui.dll,PrintUIEntry /Xs /n "wow" Printername "NEU"' , nil, SW_SHOW);
Auch das direkte Aufrufen der Parameter im "Dateinamen"-Parameter funktioniert nicht (so:)

Delphi-Quellcode:
  ShellExecute(0, 'open', 'C:\Windows\System32\cmd.exe rundll32 printui.dll,PrintUIEntry /Xs /n "wow" Printername "NEU"' ,', nil, nil, SW_SHOW);
Bei der oberen Version wird 42 zurückgegeben. SysErrorMessage sagt: "Der Vorgang wurde erfolgreich ausgeführt.". Nun ja, wenn man die Parameter missachtet, hat SysErrorMessage sogar recht...

Neutral General 6. Apr 2010 14:36

Re: Drucker via RunDll32 umbennen
 
Versuch es mal so:

Delphi-Quellcode:
ShellExecute(0, 'open', 'cmd.exe', '/C rundll32 printui.dll,PrintUIEntry /Xs /n "wow" Printername "NEU"' , nil, SW_SHOW);

TheMiller 6. Apr 2010 14:53

Re: Drucker via RunDll32 umbennen
 
Vielen Dank. Das funktioniert super. Ich kannte den /C-Parameter garnicht.

Super :bounce1:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 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 by Thomas Breitkreuz