![]() |
Frage zu WinExec
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. |
Re: Frage zu WinExec
Zitat:
|
Re: Frage zu WinExec
Und benutze nicht
![]() ![]() |
Re: Frage zu WinExec
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 |
Re: Frage zu WinExec
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.
|
Re: Frage zu WinExec
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:
Leider funktioniert der Aufruf ShellExecute mit den von mir übergebenen Parametern immer noch nicht ! Ich finde den Fehler einfach nicht !!
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)); 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] |
Re: Frage zu WinExec
Zitat:
|
Re: Frage zu WinExec
Zitat:
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; |
Re: Frage zu WinExec
steht in S auch wirklich der string drin den du haben willst ?
|
Re: Frage zu WinExec
Zitat:
Probier's doch aus. :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 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