Ergebnis 1 bis 12 von 12

Thema: [VC++] Externe .exe starten und parameter übergeben... wie?

  1. #1

    [VC++] Externe .exe starten und parameter übergeben... wie?

    Hallo,
    Ich habe versucht, für ein Commandline programm ne GUI zu programmieren und stecke jetzt beim Starten/Übergeben von Parametern fest.

    Und zwar habe ich versucht, system(Edit1->Text); zu verwenden
    (im Edit1->Text steht der Befehl , z.b.: "test.exe -h filename.ext"), ging nicht,
    genauso wenig wie den Wert von Edit1 einen char VariablenArray zuzuweisen,
    weil Edit1 Text ja ANSI String ist, und weder system() noch char Arrays das unterstützen ._.
    Uhm.. ja.. dann hab ich einen weiteren Befehl gefunden, ShellExecute, die
    Befehlsbeschreibung hab ich aber nicht ganz geblickt, also hat er mir viele Fehler rausgeworfen T_T

    Kann ich überhaupt irgendwie einen ANSI String so konvertieren, dass er vom system() verwendet werden kann? Oder dass ich ihn in einen charArray speichern kann? Oder, wie ich den ShellExecute benutze?

    Need help ._.

  2. #2
    Beim Borland C++ Builder hat die AnsiString Klasse die Möglichkeit, mittels einer Funktion (im genaueren: c_str() ) das ganze in ein Char-Array zu konvertieren. VSC++ hat sicher auch so eine Möglichkeit. Versuch einfach über die Syntaxkomplettierung einen netten Eintrag zu finden, ansonsten nenn mir die genaue Klasse, dann kann ich ja suchen...

    EDIT: ²Tomsym: Nicht, dass ich wüsste.

    Geändert von MuadDib (09.10.2005 um 13:02 Uhr)

  3. #3
    Danke für die Antwort,
    die c_str() hab ich auch gefunden, bloß war ich gestern wohl zu müde, um es richtig einzusetzen ^^

    Nun hab ich aber ein weiteres Porblem, und zwar kann ich mit system irgendwie nur dateien von c aus starten, muss ich noch irgendwas abändern?

    ->> system(cp); //in cp steht: "dtest.exe -n test.file -a test.file"

    Dann geht das console fenster auf, und schließt sich wieder, so dass ich nicht sehen kann, was da steht. Benutze Borland und WinXP SP2 <_<

    [edit]: Ich habe getestet, die test.exe selber unterstützt andere Partitionen, ich kann mit ihr Files im beliebigem Path öffnen, aber mein Projekt kann das nicht, die test.exe muss alo auf cliegen, damit er sie starten kann

    Geändert von ChronoSphere (09.10.2005 um 11:40 Uhr)

  4. #4
    Muad, hast du mal Biosfear gespielt?

    Bei Visual C++ geht es übrigens genauso, einfach Stringname.c_str() benutzen.

    ShellExecute:

    Code:
    HINSTANCE ShellExecute(
    HWND hwnd,
    LPCTSTR lpOperation,
    LPCTSTR lpFile,
    LPCTSTR lpParameters,
    LPCTSTR lpDirectory,
    INT nShowCmd
    );
    zB.

    Code:
    ShellExecute(hWnd, "open", "C:\Datei1.exe", "-w", NULL, SW_SHOWNORMAL);

  5. #5
    Code:
    ShellExecute(hWnd, "open", "C:\Datei1.exe", "-w", NULL, SW_SHOWNORMAL);
    Also, wenn ich das benutze, meint er, hWnd sei ein nicht definiertes symbol.. ich bin noch ein ziemlicher Anfänger

  6. #6
    Du brauchst eine Variable für dein Fensterhandle. Gib einfach an Deinformname->Handle oder Deinformname->hwnd, weiß nich wie das bei bcb ist

  7. #7
    Hmm. also er hat die zeile geschluckt, aber die exe startet er nich....

    ->> ShellExecute(Form1->Handle, "open", "cnsvd.exe", cp, NULL, SW_SHOWNORMAL); // cp = char array mit parametern

    kann man den system()-Befehl nicht irgendwie darauf einstellen, dass er erweiterte Partitionen sieht?

  8. #8
    ich hatte nie wirklich mit dem systembefehl zu tun. gib doch mal für form1->handle mal NULL an. und probiers mal ohne parameter.

  9. #9
    Ok, also jetz gehts, aber auch nur, wenn die .exe auf c liegt T_T
    die Parameter nimmt er an, jetzt muss man das noch irgendwie einstellen, dass er die exe von d aus auch starten kann

  10. #10
    Der Vorletzte Parameter ist das Verzeichnis, gib mal beim 3. nur den Dateinamen und im vorletzten Ordner usw an

  11. #11
    Nur mal so nebenbei... Hast du den Quellcode für das externe Programm? Wenn ja, wäre es auch denkbar, das Programm in eine Bibliothek umzubauen und die gegen die GUI zu linken? (Sprich: Muß das externe Programm auch als externes Programm vorliegen oder könntest du es auch fest in die GUI einbauen?)

  12. #12
    @Jesus_666: Ja, ich hab den Quellcode, das mit Bibliotheken ist mir aber noch zu hoch ^^

    @Tomsym: ab das Problem jetzt gefunden... es ist *trommelwirbel* mein Rechner
    Hab in der Schule heute ausprobiert, alles geht, egal ob c, d oder e oder whatever.
    Jetzt nach hause gekommne, _nix_ am Prog verändert, nun geht's auch

    Jetzt muss ich nur noch irgendwie den dateipath aus dem Namen, dern er in die Liste übernimmt, rausfiltern... Ich hab daran gedacht, es mit ner schleife durchzugehen, und nach jedem '\' im String die Zeichen links abzuschneiden... geht das irgendwie mit einer vordefinierten Funktion?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •