problem mir CFileDialog



  • Hi Leute,

    ich habe ein Problem: Ich habe mich auf Button klick mit einem Server verbunden und danach öffne ich ein CFileDialog. Der öffnet beim 1. mal auch das richtige. Aber wenn ich einen anderen Server auswähle und mich verbinde, dann öffnet er das CFileDialog und zeigt auch den richtigen Inhalt an. Und jetzt kommts. in der oberen Leiste, wo der Servername und der Laufwerksbuchstabe steht. stehen nicht die angaben von dem 2. Server sondern vom 1.. Aber im Explorer zeigt er den 2. Server an. Woran kann das liegen??? Muss ich vielleicht erst aktualisieren??? Wie???

    MSF SPAXX



  • Ist es möglich, mir den Code zu schicken? Dann könnte ich schnell reinschauen, ist einfacher, als rumzuraten 😉



  • //das ist jetzt zum ausführen der Stapeldatei mit übergabe des Servernamens und der Freigabe
    CString t="";
    //vorbereiten eines Strings mit der Stapeldatei und dem übergebenen Parameter
    t.Format("verbinden.cmd \\\\%s\\%s",m_gewaehlt.GetServername(),m_gewaehlt.GetLayoutverzeichnis());
    //ausführen von verbinden.cmd mit übergabe des gewählten Servers
    
    STARTUPINFO si1;
    memset(&si1, 0, sizeof(STARTUPINFO));
    si1.cb = sizeof(STARTUPINFO);
    si1.dwFlags=STARTF_USESHOWWINDOW;
    PROCESS_INFORMATION pi1;
    memset(&pi1, 0, sizeof(PROCESS_INFORMATION));
    
    CreateProcess(NULL,(LPTSTR)(LPCTSTR) t, NULL, NULL, FALSE,0, NULL, NULL, &si1, &pi1);
    WaitForSingleObject( pi1.hProcess, INFINITE); 
    
    //das ist jetzt zum öffnen des Dialogfeldes. Dieses wird immer auf U:\ geöffnet, da das der LW Buchstabe ist zu dem in der Stapeldatei verbunden wird
    CFileDialog fileDialog(TRUE, NULL,_T("*.*"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT 
                                ,_T("All files (*.*)|*.*|")); 
    fileDialog.m_ofn.lpstrFile = (LPSTR)cFileNames;		//Setzen des Pufferspeichers in CFileDialog
    fileDialog.m_ofn.nMaxFile = sizeof(cFileNames);		//setzen der maximalen Anzahl an Zeichen der gewählten dateien auf 512
    fileDialog.m_ofn.lpstrInitialDir="U:\\";			//dialog soll immer im Verzeichnis U:\ geöffnet werden, da LW immer auf U gemapped wird
    
    if (fileDialog.DoModal() == IDOK)	
    {
    
       //...
    }
    

    Also das Verbinden in der cmd Datei klappt. Aber er zeigt halt im Dialogfeld das falsche an. Im Explorer aber das richtige. der gewählte Server (m_gewaehlt) kommt aus einer Listbox. Die Werte müssen ja stimmen, sonst würde er ja nicht richtig mappen. Hoffe du kannst was damit anfangen.



  • was ist cFileNames, wo kommt das her? was steht da drin, wann wird dieser wert verändert

    ich denke das ist dein problem, das da immer der gleiche wert drin steht



  • cFileNames ist nur ein char Array, wo die ausgewählten Dateinamen reinkommen. Damit man mehrere Dateien auswählen kann. in der if mit DoModal nehme ich das Array dann auseinander, damit ich die Dateinamen bekomme. Also damit hat es glaube ich nichts zu tun.



  • kannst nochmal kurz und knapp erzählen was dein prob ist



  • also beim 1. mal verbinden zum Server auf G:\ geht alles klar und er öffnet das CFileDialog so wie es soll. Der Inhalt der im Dialog kommt ist der richtige und es steht oben der richtige Servername. Aber wenn ich einen anderen Server auswähle verbindet er sich wieder auf G:\ der richtige Inhalt ist zu sehen, aber bei der Beschriftung des Laufwerkes steht noch das alte drin. Obwohl im Explorer der neue Server drin steht.



  • ich denke er soll immer auf U: öffnen, warum jetzt auf G:???

    du gibst doch das laufwerk U: mit?
    wenn der server wo anders liegt,dann gib doch den richtigen LW-buchstaben mit

    ich glaub ich versteh das ganze noch nicht ganz 😕



  • ja war mein Fehler. natürlich auf U:\ hab mich nur verschriben.



  • na dann, wenn der server wo anders liegt musst du auch den entsprechenden LW-buchstaben mitgeben


Anmelden zum Antworten