Autor Beitrag
wayney
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 23.12.09 13:11 
HAllo nochma,
nachdem mein letztes Problem erfolgreich gelöst wurde, habe ich jetzt ein neues.
Ich möchte nur den ausgewählten Litbox-Eintrag mit einem Parameter starten. JEdoch soll das Parameter durch eine vorherige Eingabe in einem Textfeld bestimmt sein. MEin Problem ist nun, wie sage ich Shellexecute, dass es das Programm mit einem Parameter starten soll.
Bestes Beispiel ist der Internet Explorer. Ich weis wie ich eine feste URl mit Shellexecute öffnen kann. Aber ich möchte, dass er auf die eingegeben Variablen zugreift und man diese jederzeit ändern kann. Habe es auch schon damit probiert:

ausblenden Delphi-Quelltext
1:
Startp2.text:=ParamStr (2);					

für das Textfeld
ShellExecute(Application.Handle, 'open', PChar(ListBox1.Items.Strings[ListBox1.ItemIndex]), PCHAR('Paramstr(2)'), Nil, SW_SHOW);
geht nicht
ShellExecute(Application.Handle, 'open', PChar(ListBox1.Items.Strings[ListBox1.ItemIndex]+paramstr (2)), NilNil, SW_SHOW);
damit greift er nicht auf das Parameter zu

Jedoch erkennt mein shellexecute nur Paramstr (2) als url.
Wie kann ich einen Text als Variable speichern. Int und str funktionieren scheinbar nicht und das Forum spukt auch nichts brauchbares aus.
Hoffe ihr könnt mir noch mal helfen.
mfg wayney

Moderiert von user profile iconNarses: B- durch Delphi-Tags ersetzt
Moderiert von user profile iconTino: Topic aus VCL (Visual Component Library) verschoben am Mi 23.12.2009 um 15:14
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 23.12.09 13:25 
Hey,
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var FileName, Params: String;

  FileName := ListBox1.Items.Strings[ListBox1.ItemIndex];
  Params := StartP2.Text;
  ShellExecute(Application.Handle,
               'open',
               PAnsiChar(FileName),
               PAnsiChar(Params),
               PAnsiChar(ExtractFilePath(FileName)),
               SW_SHOW);

So sollte es gehen.

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
wayney Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 23.12.09 13:59 
Jop geht tausend dank;)
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Mi 23.12.09 14:25 
ich starte externe Programme mittels dieser Funktion

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PDWord): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb          := SizeOf(StartupInfo);
  StartupInfo.dwFlags     := STARTF_USESHOWWINDOW;// or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False, 
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS, 
    nil
    nil,
    StartupInfo, 
    ProcessInfo) 
    then
      Result := WAIT_FAILED 
  else 
  begin
    if wait = FALSE then 
    begin 
      if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
      exit; 
    end;
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result); 
  end
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess); 
  if ProcessInfo.hThread <> 0 then 
    CloseHandle(ProcessInfo.hThread);
end;


Die entsprechenden Parameter werden dabei einfach Leerzeichengetrennt mit dem Exenamen als Sting übergeben. Via wait kann man das Programm dazu bingen zu waren bis der externe Prozess beendet wurde.

_________________
mfg. Joel