AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu WinExec

Ein Thema von Drysek · begonnen am 21. Sep 2004 · letzter Beitrag vom 22. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
Drysek

Registriert seit: 28. Dez 2003
10 Beiträge
 
#1

Frage zu WinExec

  Alt 21. Sep 2004, 23:23
Hallo,

ich möchte einen Drucker unter Windows hinzufügen das funktioniert auch alles wunderbar in der Komandozeile.

Hier der Aufruf:

rundll32 printui.dll,PrintUIEntry /if /b "Testdrucker" /f %windir%\inf\ntprint.inf /r "lpt1:" /m "AGFA-AccuSet v52.3"


Wenn ich das gleiche aber mit WinExec aufrufe bekomme ich einen Fehler der mir nichts sagt:
"Der Vorgang konnte nicht abgeschlossen werden"

str := 'rundll32 printui.dll,PrintUIEntry /if /b "Testdrucker" /f %windir%\inf\ntprint.inf /r "lpt1:" /m "AGFA-AccuSet v52.3"';

WinExec(str, SW_NORMAL);

Ich habe es auch schon mit ShellExcecute probiert aber leider auch ohne Erfolg

Ich habe die Vermutung das die Fehlerquelle in den Parametern liegt,
wenn ich Win- und ShellExecute aufrufe.

Die AddPrinter Funktion der WinApi wird anscheinend nicht unter XP unterschtützt.

Währe toll wenn mir jemand einen Lösungsvorschlag geben könnte.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: Frage zu WinExec

  Alt 21. Sep 2004, 23:26
Zitat von Drysek:
das funktioniert auch alles wunderbar in der Komandozeile.
Auf der Kommandozeile werden die Umgebungsvariablen (%windir%) ersetzt. Sieh Dir mal ExpandEnvironmentStrings u.s.w. an.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Frage zu WinExec

  Alt 21. Sep 2004, 23:39
Und benutze nicht MSDN-Library durchsuchenWinExec, sondern MSDN-Library durchsuchenShellexecute, da WinExec nur noch wegen der abwärtskompatibilität zu 16-Bit Programmen vorhanden ist und von MS als obsolet gekennzeichnet ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Drysek

Registriert seit: 28. Dez 2003
10 Beiträge
 
#4

Re: Frage zu WinExec

  Alt 22. Sep 2004, 00:15
Hi dann frage ich mal anders, warum klappt folgender Aufruf nicht !

ShellExecute(Form1.Handle, 'open', 'rundll32 printui.dll,PrintUIEntry', '/if /b "Test Printer2" /f "%windir%\inf\ntprint.inf" /r "TestPort:" /m "Apple Color LW 12/660 PS', '', SW_NORMAL);

Wenn ich ihn so ausführe passiert anscheinned rein gar nix, ich vermute aber das der Befehl
nicht bis zu Ende ausgeführt wird, sondern vorher abgebrochen wird.

Also was mache ich falsch !!! Kann ja eigentlich nicht so schwer sein !!

mfg

Drysek
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Frage zu WinExec

  Alt 22. Sep 2004, 00:20
Das hat dir doch Nico gerade erklärt: Die Umgebungsvariable %windir% wird von "Ausführen" automatisch aufgelöst, von Shellexecute aber nicht. Und wie du das Problem löst hat er dir auch gesagt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Drysek

Registriert seit: 28. Dez 2003
10 Beiträge
 
#6

Re: Frage zu WinExec

  Alt 22. Sep 2004, 01:34
Hi, erstma Danke das Ihr euch mit meiner Fragestellung beschäftigt !

Hab euren Ratschlag beherzigt und habe die Systemvariable mit folgendem Code umgewandelt !


Delphi-Quellcode:
var
   strPath : String;
   Buf : array[0..MAX_PATH] of Char;
   x : THandle;
begin
   strPath := '%windir%';
   ExpandEnvironmentStrings(PCHAR(strPath), Buf, sizeof(Buf));
   strPath := ' /if /b "Test Printer2" /f "' + Buf + '\inf\ntprint.inf" /r "TestPort:" /m "Apple Color LW 12/660 PS"';
   x := ShellExecute(0, 'open', 'rundll32 printui.dll,PrintUIEntry', Pchar(strPath), NIL, SW_NORMAL);
   ShowMessage(IntToStr(x));
Leider funktioniert der Aufruf ShellExecute mit den von mir übergebenen Parametern immer noch nicht ! Ich finde den Fehler einfach nicht !!
Wäre nett wenn Ihr mir bitte noch einmal nen Tipp geben könntet ! Vielleicht liegts ja an der Parameterübergabe an ShellExecute ??

Ach ja ShellExecute gibt den FehlerCode 2 zurück -> ERROR_PATH_NOT_FOUND

mfg

Drysek

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#7

Re: Frage zu WinExec

  Alt 22. Sep 2004, 01:47
Zitat von Drysek:
Code:
ShellExecute(0, 'open', [color=red]'rundll32 printui.dll,PrintUIEntry'[/color], Pchar(strPath), NIL, SW_NORMAL);
Die rot markierte Datei gibt es auf Deinem System sicher nicht (sollte nur 'rundll32' sein). Die Bezeichnung strPath ist etwas unglücklich gewählt für einen String der die Parameter enthält...
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#8

Re: Frage zu WinExec

  Alt 22. Sep 2004, 02:09
Zitat von Drysek:
Leider funktioniert der Aufruf ShellExecute mit den von mir übergebenen Parametern immer noch nicht ! Ich finde den Fehler einfach nicht !!
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  Param = 'printui.dll,PrintUIEntry /if /b "Testdrucker" /f %windir%\inf\ntprint.inf /r "lpt1:" /m "AGFA-AccuSet v52.3"';
var
  S: String;
begin

  SetLength(S, ExpandEnvironmentStrings(Param, nil, 0));
  SetLength(S, ExpandEnvironmentStrings(Param, PChar(S), Length(S)) - 1);
  ShellExecute(0, 'open', 'RunDLL32.exe', PChar(S), nil, SW_SHOWNORMAL);

end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Frage zu WinExec

  Alt 22. Sep 2004, 03:36
steht in S auch wirklich der string drin den du haben willst ?
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#10

Re: Frage zu WinExec

  Alt 22. Sep 2004, 03:43
Zitat von supermuckl:
steht in S auch wirklich der string drin den du haben willst ?
Da musste ich echt lachen, als ich deine Frage gelesen hab.
Probier's doch aus.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:52 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