Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit ShellExecute (Parameter) (https://www.delphipraxis.net/21980-problem-mit-shellexecute-parameter.html)

dR4g0N 10. Mai 2004 23:17


Problem mit ShellExecute (Parameter)
 
Und zwar möchte ich ein Prog ausführen mit bestimmten Parametern.

In Memo1 steht eine längere Zahl (z.B. 321.323)
In Edit2 und Edit3 eine normale Ganzzahl. ich weiss das ich auch integer nehmen kann aber egal ^^
Wenn ich jetzt auf Button3 Klicke öffnet sich das Programm, aber nur max eine Sek und schliesst sich dann wieder alleine.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var ew, cb, fu : String;
    i : Integer;
begin
ew := Memo1.Lines.Text;
cb := ' ' + Edit2.Text;
fu := ' ' + Edit3.Text;
for i := 0 to Memo1.Lines.Count -1 do
ShellExecute(Handle, 'open', 'c:\fmas.exe', PChar(ew + cb + fu), nil, SW_SHOW);
end;
Weiss jmd wo der Fehler liegt? o_O

Thanx :)

Luckie 10. Mai 2004 23:20

Re: Problem mit ShellExecute (Parameter)
 
Zitat:

Zitat von dR4g0N
Weiss jmd wo der Fehler liegt? o_O

Die Parameter sind falsch? Oder es ist ein Konsolen Programm, dann musst du vorher eine Konsole öfnnen, sonst geht es nicht.

dR4g0N 10. Mai 2004 23:26

Re: Problem mit ShellExecute (Parameter)
 
fmas ist ein konsolenprogramm, welches ich zb mit fmas 312.232 432 343 starte.

312.232 -> von Memo1.Lines
432 -> Edit2.Text
343 -> Edit3.Text

Edit:

Axo meinste cmd öffnen und in cmd das konsolenprogramm strarten? aber wie?

Luckie 10. Mai 2004 23:36

Re: Problem mit ShellExecute (Parameter)
 
Genau das meine ich. Nur wie das genau geht, weiß ich auch nicht. Kann aber sein dass du über die Suche erfolgreich bist.

SirThornberry 11. Mai 2004 06:53

Re: Problem mit ShellExecute (Parameter)
 
einfach
Code:
cmd /c fmas 312.232 432 343
so startet man das Programm in der Console (unter XP)

dR4g0N 11. Mai 2004 07:20

Re: Problem mit ShellExecute (Parameter)
 
Also Cmd bekomm ich schon geöffnet via ShellExecute, nur weiss ich jedoch nicht wie ich die parameter fmas.exe + memo1.lines + edit2 + edit3 reinbekomme. Nach meinen erfolgslosen Versuche öffnet sich wenn ich es mit Parametern starten will nochnichteinmal CMD. ;(

SirThornberry 11. Mai 2004 08:14

Re: Problem mit ShellExecute (Parameter)
 
ich hab doch geschrieben wie... :?
du startest die cmd.exe mit dem parameter "/c" und danach schreibst du dann "fmas.exe" + die dazugehörigen Parameter...

also
Delphi-Quellcode:
  shellExecute(0, 'open', 'cmd.exe', PChar('/c fmas.exe ' + memo1.lines.Text + ' ' + edit2.text + ' ' + edit3.text, nil, sw_show);

dR4g0N 11. Mai 2004 08:32

Re: Problem mit ShellExecute (Parameter)
 
big thx an dich. hab es jetzt anders gelöst bekommen. und zwar habe ich von swiss delphi .. diesen source für eine shellexecute and wait procedure, womit es klappt.

Delphi-Quellcode:
procedure ShellExecute_AndWait(FileName: string; Params: string);
var
  exInfo: TShellExecuteInfo;
  Ph: DWORD;
begin
  FillChar(exInfo, SizeOf(exInfo), 0);
  with exInfo do
  begin
    cbSize := SizeOf(exInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd := GetActiveWindow();
    ExInfo.lpVerb := 'open';
    ExInfo.lpParameters := PChar(Params);
    lpFile := PChar(FileName);
    nShow := SW_SHOWNORMAL;
  end;
  if ShellExecuteEx(@exInfo) then
    Ph := exInfo.HProcess
  else
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
    Application.ProcessMessages;
  CloseHandle(Ph);
end;


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