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 Standardprogramm bei shellexecute (...,'print'...) (https://www.delphipraxis.net/57295-standardprogramm-bei-shellexecute-print.html)

Jelly 18. Nov 2005 15:09


Standardprogramm bei shellexecute (...,'print'...)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Als Vorgeschichte dient dieser Thread.

Aber zum Problem... Über
Delphi-Quellcode:
Shellexecute (handle,'print','test.pdf',nil,SW_SHOWNORMAL) ;
Das Programm das dafür benutzt wird, ist in Windows definiert (siehe Anhang).

Das klappt auch, solange beim Befehl nur ein Parameter übegeben wird, wie hier:
"C:\Program Files\Ghostgum\gsview\gsprint.exe" -printer "\\BRUNATA\OKI C5300" "%1"

Jetzt möchte ich aber den Druckernamen ebenfalls als Parameter übergeben. Wie lautet dann der Aufruf von ShellExecute, und wie muss ich den Dateitype definiern.

"C:\Program Files\Ghostgum\gsview\gsprint.exe" -printer "\%2" "%1"
oder
"C:\Program Files\Ghostgum\gsview\gsprint.exe" -printer "\%1" "%2"

scheint nicht zu klappen.

neuronet 18. Nov 2005 16:04

Re: Standardprogramm bei shellexecute (...,'print'...)
 
So, dann gibt's hier auch was von mir:

gsprint -printer "Name"

siehe auch hier:

gsprint Parameter

Meines Wissens muss der lokale Printername angegeben werden...

neuronet 18. Nov 2005 16:12

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Okay... hab's falsch verstanden...

Fällt mir momentan auch nix anderes ein als vorhin:

1. Neuen Default-Printer setzen
2. ShellExecAndWaitA
3. Alten Default-Printer wiederherstellen

neuronet 18. Nov 2005 16:18

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Und wenn Du einfach ein Leerzeichen zwischen die Übergabeparameter setzt???

Delphi-Quellcode:
Shellexecute (handle,'print','test.pdf Lexmark',nil,SW_SHOWNORMAL) ;

Jelly 18. Nov 2005 16:25

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Zitat:

Zitat von neuronet
Und wenn Du einfach ein Leerzeichen zwischen die Übergabeparameter setzt???

Nee, das hab ich schon als erstes probiert.

neuronet 18. Nov 2005 16:36

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Tja....

MSDN - ShellExecute bringt auch nix Neues an den Tag...
Bleibt wohl wirklich nur der manuelle Printertausch...

:cry: :cry: :cry: :cry: :cry:

neuronet 18. Nov 2005 17:27

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Versuche es gerade selbst zu testen, aber die "Print" Zuordnung setzt sich immer wieder von selbst auf AcroRd32.exe zurück....


:wall: :wall: :wall: :wall: :wall:

Jelly 18. Nov 2005 17:52

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Naja, die Zuordnung an sich funktioniert prima, nur krieg ich aber keine weiteren Parameter übermittelt ausser den Dateinamen.

neuronet 18. Nov 2005 17:59

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Wie wäre es dann einfach mit:

Delphi-Quellcode:
ShellExecute (H,'open',pansichar('C:\Programme\Ghostgum\gsview\gsprint.exe -printer "\\Server\Lexmark E232" C:\test.pdf'),nil,nil,0)
Müsstest halt vorher prüfen, ob es sich um ein pdf handelt und dann den String von Hand zusammenbasteln...

Bei mir funzt das so....

Jelly 18. Nov 2005 18:12

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Naja, werde das wohl so machen müssen. Dann muss ich halt für alle in meiner Anwendung auftretenden Dateitypen unterscheiden, aber das sollte machbar sein. Ist halt nur noch etwas umständlich weil das Programm auf mehreren Rechnern läuft, und ich auf die Pfade achten muss.

Aber das Problem mit ShellExecute und 'print' bleibt trotzdem ungelöst.

neuronet 18. Nov 2005 18:14

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Kleine Korrektur... Hab' aus versehen den ersten Versuchscode gepostet... der funzt nicht...

Hier der Richtige:

Delphi-Quellcode:
ShellExecute(0, 'open', PChar('CMD.EXE'), PChar('/C C:\Programme\Ghostgum\gsview\gsprint.exe -printer "Virtual Printer" C:\100.pdf'), nil, SW_HIDE);

Waldteufel 18. Nov 2005 18:16

Re: Standardprogramm bei shellexecute (...,'print'...)
 
Hi.

Delphi-Quellcode:
ShellExecute (H,'open',pansichar('C:\Programme\Ghostgum\gsview\gsprint.exe -printer "\\Server\Lexmark E232" C:\test.pdf'),nil,nil,0)
@neuronet: *hüstel* Damit startest du das Programm 'C:\Programme\Ghostgum\gsview\gsprint.exe -printer "\\Server\Lexmark E232" C:\test.pdf' mit dem Parameter ''. ;-)

Besser so:
Delphi-Quellcode:
ShellExecute(H, 'open', PAnsiChar('C:\Programme\Ghostgum\gsview\gsprint.exe'), PAnsiChar('-printer "\\Server\Lexmark E232" C:\test.pdf'), nil, SW_HIDE)
//edit: Wo war der rote Kasten? :gruebel:

neuronet 18. Nov 2005 18:19

Re: Standardprogramm bei shellexecute (...,'print'...)
 
@Waldteufel: Hab's ja noch geändert... Via CMD läuft's auch so sauber...

Thomas Feichtner 27. Mai 2013 21:57

AW: Standardprogramm bei shellexecute (...,'print'...)
 
Hallo,

gibt es eine Möglichkeit um festzustellen, ob ich eine Datei mit ShellExecute drucken kann?


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