pfad auslesen???



  • hi all

    habe mal eine frage:
    kann ich mit meinem prog das nach seinem ablauf ein exceldokument öffnet, in dem fall mit shellexecute (m_hWnd,"open","Pfad\Tabelle.xls",0,0,SW_MAXIMIZE);,
    so umändern, daß wenn es zu dem shellexecute kommt, er erst den Pfad ausliest, wo die exe des progs steht und dann in diesem string des pfades anstelle des prog.exe mein tabelle.xls machen kann.

    ich möchte hiermit sicher gehen, daß egal wohin der ordner(in dem befindet sich prog.exe und tabelle.xls) installiert wird meine tabelle geöffnet wird. und das wäre ja dann der fall.

    hoffe es kam verständlich bei euch an, thx sandra 😕



  • Hi,
    mit GetCurrentDirectory(...),Zitat MSDN:
    "DWORD GetCurrentDirectory(
    DWORD nBufferLength, // size, in characters, of directory buffer
    LPTSTR lpBuffer // pointer to buffer for current directory
    );"
    müsste es gehen. Dann musste nur prog.exe mit tabelle.xls ersetzen, was mit CString::Replace(...) gehen müsste.

    mfg TakeItEasy!



  • Warum den immer so schwer?

    char ch_filename[_MAX_PATH], ch_pathname[_MAX_PATH];
    GetModuleFileName(NULL, ch_filename, _MAX_PATH);
    lstrcpy(ch_pathname, ch_filename);
    *_tcsrchr(ch_pathname, __TEXT('\')) = 0;

    So in ch_pathname steht der pfad zur exe also z.b c:\Programme\USW (wer hätte das gedacht).



  • Hi,

    @ DADA:

    Ich will deinem Code nicht unterstellen, dass er komplizierter ist als der, den ich vorgeschlagen habe, aber meiner ist weder komplizierter noch schwieriger zu verstehen !!!!!!!!!! Oder verstehst du so etwas einfaches nicht ???

    Also für dich nochmal extra:

    char chPfad[1000];
    
        GetCurrentDirectory(1000,chPfad); // Jetzt steht in chPfad der Pfad. z.B.: "C:\Programme\Proggname"
    

    Haste des jetzt gerafft ?
    Sind nur 2 einfach zu verstehende Zeilen !!!!!!!!!!!!!!!!!!!!!

    @sandra:

    So, wie schon oben gesagt musste dann halt noch den Tabellenname anhängen.

    Des mit dem CString::Replace war falsch, weil der erhaltene Pfad den Proggname gar nicht dran hat. Sry.

    CString sPfad = chPfad;
    sPfad += "\\TabellenName.xls";
    // Fertig
    

    Ich hoffe, es hat geholfen.

    mfg TakeItEasy!



  • Sind nur 2 einfach zu verstehende Zeilen !!!!!!!!!!!!!!!!!!!!!

    Nur leider beantwortet das nicht nicht die Frage, da diese beiden einfach zu verstehenden Zeilen nicht das EXE-Directory liefern. Oder ich habe die Frage nicht verstanden und es wird tatsächlich nach dem cwd gefragt?



  • Dein Code hat aber einen KLEINEN Fehler:

    ich hab garde Versuche bei einen meiner Programme den Pfad so aus zulesen.

    Doch er zeigt nur so viel an:

    C:\Programme\Microsoft Visual Studio\MyProjects\TEST

    der pfad heißt aber

    C:\Programme\Microsoft Visual Studio\MyProjects\TEST\Debug

    Und mein Code ließ in VOLL auß.

    Hier noch mal das Ganze:

    char ch_filename[_MAX_PATH], ch_pathname[_MAX_PATH];
        GetModuleFileName(NULL, ch_filename, _MAX_PATH);
        lstrcpy(ch_pathname, ch_filename);
        *_tcsrchr(ch_pathname, __TEXT('\\')) = 0;
    
        CString strPfad = ch_pathname;
        strPfad += "\\Tabelle.xls";
    


  • Also, wenn die Tabelle im selben Verzeichnis ist wie prog.exe, und die Tabelle aus dem Programm prog.exe heraus geöffnet werden soll (mit ShellExecute()), dann reicht doch ein einfaches

    ShellExecute(Handle, "open", "Tabelle.xls", NULL, NULL, SW_SHOW);
    


  • Was ist, wenn sich während der Laufzeit das Arbeitsverzeichnis ändert? Was ist, wenn das Programm über eine Verknüpfung gestartet wird und dort bereits ein ganz anderes Arbeitsverzeichnis eingestellt ist? Was ist, wenn das Programm aus der IDE heraus ausgeführt wird?

    Der Pfad muß absolut angegeben werden und, sofern Leerzeichen enthalten sind, in Gänsefüsse eingeschlossen werden.



  • hier meine lösung und danke an alle 😉

    char chPfad[1000];
    GetCurrentDirectory(1000,chPfad);
    CString sPfad=chPfad;
    sPfad+CString("\\Tabelle2003.xls");
    ShellExecute(NULL,"Open",sPfad,"","",SW_SHOWNORMAL);

    und schon öffnet er mir mein excelfile egal wohin mein ordner mit dem programm reinkopiert wird, thx nochmal sandra :p



  • Hi,
    ich habe doch gesagt, dass es so funzt !!!

    mfg TakeItEasy!



  • Ja in dem Falle evl. bei mir hat er z.b nicht den ganzen Pfad zurück gegeben.


Anmelden zum Antworten