Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » *.exe Datei starten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.07.2007, 18:20 Uhr
~Loods
Gast


Hallo,

hab schon fleißig im Internet gesucht, aber bin noch auf keine Lösung gestoßen, die funktioniert.
Ich will aus einer Konsolenanwendung ein externes Programm starten, kann mir jemand einen Befehl nennen, der dafür geeignet ist?
Am besten mit einem Beispiel?

Danke im voraus,
Loods
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.07.2007, 18:25 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


system (aber siehe FAQ - "sytem is bad")
ShellExecute (damit kann man auch Webseiten aufrufen usw)
CreateProcess (mächtiger aber auch aufwendiger)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.07.2007, 18:29 Uhr
~Loods
Gast


danke für die schnelle antwort, aber ich glaube ich bin gerade einfach zu unfähig das hinzukriegen. Kannst du mir mal ein Beispiel für einen Programmaufruf mit ShellExecute posten? Komm damit irgendwie nicht zurecht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.07.2007, 20:19 Uhr
Braunstein



Hallo,

Hier ist mal ein Beispiel

C++:
void RunApplication(const std::string &FileName, const std::string &FileParam)
{
  int ret = (int) ShellExecute(0, "open", FileName.c_str(), FileParam.c_str(), 0, SW_SHOWNORMAL);

  if (ret <= 32)
  {
    string msg;

    switch(ret)
    {
      case ERROR_FILE_NOT_FOUND, SE_ERR_FNF :
             msg = "File '" + FileName + "' not found!";
             break;

      case ERROR_PATH_NOT_FOUND, SE_ERR_PNF :
             msg = "Path to the file '" + FileName + "' not found!";
             break;

      case ERROR_BAD_FORMAT :
             msg = "The called code is corrupt!";
             break;

      case SE_ERR_ACCESSDENIED, SE_ERR_SHARE :
             msg = "Access to file '" + string(FileName) + "' denied!";
             break;

      case SE_ERR_ASSOCINCOMPLETE, SE_ERR_NOASSOC :
             msg = "The filetype is not connected to application!";
             break;

      case 0, SE_ERR_OOM :
             msg = "Not enough memory to start the application!";
             break;

      default : msg = "File '" + string(FileName) + "' cannot be opened!";
    }
// Fehlermeldung ausgeben, hier beim BCB
//    Application->MessageBox(msg.c_str(), "Error", MB_OK + MB_ICONERROR);
  }
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.07.2007, 21:43 Uhr
~Loods
Gast


muss ich irgendwelche headerdateien einbinden oder ähnliches machen?
Fehler: 'ShellExecute': Bezeichner wurde nicht gefunden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.07.2007, 12:17 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


windows.h
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.10.2007, 14:54 Uhr
BuddyLove



Oder sowas...



C++:

// Mit der Funktion system() können Sie aus Ihrem eigenen Programm
// ein anderes Programm starten. Damit können Sie alle Aufrufe
// starten, die Sie sonst auch in der Shell starten können.
// Außer Kommandos der Shell und anderen Anwendungen sind dabei auch
// Metazeichen wie '*', '|', '<' oder '>' zu beachten. Ein Dateiname
// darf aus allen Zeichen mit Ausnahme von '\0' (Stringende) und '/'
// (Verzeichnissoperator) bestehen. Es können Newlines und sonstige
// Steuerzeichen vorkommen. Es sind also auch Dateiexpansionen, Pipes,
// Umleitungen etc. möglich. Die Funktion system() ist eine Mischung
// aus fork(), exec*() und waitpid() und kann auch dafür eingesetzt
// werden. Hier die Syntax dazu:

// #include <stdlib.h>

// int system(const char *kommando);

// Beim Aufruf der Funktion wird eine Shell (/bin/sh) in einem
// eigenen Prozess gestartet und führt kommando aus. Danach wartet
// system() auf die Beendigung des (Kind-)Prozesses. So lange bleibt
// der aufrufende Prozess allerdings auch blockiert. Wenn die Shell
// nicht gestartet werden konnte, wird als Fehler der Wert 127
// zurückgegeben. Bei fehlerfreier Ausführung gibt system() 0 zurück,
// ansonsten den Rückgabewert der Shell. Hierzu ein Beispiel, welches
// mithilfe des system()-Aufrufs im Verzeichnis /usr/include nach
// allen Dateien sucht, die mit der Zeichenfolge 'std' beginnen.


#include <stdlib.h>
#include <stdio.h>

int main (void) {
   printf("Vor dem system()-Aufruf\n");
   system("C:\\Windows\\system32\\help");        // beachte Escape Sequenzen...
   printf("Nach dem system()-Aufruf\n");
   return  EXIT_SUCCESS;
}





auch unter Windows...

MfG

BuddyLove

Dieser Post wurde am 29.10.2007 um 14:55 Uhr von BuddyLove editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.10.2007, 07:25 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


nur system ist bad ... (siehe FAQ)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: