Programm/Batch aus Xojo heraus starten

Hallo,

ich habe zwar zu dem Thema bereits einen ausführlichen Beitrag in ‘getting started’
abgesetzt (‘start other programs within xojo’), aber leider keinerlei Antwort(en)
erhalten.

Weil zwei der Sachen allerdings ziemlich wichtig für mich
sind hier nochmal zusammengefasst zu den Problemen:

Wie (bzw. geht das überhaupt) kann ich…

…Parameter an zu startende Programme übergeben? Beispiel:
f=gettruefolderitem(“C:\Program Files\XnViewMP\xnviewmp.exe”)
startet einen Bildbetrachter.
Ich möchte aber das zu betrachtende Verzeichniss mit übergeben.
f=gettruefolderitem(“C:\Program Files\XnViewMP\xnviewmp.exe c:\pictures”)
funktioniert allerdings nicht.

…ein Programm bzw. batch-Datei in dem Verzeichniss ausführen
in dem es/sie liegt? Beispiel:
Batch c:\batch\XYZ.bat wird aufgerufen.
Aus dieser Batchdatei heraus wird jetzt ABC.exe aufgerufen, welche in
c:\batch liegt. Funktioniert hier z.B. mit Visualbasic, aber nicht mit Xojo.

Gruss

Das ist zwar für den Mac aber für Windows sollte das nicht so viel anders sein:

https://forum.xojo.com/39979-running-a-separate-console-app-from-within-xojo

Meistens ist das Problem falscher Gebrauch von " und ’ und / und \. Was machst du denn mit gettruefolderitem? Da muß man wahrscheinlich den Pfad als String übergeben.

Nimm die Shell Klasse.

Oder die WindowsExecuteMBS Funktion in meinen Plugins:
http://www.monkeybreadsoftware.net/windows-win-method.shtml

Hallo Christian,

die WindowsExecuteMBS Funkion sieht sehr gut aus.
Anhand des Beispiels denke ich das das die Antwort
auf mein Problem wre.

Allerdings sehe ich dort auch:

Plugin version: 11.0, Mac: No, Win: Yes, Linux: No, Console & Web: Yes,
--------

Heisst das, das Linux nicht untersttzt wird?

Mein Wechsel von Visualbasic auf Xojo ist nmlich darin begrndet
das ich auf meine Programme auf Linux umstellen mchte.

Dann wre das fr mich so (leider) nicht nutzbar.

Wenn dem so ist: Wie nutze ich denn die Shell-Klasse?
Habe mir dazu auch schon die von Beatrix empfohlene Seite
angeschaut. Werde allerdings berhaupt nicht schlau daraus
wie mir das helfen sollte Programme mit Parametern aufzurufen.

Ist irgendwo ein Beispiel des Programmaufrufs mit Parametern
(wie zu deinem Plugin) verfgbar?

Gruss

Die Funktion heit nicht umsonst Windows.

dim s as new shell s.execute App.ShellPath+" -v --test"

oder so.

Hallo Christian,

Programme mithilfe der Shell Klasse starten funktioniert jetzt hier.

mShell = New shell
mShell.Mode = 2
cmd = “c: && cd \Program Files (x86)\OpenOffice 4\program\ && scalc.exe c:\docs\example.ods”
mshell.Execute cmd

Startet mir mein Calc und öffnet ein Dokument.
Das funktioniert auch mit diversen anderen Programmen gut.

Allerdings wenn ich Xojo selber starten will:
cmd = "C: && cd \Program Files (x86)\Xojo\Xojo 2017r1\ && Xojo.exe
passiert entweder garnichts oder aber das Xojo Startfenster erscheint
(Xojo loading Framework etc.), zieht den Progressbalken bis zum Ende
durch und verschwindet dann wieder. Xojo startet also und beendet
sich nach dem Startrequester wieder (im Task-Manager kontrolliert).
Auch mit anderen Xojo-Versionen - dasselbe.

Da bin ich jetzt ratlos.
Hast Du eine Ahnung wo da das Problem liegen könnte?

Gruss

Leerzeichen in dateinamen werden wie Trenner zu weiteren Argumenten interpretiert. Daher mut du die Pfade in Anfhrungszeichen setzen oder ShellPath verwenden, was solche problematischen Zeichen “escaped”. Allerdings wundert es mich, da da berhaupt deine anderen Bsp funktionieren, denn die haben auch Spaces drin. Seltsam.

Hallo Thomas,

das mag sein, aber alle Programme und auch Xojo starten durchaus so.

Nur das Xojo sich dann -wie oben beschrieben- wieder beendet.

Habe das jetzt übrigens nochmal direkt als batch-Datei getestet.

z.B.: test.bat

C:
cd \Program Files (x86)\Google\Google Earth\client
googleearth.exe

Alle Programme starten einwandfrei.

Xojo macht auch dort Probleme.

Scheint also eher ein generelles Problem zu sein Xojo per Shell
zu starten. Seltsam.