Seite 1 von 3

Explorerfenster öffnen

Verfasst: 08.03.2013 17:44
von gekkonier
Hi!

Ich würde gerne aus meinem Programm heraus einen Ordner "öffnen"
D.h. wenn ich auf "den" Button klicke soll mir der Explorer das Verzeichnis öffen (unter OSX der Finder).

Geht das einfach mit den Bordmitten von Purebasic?
RunProgram scheint mir da der falsche Befehl dafür zu sein, oder?

Danke, Gekkonier

Re: Explorerfenster öffnen

Verfasst: 08.03.2013 17:59
von gekkonier
Ich habe herausgefunden, dass ich das unter Windows mit

Code: Alles auswählen

RunProgram("explorer.exe", GetCurrentDirectory()+"Output", "")
machen kann.

Wie könnte das unter OSX funktionieren?

Danke, Gekkonier

Re: Explorerfenster öffnen

Verfasst: 08.03.2013 18:02
von Kiffi
Was passiert denn auf dem Apfel, wenn man folgendes aufruft?

Code: Alles auswählen

RunProgram(GetCurrentDirectory()+"Output")
Grüße ... Kiffi

Re: Explorerfenster öffnen

Verfasst: 08.03.2013 18:31
von gekkonier
Danke für die Antwort

Wenn ich unter OSX

Code: Alles auswählen

If RunProgram(GetCurrentDirectory())
  Debug "ja"
Else
  Debug "nein"
EndIf
mache kommt leider nein, ansonst passiert nix.
Ich probier mal weiter rum.

Re: Explorerfenster öffnen

Verfasst: 08.03.2013 18:53
von Christian+
Schon mal so was getestet?

Code: Alles auswählen

RunProgram("open", "-R " + GetCurrentDirectory() + "Output", "")

Re: Explorerfenster öffnen

Verfasst: 08.03.2013 21:35
von gekkonier
Danke für den Tipp mit open!

Folgendes Ergebnis:
Wenn der Pfad kein Leerzeichen enthält, dann funktioniert diese Methode, aber sobald welche drinnen sind macht RunProgram nix.

Auf der Shell:

Code: Alles auswählen

open -R /Users/gekkonier/Desktop/Etik\ 4.1/Output/
funktioniert.

In Purebasic:

Code: Alles auswählen

RunProgram("open", "-R /Users/gekkonier/Desktop/Etik\ 4.1/Output/", "")
funktioniert nicht.

Wenn ich den Ordner in Etik umändere, um einen Pfad ohne Leerzeichen zu erhalten funktionierts.
Bug oder Pebkac?

Re: Explorerfenster öffnen

Verfasst: 08.03.2013 21:40
von RSBasic
Füg vor und nach dem Pfad ein Chr(34) hinzu.

Re: Explorerfenster öffnen

Verfasst: 08.03.2013 21:56
von gekkonier

Code: Alles auswählen

CompilerSelect  #PB_Compiler_OS
  CompilerCase #PB_OS_MacOS
    RunProgram("open", "-R " + Chr(34) + GetCurrentDirectory() + "Output" + Chr(34), "")
  CompilerCase #PB_OS_Windows
    RunProgram("explorer.exe", GetCurrentDirectory() + "Output", "")
CompilerEndSelect
Danke, die Doublequotes waren die (Er)lösung.

Trotzdem finde ich es seltsam, dass RunProgram("open", "-R /Users/gekkonier/Desktop/Etik\ 4.1/Output/", "") nicht funktioniert. Irgendwie hätte ich das doch erwartet.

Re: Explorerfenster öffnen

Verfasst: 08.03.2013 22:00
von ts-soft
Das kann niemals funktionieren, sobald ein Space auftritt ist der Parameter zuende und es folgt der nächste :wink:

Re: Explorerfenster öffnen

Verfasst: 08.03.2013 22:29
von gekkonier
Dann dürfte wohl der Space nach dem Backslash mit folgendem Space hier von der Shell sein (also gequoted) und so in Wirklichkeit nicht an open übergeben werden?

Code: Alles auswählen

open -R /Users/gekkonier/Desktop/Etik\ 4.1/Output/
Das ist jetzt prinzipiell das selbe wie

Code: Alles auswählen

open -R "/Users/gekkonier/Desktop/Etik 4.1/Output/"

Code: Alles auswählen

RunProgram("open", "-R " + Chr(34) + GetCurrentDirectory() + "Output" + Chr(34), "")
übergibt ja auch nach dem -R einen Space. Hat also nicht den Grund dass alles nach einem Space einen neuen Parameter erzeugt.

Irgendwie ist das nicht ganz rund und unlogisch.