MFC-Anwendung soll auf .doc zugreifen



  • Hi ich hab mal wieder ein kleines Problem und wollte von euch wissen wie ich das ganze angehen soll. Ich muss ein Programm schreiben, dass mir anhand einer Nummer ein Word Dokument findet (im Dateinamen sowas wie 12345testdatei.doc) und dann anzeigt. Ist es sinnvoll die ganzen Nummern zu speichern und auf diese Nummern dann den Pfad linken, oder kann ich gleich im Dateinamen suchen. Ist es einfacher die Datei im Programm zu laden oder irgendwie die Datei extern zu laden sprich, dass das Word aufgeht und die Datei erscheint? Wäre nett wenn ihr mir noch so ein paar Stichwörter zu eurer Lösungsmeinung sagen könntet.

    Vielen dank



  • Der Schnipsel macht das Programm auf, was für *.doc zuständig ist. Wordpad, Word, Open Office, was auch immer...

    void CMainFrame::OnDateiTextverarbeitung() 
    {
    	CString strDatei(_T("leer.doc"));
    	CString strOrdner(_T("d:\\"));
    	TCHAR chExe[256];
    	memset(chExe, 0, sizeof(chExe));
    
    	::FindExecutable(strDatei, strOrdner, chExe);
    
    	// Das Programm starten
    	STARTUPINFO si = {sizeof(si)}; 
    	PROCESS_INFORMATION pi; 
    	CreateProcess(NULL,chExe,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,"C:\\",&si,&pi); 
    }
    

    🙂



  • WOW Estartu_de auf dich ist ect verlass! Genau das wollte ich haben, ich hab nur noch ein kleines Problem, er öffnet mir das Word aber nicht die Datei die ich ihm momentan statisch angegeben hab. ich hab direkt im D:\ die Datei Test.doc angelegt, und er läd sie aber nicht! Was mach ich falsch?



  • Ich sag doch: Das macht das Programm auf. 🙂

    Versuch mal, in chExe noch zusätzlich (mit Leerzeichen dazwischen) den Dateinamen reinzupacken.
    Sonst hilft vielleicht auch die Suche, ich habs auch blos aus dem Forum. 🙄



  • sorry ich weiß nicht wie du das mit chexe meinst, versteh nicht wo und was das bringen soll. Liegt aber rein daran dass ich nicht verstehe was du meinst!



  • Ich meine die Variable da:

    TCHAR chExe[256];
    

    Da landet mit Hilfe der Zeile

    ::FindExecutable(strDatei, strOrdner, chExe);
    

    der Pfad zu deinem Word drin. Beispielsweise: "C:\Programme\Office\word.exe"

    Und jetzt versuch mal, den Dateinamen noch dranzuhängen (ich kann keine Zeichenkettenaddition in C 😞 ), so dass hinterher das drin steht:
    "C:\Programme\Office\word.exe C:\text.doc"

    Okay? 🙂



  • Okay vielleicht geht das ABER!!! Ich hab gegoogelt und gegoogelt was das Zeug hält und bin nicht so wahnsinnig befriedigt worden doch dann in der MSDN!!! JUHUUUU!!
    [url]
    http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/vccore/html/vchowcreatingwebbrowserstyleapplication.asp[/url]
    Hab da so ein ShtmlView angelegt, und TADA!! jetzt geht er!!!
    Für die die das nach machen wollen ChtmlView anlegen, dann mit estartu_de´s beschreibung zu den Formviews
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-81908.html den Formview auf den htmlView switchen, dann noch kurz

    void CEigeneKlasseView::OnInitialUpdate()
    {
    Navigate2(_T("D:\\test.doc"),NULL,NULL); //hier den gewünschten Pfad eintragen, egal ob .doc oder .xls ...
    }
    


  • Es geht auch ohne CHtmlView. Die Word-Datei 'test.doc' wird so direkt in Word geöffnet:

    ShellExecute(NULL, "open", "D:\\test.doc", NULL, "D:\\", SW_SHOWDEFAULT);
    


  • Wow OK vielen Dank aber für mein Problem ist es mit HtmlView besser, da es bei mir darum geht, dass die User nur leserechte haben sollen. Darüber habe ich aber gar keine Kontrolle wenn ich Word öffnen lasse. aber dennoch vielen Dank


Anmelden zum Antworten