ExecFile gibt's nicht mehr?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

juse4pro

Betreff: ExecFile gibt's nicht mehr?

BeitragDo, März 05, 2009 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

arbeite grade an einem Luncher und brache einen Befehl, welcher eine andere Exe ausführt, wie geht das?
Den Befehl ExecFile scheint es ja nicht mehr zu geben...
Portfolio |LinkedIn |XING

D2006

Administrator

BeitragDo, März 05, 2009 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
system_("calc.exe")
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

juse4pro

BeitragDo, März 05, 2009 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
also, tut mir echt leid, aber du musst dich schon "entwas" genauer ausdrücken... Wink
Portfolio |LinkedIn |XING

D2006

Administrator

BeitragDo, März 05, 2009 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Rolling Eyes

Kopier das man in ne neue bmx-Datei und führe es aus. Und *zackboombang* öffnet sich der Taschenrechner (a.k.a "calc.exe"). So, und wenn du nun ein anderes Programm öffnen willst, dann musst du da in den Klammern ein anderes angeben. Klingt komisch, ist aber so!
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

DAK

BeitragDo, März 05, 2009 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
geht auch mit OpenURL
Gewinner der 6. und der 68. BlitzCodeCompo

juse4pro

BeitragDo, März 05, 2009 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, danke!

@D2006:
Sorry, konnte ich ja nicht wissen, dass das BlitzMax Code war...
Portfolio |LinkedIn |XING

Geeecko

BeitragDo, März 05, 2009 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist aber von abzuraten...
Funktioniert nicht immer...
Jedenfals nicht auf allen Windows-Systemen.

Ich habe es damals mit hilfe von C gelöst.
Dann hab ich noch eine funktion eingebaut, die prüft, ob es eine URL ist.
ggf. wurde OpenURL(URL) aufgerufen...

lg MD


€dit:
So habe ich es gemacht:
Code: [AUSKLAPPEN]

--------------------- helper.c --------------------
void ExecFile(char *cmd)
{
 system(cmd);
}



--------------------execfile.bmx-------------------
Import "helpers.c"

Extern
   Function __ExecFile(cmd:Byte Ptr) = "ExecFile@4"
End Extern

' Startet eine Datei
Function ExecFile(cmd:String)
   If(Right(cmd, 1) = "\" Or Right(cmd, 1) = "/") Then cmd = Mid(cmd, 1, Len(cmd) - 1)
   
   If(FileType(cmd) = 2) Then
      OpenURL(cmd)
      Return
   EndIf

   ' ---> URL ausschließen ( Sonst mit dem Browser öffnen)
   Select(Lower(Left(cmd, 4)))
      Case("www.")
         OpenURL(cmd)
         Return
         
      Case("http")
         If(Lower(Left(cmd, 5)) = "http:" Or Lower(Left(cmd, 5)) = "https:") Then
            OpenURL(cmd)
            Return
         EndIf
   End Select

   ' ---> Die Datei öffnen
   Local temp:TStream = WriteFile(getenv_("temp") + "\ExecFile.bat")
        WriteLine(temp, "@ECHO off")
        WriteLine(temp, "set temp_path=" + Chr(34) + cmd + Chr(34))
        WriteLine(temp, "start " + Chr(34) + Chr(34) + " %temp_path%")
   temp.Close()
       
   __ExecFile(getenv_("temp") + "\ExecFile.bat")
End Function



PS.: Ich habe mich auch gewundert, wieso es auf dem Umweg über C funktioniert...also fragt nicht xD aber es funktioniert so wenigstens auf allen (win-)Systemen.


Pssss.: Ich habe es mit einer extra *.c Datei gelöst. War damals ordentlicher. Könnt ihr ja direkt aus "Win32" "externen".

juse4pro

BeitragFr, März 06, 2009 15:42
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm... habe aber nur die demo (also kein c [oder?])

und ist umweg über C der einzigste richtige, gute weg?
ich möchte eine andere exe (im selben verzeichniss) mit kommandozeilenparametern aufrufen
Portfolio |LinkedIn |XING
 

ChristianK

BeitragFr, März 06, 2009 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Exe könntest du auch mit CreateProcess starten. Oder falls dein Programm nur auf Windows funktionieren soll, kannst du auch ShellExecute importieren und aufrufen.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group