Befehl zum öffnen eines anderen Programms



  • Ein Backslash \ in einem C Source Code (z.b. in Strings) wird für gewöhnlich als "\" verwendet.
    Also so:

    "C:\\Program\\Mozilla\\firefox.exe"
    

    HTH,
    Martin

    Übrigens, wie hast Du es geprüft, ob der Pfad tatsächlich da ist?
    Weil der Pfad "C:\Program\..." gibt es genau so nämlich nicht (jedenfalls nicht bei default Windows Installationen) 🕶



  • Mmacher schrieb:

    Übrigens, wie hast Du es geprüft, ob der Pfad tatsächlich da ist?
    Weil der Pfad "C:\Program\..." gibt es genau so nämlich nicht (jedenfalls nicht bei default Windows Installationen)

    Ne den Ordner hab ich extra angelegt.

    system("start A:\bla bla\LuH.exe");
    

    so sieht jetzt der Versuch aus, leider vergebens.

    Und das ist die Fehlermeldung:

    "A:◘la" konnte nicht gefunden werden.Stellen Sie sicher.....



  • Hallo chewee,

    so hat es keinen Sinn.
    Wir wissen nicht, wie Deine Pfade aussehen. Also die genaue Bezeichnung des angelegten Pfads. Und die genaue Bezeichnung des Strings in Deinem Source-Code.

    Am besten, poste nochmal Deinen Code (letzter Stand) hierher. Dann sehen wir wie Du versuchst auf den Pfad zuzugreifen.
    Übrigens: Bitte kopiere den Pfad rein, nicht abtippen! Wir sind schon so oft auf solche banalen Anfängerfehler reingefallen.

    chewee schrieb:

    "A:◘la" konnte nicht gefunden werden.Stellen Sie sicher.....

    Das ist für mich ein klarer Hinweis darauf, daß Du meinen Text vorhin nicht richtig gelesen hast!
    Nochmal die Preisfrage: Wie gebe ich als C-Programmierer den Backslash in den String ein? 😡

    Martin



  • So...

    #include<iostream>
    #include <stdlib.h>
    using namespace std;
    char w;
    void openfirefox()
    {
        [b]system("start A:\bla bla\LuH.exe");[/b]
    }
    
    void openhddA()
    {
        system("start A:");
    }
    
    void openhddG()
    {
        system("start G:");
    }
    
    int main()
    {
        while(w!='4')
        {
            cout << "\n\tHallo Nico\n";
            cout << "Was moechtest du tun? \n";
            cout << "(1) Firefox oeffnen...\n";
            cout << "(2) Festplatte A: oeffnen...\n";
            cout << "(3) Externe Festplatte oeffnen...\n";
            cout << "(4) Beenden!\n\t";
            cin  >> w;
            switch(w)
            {
                case '1':
                    openfirefox();
                    break;
                case '2':
                    openhddA();
                    break;
                case '3':
                    openhddG();
                    break;
                case '4':
                    cout <<"\n\tAuf Wiedersehen!\n";
                    break;
            }
        }
    
    }
    

    und das was Fett gedruckt ist da steht

    system("start A:\bla bla\LuH.exe");
    

    und bei "bla bla" ist ein Leerzeichen.
    Und wenn ich das Prog ausführen will und ich die nummer 1 eintippe
    kommt ein fenster mit der Fehlermeldung:

    "A:◘la" konnte nicht gefunden werden.Stellen Sie sicher.....

    Nun leider lassen sich manche Pfade nicht mehr ändern ohne Neuinstallation.
    Also wie sage ich dem Kompiler das bei dem Leerzeichen nicht schluss ist sondern erst wenn die Zeile zuende ist oder so?



  • chewee schrieb:

    system("start A:\bla bla\LuH.exe");
    

    system("start \"A:\*bla bla\*LuH.exe\"**");

    Escape-Sequenz



  • system("start \"A:\*bla bla\*LuH.exe\"**");



  • basics schrieb:

    chewee schrieb:

    system("start A:\bla bla\LuH.exe");
    

    system("start \"A:\*bla bla\*LuH.exe\"**");

    Escape-Sequenz

    Das klappt nicht



  • chewee schrieb:

    Das klappt nicht

    du Ärmster!



  • Nun, Leerzeichen in einem Pfad ist eine zusätzliche Fehlerquelle.

    Also, am besten ist es, Du legst Dir einen Pfad OHNE Leerzeichen an.
    Und berichte hier ob es erfolgreich war.
    (ich habe schon gelesen, daß Du keine Pfade ändern kannst, aber um Deine Fehlerquellen einzugrenzen, lege bitte zum Testen einen Pfad ohne Leerzeichen an, z.B. "C:\Testpfad\").

    So, und in Deinem Code lese ich:

    system("start A:\bla bla\LuH.exe");
    

    Das ist falsch, wieso hast Du meinen Hinweis mit dem Backslash nicht ernstgenommen?
    Weißt Du überhaupt was ein Backslash ist?
    Ich wiederhole nochmal (und zwar zum letzten Mal!): Ein Backslash mußt Du unbedingt als Escape-Sequenz \\ in einem C-String eingeben, also doppelt!
    Nun zurück zu meinem oben vorgeschlagenen Testpfad, so muß es aussehen:

    system("start A:\\Testpfad\\LuH.exe");
    

    Ich selbst werde das nicht prüfen, weil ich die Funktion system() noch nie benutzt habe und wohl auch nie benutzen werde (dafür gibt es bessere Funktionen in Win-API, aber das ist eine andere Geschichte)

    So, nun zum Knackpunkt "Pfad mit Leerzeichen":
    In vielen Situationen müssen Pfade und/oder Dateinamen, die ein Leerzeichen enthalten, explizit in doppelten Anführungszeichen gesetzt werden.
    Da sonst nicht eindeutig klar ist ob das Leerzeichen noch zum Datei-/Pfadnamen gehört oder ob es der Beginn eines neuen Arguments an der Kommandozeile einleitet.

    Hinweis: Doppelte Anführungszeichen " innerhalb des C-Strings müssen auch als Esqape-Sequenz eingegeben werden wie beim Backslash!

    HTH,
    Martin



  • basics schrieb:

    chewee schrieb:

    Das klappt nicht

    du Ärmster!

    Weil deine Angabe auch nicht ganz korrekt war. 😉

    @chewee: Dir empfehle ich, das du dich erstmal mit den Escapesequenzen auseinandersetzt, ohne Verständnis dafür kommst du hier nicht weiter, und ich glaube auch nicht, dass die anderen dir die Lösung vorkauen wollen.

    https://de.wikipedia.org/wiki/Escape-Sequenz



  • Burkhi schrieb:

    basics schrieb:

    chewee schrieb:

    Das klappt nicht

    du Ärmster!

    Weil deine Angabe auch nicht ganz korrekt war. 😉

    Sie waren richtig, nur das Forum schneidet die Escape-Sequenz \" weg 😉



  • Ok, dann nehm ich es natürlich zurück. 😉 😉


Anmelden zum Antworten