Entwickler-Ecke

Windows API - Externe .Exe öffnen


der organist - Mo 20.10.08 17:10
Titel: Externe .Exe öffnen
Hi Leutz,
ich habe nun das Forum durchforstet, so dass die Suchfunktion schon bald heiß laufen müsste (man findet Themen, die sagen dann aber andere wichtige Sachen, wie variable Pfade sind böse. Da solle man besser mit ExtractFilePath(ParamStr(0)) arbeiten).

Jedenfalls:
Mein Programm soll eine Textdatei auslesen und wenn der Text 'run' ist, soll ein anderes programm gestartet werden:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Timer1Timer(Sender: TObject);
var TFile : TextFile;
    status : String;
begin
  AssignFile (TFile,path+'control.txt');
  Reset (TFile);
  ReadLn (TFile, status);
  CloseFile (TFile);
  if status = 'run' then begin
     ShellExecute(Handle,'open',PChar(path+'Taustakuvakello.exe'),nil,nil,SW_MINIMIZE);
  end;
end;


Der Pfad wird folgendermaßen erstellt:


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormCreate(Sender: TObject);
begin
  path := ExtractFilePath (ParamStr(0));
  path := copy(path,1, Length(path)-17); //weil sich das Programm in einem übergeordneten Ordner befindet
end;


Ich hab den Pfad mehrmals überprüft, den String mehrmals neu geschrieben, aber es passiert nichts.


Boldar - Mo 20.10.08 17:14

Wenn es 17 Zeichen weniger sind, muss es length(path)-18 heissen, da strings bei 0 beginnen...


jaenicke - Mo 20.10.08 17:19

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
Wenn es 17 Zeichen weniger sind, muss es length(path)-18 heissen, da strings bei 0 beginnen...
Tun sie nicht, DeinString[1] ist das erste Zeichen...


jakobwenzel - Mo 20.10.08 17:22

Aber wer sagt, dass der Verzeichnisname immer 17 Zeichen hat?
-->Mit Pos den passenden Backslash finden und da abschneiden
(Vllt gehts auch, einfach ..\ anzuhängen.)


der organist - Mo 20.10.08 17:25

Der Pfad stimmt aber so, denn (a) ich habe in mehrmals per Label anzeigen lassen (war richtig) und (b) befindet sich im gleichen Ordner wie die Exe das gelesene Dokument. Wenn ich den Pfad auch nur irgendwie ändere (an der Länge), dann gibt es einen Error, dass er die Datei (bei AssignFile) nicht gefunden hat. Dementsprechend muss das so richtig sein.

Naja, mit den 17 Zeichen, das handelt sich ja um einen speziellen Ordner, in dem sich das öffnende Programm befindet.