ShellExecute



  • Hallo zusammen,

    Kann mir jemand sagen, wie die folgende Zeile richtig heißt?

    ShellExecute(NULL, "open", "Shutdown.exe", "-" << _this->m_host << " -reboot", NULL, SW_SHOW);
    

    Danke
    Michael



  • Hallo

    ShellExecute(NULL, "open", "Shutdown.exe", string("-" + _this->m_host + " -reboot").c_str(), NULL, SW_SHOW);
    

    bis bald
    akari



  • Hi,

    Danke erstmal, ich erhalte jedoch noch 3 Fehler:

    error C2110: '+': Zwei Zeiger können nicht addiert werden
    error C2228: Der linke Teil von '.c_str' muss eine Klasse/Struktur/Union sein Typ ist ''unknown-type''
    error C3861: 'string': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden

    Kennst Du eine Lösung?

    Vielen Dank
    Michael



  • Hallo

    benutzt du denn std::string? Ist nämlich empfehlenswert.
    http://www.cppreference.com/cppstring/

    Meine Lösung basiert eigentlich darauf, das _this->m_host ein String ist.

    bis bald
    akari



  • Ich glaube schon, das das ein String ist ("PC-2")
    Oder irre ich mich da?



  • Hallo

    du must doch wissen, was für ein Datentyp hinter _this->m_host steht.
    Was nun genau für ein Wert zugewiesen ist, ist nicht wichtig.

    bis bald
    akari



  • Morgen,

    Ich habe leider sehr wenig Ahnung von c++, aber durch die folgende Reihe nehme ich an, das das TCHAR ist.

    TCHAR m_host[256];
    

    Ich habe schonmal nach "TCHAR zu String" gegoogelt, aber nichts gefunden.

    Kannst Du da vielleicht helfen?
    Michael



  • Ich nochmal, inzwischen glaube ich eher, das mein Compiler ein allgemeines Problem mit String hat, denn ich habe mal folgende Zeile eingegeben:

    ShellExecute(NULL, "open", "Shutdown.exe", string("-" + " -reboot").c_str(), NULL, SW_SHOW);
    

    und es entstehen die selben Fehler.

    Gruß
    Michael



  • Hallo

    Weil std::string erstmal deklariert werden muß

    #include <string> // für std::string
    ...
    ShellExecute(NULL, "open", "Shutdown.exe", std::string("-" + " -reboot").c_str(), NULL, SW_SHOW);
    

    Wenn das das Problem gewesen sein sollte, sollte es dan auch mit _this->m_host funktionieren

    bis bald
    akari



  • Hi,

    Genau das habe ich schon gemacht, leider ohne Erfolg.
    Kann das vielleicht an VS liegen?

    Gruß
    Michael



  • std::string("-" + " -reboot").c_str()
    

    Wie soll das auch funktionieren? Man kann keine zwei Zeiger addieren und
    "-" und " -reboot" sind in diesem Kontext nunmal Zeiger.

    Was geht:

    std::string("-").append(" -reboot").c_str();
    

    oder auch:

    (std::string("-") + " -reboot").c_str();
    

Log in to reply