CString in WinExec-Anweisung als z.B. Pfadangabe ?



  • Its me again 😃

    Ich habe noch 1 Sache auf dem Herzen (vorerst *g*).
    In meiner Befehleszeile:

    WinExec("net use x: \\123.123.123.123\f", SW_SHOW);

    möchte ich gerne die IP-Adresse und den Pfad je durch eine Variable
    ersetzen (CString stringip und stringpfad). Ich muß ja allerdings dann
    irgendein "Trennzeichen" setzen, um dem Befehl zu sagen,
    daß es sich um eine Variable handelt.
    Wie gehe ich vor ?

    CString stringip;
    CString stringpfad;
    
    WinExec("net use x: \\stringip\stringpfad)", SW_SHOW);
    

    Stringip und stringpfad sind Variablen aus 2 verschiedenen
    Eingabefenstern, sollen also nur hier in den Funtionsaufruf
    übergeben werden.
    Bin gerade etwas in Hektik, hoffe war verständlich was ich
    meinte :p

    Gruß

    Chris



  • Du kannst in WinExec nicht mehr Variablen angeben, als vorgesehen.
    Versuchs dochmal so.

    CString strNetCmd;
    
    strNetCmd = "net use x: \\\\";
    strNetCmd += strimgip;
    strNetCmd += "\\" + stringpfad;
    WinExec(LPCSTR(strNetCnd),SW_SHOW);
    

    Weiss jetzt nicht, ob das mit den Backslashs richtig ist, habe einfach mal die von dir übernommen.

    [ Dieser Beitrag wurde am 21.08.2002 um 16:37 Uhr von Lightbringer editiert. ]



  • Danke, der Tip war gut !

    Ich habe jetzt den nachstehenden Code. Wenn ich jedoch auf
    die public definierte Variable m_tos zugreifen will,
    bekomme ich den darin eingegebenen Wert nicht.
    Greife ich falsch darauf zu ? 😕

    Hab erstmal 123.123.123.123 für m_tos eingesetzt, den so geht es.
    Wobei 123... natürlich die jeweilige aktive IP sein muß.

    Code:

    void CChatServerDlg::OnButton7() 
    {
    
    struct hostent *pHostInfo;  
    unsigned long IPAddress = inet_addr(m_tos); 
    WSADATA  WSAData; 
    memset(&WSAData, 0, sizeof(WSAData));
    
    if(::WSAStartup(MAKEWORD(1, 0), &WSAData) == FALSE)
    {
          pHostInfo = ::gethostbyaddr(reinterpret_cast<char *>(&IPAddress),sizeof(unsigned long),AF_INET);
    }
    if(!pHostInfo)
    {
        WSACleanup();
    }
    
    CString test = pHostInfo->h_name;    //wandelt die struct wohl in ne string um   ;)
    MessageBox(test,"Hostname lautet:",MB_OK);
    UpdateData(TRUE);   
    }
    
    void CChatServerDlg::OnButton9() 
    {
    CString strNetCmd;  // faßt stringelemente zusammen um fehler bei ausgabe von "\\\" zu vermeiden
    CString stringpfad;  // soll später über eingabefeld variabel definiert werden..hier aber als testordner benannt
    CString stringip;  // soll den wert von m_tos annehmen
    stringip ="123.123.123.123";  // m_tos ist ein public definierter CString aus OnButton7()
    stringpfad="testordner"; // Testordner ist der freigegebene Ordner
    
    strNetCmd = "net use x: \\"; // 1 baustein des befehles wird also "net use x: \"
    strNetCmd += "\\"+stringip;  // erweitert befehl auf "net use x: \\123.123.123.123"
    strNetCmd += "\\" + stringpfad; // erweitert befehl auf "net use x: \\123.123.123.123\testordner"
    WinExec(LPCSTR(strNetCmd),SW_SHOW); // führt verkettete elemente aus und stellt netzlaufwerk x: her
    }
    

    und wenn ich wie gesagt schreibe stringip = m_tos, dann
    hab ich wieder den Hinweis beim klicken von OnButton9(),
    daß beim ausführen des Net use-Befehls die falsche Syntax vorliegt
    😞

    Help

    Chris 😡



  • Mach mal am Anfang von OnButton9 ein UpdateData(TRUE);

    [ Dieser Beitrag wurde am 21.08.2002 um 18:38 Uhr von dEUs editiert. ]



  • Und wieder was gelernt...
    🙂 so, bleibt mir mal nur wieder zu sagen:

    Danke 😉

    Chris


Anmelden zum Antworten