Externes Programm starten und ausführen in. Zuweisen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DiaryOfDreams
Beiträge: 16
Registriert: Mo 10. Mai 2010, 15:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hannover

Externes Programm starten und ausführen in. Zuweisen

Beitrag von DiaryOfDreams »

Hallo,

ich möchte ein externes programm starten, das klappt auch. Mit shellexecute.
Wie kann ich jetzt aber noch den ort zu weisen? z.b. Ausführen in y:\ordner

Lg

Olli

Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Re: Externes Programm starten und ausführen in. Zuweisen

Beitrag von theo »

Weiss nicht genau was du meinst.
Mit TProcess kannst du das Arbeitsverzeichnis setzten

http://www.freepascal.org/docs-html/fcl ... ocess.html" onclick="window.open(this.href);return false;
http://www.freepascal.org/docs-html/fcl ... ctory.html" onclick="window.open(this.href);return false;

S.a: http://wiki.lazarus.freepascal.org/Exec ... rograms/de" onclick="window.open(this.href);return false;

DiaryOfDreams
Beiträge: 16
Registriert: Mo 10. Mai 2010, 15:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hannover

Re: Externes Programm starten und ausführen in. Zuweisen

Beitrag von DiaryOfDreams »

Ich möchte nur parameter übergeben.
Wenn du dir eine verknüpfung anguckst steht da ausführen in.
Das möchte ich zuweisen. Mit shellexecute.

ShellExecute(0, nil, PChar('C:\programme\mozilla firefox\firefox.exe'),nil,nil,SW_SHOWNORMAL); Hier muss irgendwo currentdirctory oder Cdirectory rein. Nur wie?


Danke für deine antwort.

Lg Olli

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Externes Programm starten und ausführen in. Zuweisen

Beitrag von Socke »

ShellExecute ist nur unter Windows verfügbar; plattformunabhängig bist du mit ExecuteProcess.
Wenn die Dokumentation zu ShellExecute nichts her gibt, muss dein Programm zuerst in das entsprechende Verzeichnis wechseln:

Code: Alles auswählen

var olddir: String;
olddir := GetCurrentDir;
SetCurrentDir('/hier/soll/programm/ausgeführt/werden');
ExecuteProcess('C:/abc.exe',['param1','param2']);
SetCurrentDir(olddir);
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

DiaryOfDreams
Beiträge: 16
Registriert: Mo 10. Mai 2010, 15:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hannover

Re: Externes Programm starten und ausführen in. Zuweisen

Beitrag von DiaryOfDreams »

Ok. Vielen dank.

Ich bin leider erst montag wieder auf der arbeit. Dann werde ich das ausprobieren.
Ich gebe dann rückmeldung. Natürlich auch wenn es funktioniert.

Mein problem ist, das ein programm xyz gestartet wird ich dann aber die fehlermeldung bekomme ordner xyz nicht gefunden.
Daher gehe ich davon aus,das ich den auszuführenden ordner bei diesem programm angeben muss. Sonst findet es den ordner nicht.
Ich probiere es montag.

DiaryOfDreams
Beiträge: 16
Registriert: Mo 10. Mai 2010, 15:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hannover

Re: Externes Programm starten und ausführen in. Zuweisen

Beitrag von DiaryOfDreams »

Socke!!! Danke Socke.

Es funktioniert.

Lg Olli

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Externes Programm starten und ausführen in. Zuweisen

Beitrag von Hitman »

Ohje, was fürn hässlicher Workaround ... dann doch lieber ShellExecute richtig nutzen:
http://msdn.microsoft.com/en-us/library/bb762153(VS.85" onclick="window.open(this.href);return false;).aspx

Code: Alles auswählen

ShellExecute(0, nil, 'firefox.exe', nil, 'C:\programme\mozilla firefox\', SW_SHOWNORMAL);

DiaryOfDreams
Beiträge: 16
Registriert: Mo 10. Mai 2010, 15:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hannover

Re: Externes Programm starten und ausführen in. Zuweisen

Beitrag von DiaryOfDreams »

Was ist der unterschied?

Ich starte programme vom server. Auf 12 clients.

Lg Olli

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Externes Programm starten und ausführen in. Zuweisen

Beitrag von Socke »

Hitman hat geschrieben:Ohje, was fürn hässlicher Workaround ... dann doch lieber ShellExecute richtig nutzen
Sieht vielleicht hässlich aus, ist dafür Platformunabhängig. Unter Linux/Unix ist es ausreichend, wenn der fork vor dem ausführen in das entsprechende Verzeichnis wechselt (siehe entsprechenden Code in der Include-Datei).
Wie und ob etwas vergleichbares für Windows vorhanden ist, weiß ich nicht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

DiaryOfDreams
Beiträge: 16
Registriert: Mo 10. Mai 2010, 15:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hannover

Re: Externes Programm starten und ausführen in. Zuweisen

Beitrag von DiaryOfDreams »

Es funktioniert.

Aber ich werde das doch nochmal mit shellexecute probieren.

Antworten