Announcement

Collapse
No announcement yet.

Feststellen ob Word installiert ist, wenn ja Word-Datei anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Feststellen ob Word installiert ist, wenn ja Word-Datei anzeigen

    <b>Hallo zusammen,</b><p>

    a) Wie kann man feststellen, ob MS Word auf einem Rechner installiert ist ?<p>
    b) Wenn ja, möchte ich möglichst ohne OLE oder COM/DCOM eine Word Datei
    anzeigen lassen z. B. Handbuch.doc !<p>
    c) Wenn Word nicht installiert ist soll versucht werden die Datei mit Wordpad zur Anzeige zu bringen.<p>

    Kann mir jemand helfen ? <p>
    Folgendes hat leider nicht funktioniert - war wohl auch zu einfallslos !!!<p>
    <b> If CreateProcess</b>(nil,<br>
    PChar('Handbuch.doc'),<br>
    nil,<br>
    nil,<br>
    False,<br>
    NORMAL_PRIORITY_CLASS,<br>
    nil,<br>
    PChar(Dir+'\Texte'),<br>
    StartupInfo,<br>
    ProcessInfo) <br>
    <b>Then</b> ShowMessage('Ok')<br>
    <b>Else</b> ShowMessage('shit - versuchs mal mit Wordpad ...');<p>

    <b>NACHTRAG:<br></b>
    Statt CreateProcess sollte man, damit es funktioniert <br>
    <b>ExecuteFile('Handbuch.doc','',Dir+'\Texte\',0); <br></b>
    verwenden. Bloß besonders elegant ist dies wohl auch nicht !?

    <b>Gruß Tom ...</b><p>


  • #2
    Ich bin nicht sicher, aber ich habe bei meinen Experimenten festgestellt, dass man wohl nur ausführbare Dateien (also Exe usw.) mit "CreateProcess" aufrufen kann. Ich wollte eine MSP-Datei starten, aber das ging nur, nachdem ich den entsprechenden Kommandoschlüssel in der Registry ausgelesen habe. bla bla ...

    Lange Rede, kurzer Sinn: Schau mal in die Registry beim Schlüssel ".doc". Da steht ein Verweis auf den nächsten Schlüssel. Bei mir heißt der z.B. "Word.Document.8". Darunter gibt´s den Eintrag "shell\open\command".

    Mit anderen Worten: Versuch einfach, die DOC-Datei mit "ShellExecute" zu öffnen:
    <PRE>ShellExecute(0,'open','Handbuch.doc',nil,nil, SW_SHOWNORMAL);</PRE>

    Vorher würde ich nur checken, ob die Dateiendung ".doc" überhaupt irgendwie im System bekannt ist und ob sie einen Verweis zu besagtem "shell\open\command" hat.

    Mathias

    Comment


    • #3
      <p>Mit folgender Funktion ermittelst Du die installierte Wordversion. Das garantiert
      aber noch nicht, das Word korrekt initialisiert werden kann.</p>
      <p>Sch&ouml;ne Gr&uuml;&szlig;e, Mario Noack</p>
      <p><font face="Courier New, Courier, mono">function GetInstalledWordVer: String;<br>
      &nbsp;VAR Registry: TRegistry;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TempString: String;<br>
      begin<br>
      &nbsp;Registry:=TRegistry.Create;<br>
      &nbsp;</font><font face="Courier New, Courier, mono">Registry.RootKey:=HKEY_CLASSES_ROOT;<br>
      &nbsp;Registry.OpenKey('Word.Application\CurVer',F alse);<br>
      &nbsp;TempString := '';<br>
      &nbsp;TRY <br>
      &nbsp;&nbsp;TempString :=Registry.ReadString('');<br>
      &nbsp;EXCEPT<br>
      &nbsp;END;<br>
      &nbsp;Result := TXT_KeinWord;<br>
      &nbsp;IF LastDelimiter('.',TempString) &gt; 0<br>
      &nbsp;&nbsp;THEN<br>
      &nbsp;&nbsp;&nbsp;BEGIN<br>
      &nbsp;&nbsp;&nbsp;&nbsp;CASE StrToInt(Copy(TempString, LastDelimiter('.',TempString)
      + 1, Length(TempString))) OF<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6: Result := TXT_Word95;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8: Result := TXT_Word97;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9: Result := TXT_Word2k;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10:Result := TXT_WordXP;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;ELSE Result := TXT_WordUnbekannt;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;END; // CASE<br>
      &nbsp;&nbsp;&nbsp;END; // END<br>
      &nbsp;Registry.Free;<br>
      End; // function GetInstalledWordVer: String;<br>
      </font> </p&gt
      Schöne Grüße, Mario

      Comment


      • #4
        Hallo,

        du kannst auch den Programmpfad in der Registry auslesen:

        HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Wo rd\Options

        Dort gibt es den Eintrag ProgramDir.

        8.0 ist Word97, 9.0 ist Word2000, 10.0 ist WordXP usw.

        Gruß Ul

        Comment


        • #5
          Schau auch mal in die Demo:<br>
          C:\Programme\Borland\Delphi5\Demos\Activex\Oleauto \Word8<br>
          Da ist ein gutes Beispiel für den Einstieg.<p>
          Schöne Grüße, Mario Noac
          Schöne Grüße, Mario

          Comment


          • #6
            Er wollte es aber möglichst ohne OLE usw. machen.
            Na ja ..

            Comment


            • #7
              <b>Erstmal vielen Dank an alle für die prompte Hilfe !<p></b>

              Ich werde mich nochmal melden.<p>

              <b>Gruß Tom ...</b&gt

              Comment

              Working...
              X