Paramter an ShellExecute



  • Hallo Zusammen
    Ich habe vor kurzem angefangen c respektive c++ zu lernen und versuche mich gerade an einem kleinen Programm zu schreiben. Dabei will ich das man ein Wort eingeben kann in der Konsole und anhand einer If Funktion entscheidet das Programm welche Homepage das geöffnet werden soll. Nun wollte ich den Aufruf der Homepage in eine Funktion auslagern die ich dann entsprechend aufrufe. Den Aufruf selbst wollte ich mit ShellExecute durchführen.
    Leider bekomme ich immer folgende Fehlermeldungen:

    In function `void homepageAufrufen(std::string)'

    cannot convert `std::string' to `const CHAR*' for argument `3' to `HINSTANCE__* ShellExecuteA(HWND__, const CHAR, const CHAR*, const CHAR*, const CHAR*, INT)'

    [Build Error] [main.o] Error 1

    Folgender Code:

    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include <windows.h>
    
    using namespace std;
    
    void homepageAufrufen(string homepage) {
            ShellExecute(NULL, "open", homepage , NULL, NULL, SW_SHOW);
         }
    
    int main(int argc, char *argv[])
    {
        int iSchleife = 1;
    
        while(iSchleife = 1)
        {   
    
            string strName;
             cout << "Choose your website: ";
             cin >> strName;
    
                 if ( strName == "google" )    {
                      string homepage = "https://www.google.com";
                      homepageAufrufen(homepage);
                      cout << "Google Guide is opening\n";                  
                    }
                 else {
                      cout << "I don't know this website\n"; }
    
        }
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Hab schon ne gefühlte Ewigkeit bei Google rumgesucht aber nichts gefunden 😞
    Kann mir irgendwer weiterhelfen?

    Grüsse
    Nemoc



  • Naja, der Fehler sagt ja schon alles. homepage ist ein std::string und kein const char*. Lösung: http://www.cplusplus.com/reference/string/string/c_str/



  • Oder char Array übergeben.



  • Hey dot
    danke vielmals für die extrem schnelle Antwort. Hab jetzt den String einfach abgeändert in ein const char*. Habe vorher schon versucht es direkt als const char zu deklariere und zu übergeben aber das hat nicht geklappt und mit dem c_str habe ich anscheinend was falsch eingegeben. Aber insofern was ist der unterschied zwischen const char und const char*? hat das was mit den Zeigern zu tun?

    @Omicron: wenn ich mich nicht irre ist es das was ich nun gemacht habe 🙂

    Gruss Nemoc



  • Nemoc schrieb:

    @Omicron: wenn ich mich nicht irre ist es das was ich nun gemacht habe 🙂

    Gruss Nemoc

    Jepp! 😉


Anmelden zum Antworten