Announcement

Collapse
No announcement yet.

Word-Vorlagenverzeichnisse ermitteln

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

  • Word-Vorlagenverzeichnisse ermitteln

    Hallo,

    wie kann ich am besten die Vorlagenverzeichnisse von MS Word ermitteln, ohne über OLE oder dergleichen eine Verbindung aufzubauen.

    In der Registry findet man den Schlüssel Templates oder auch UserTemplates.

    Aber dort steht oft nur "Vorlagen" - der komplette Pfad ist dadurch noch nicht klar!

    Jan

  • #2
    Einen Tipp hätte ich, aber den würde ich mit Vorsicht genießen, weil nicht 100% sicher ist, dass er immer und in jedem Fall funktioniert. Du sagst, dass du den Schlüssel "Templates" gefunden hast, der wohl auch auf den korrekten Ordner zeigt.<br><br>
    Mit diesem Stück Code könntest du den Pfad zu den Anwendungsdaten ermitteln, unter denen sich z.B. bei mir der Vorlagen-Ordner befindet:

    <PRE>
    Function GetAppDataPath : String;
    var
    lpItemId : PItemIDList;
    buffer : array[0..MAX_PATH]of char;
    Begin
    Result:= '';
    SHGetSpecialFolderLocation(hInstance,CSIDL_APPDATA ,lpItemId);
    if(SHGetPathFromIDList(lpItemID, buffer)) then Result := strpas(buffer);
    End;
    </PRE>

    Da es sich ja um <u>Microsoft</u>-Software handelt, hängst du an den Rückgabewert den String "\Microsoft" an und ergänzt den Wert des Schlüssels "Template".<br><br>
    Tja, wie gesagt: ganz sauber ist die Lösung nicht, und man müsste mal auf verschiedenen Betriebssystemen prüfen, ob das Ergebnis korrekt ist.<br><br>
    Mathias

    Comment


    • #3
      <p>Dies Funktion arbeitet bei mir sehr zuverl&auml;ssig:</p>
      <p><font face="Courier New, Courier, mono">FUNCTION GetWordStartUpPath: String;<br>
      VAR<br>
      pIIL : PItemIDList;<br>
      szPath : array[0..MAX_PATH] of Char;<br>
      aMalloc : IMalloc;</font></p>
      <p><font face="Courier New, Courier, mono"> StartUpPfad: String;<br>
      Registry: TRegistry;<br>
      begin<br>
      Registry := TRegistry.Create;<br>
      Registry.RootKey := HKEY_CURRENT_USER;<br>
      IF Registry.OpenKey('Software\Microsoft\Office\10.0\W ord\Options',False) OR<br>
      Registry.OpenKey('Software\Microsoft\Office\9.0\Wo rd\Options',False) OR<br>
      Registry.OpenKey('Software\Microsoft\Office\8.0\Wo rd\Options',False)<br>
      THEN<br>
      BEGIN<br>
      TRY<br>
      StartUpPfad := Registry.ReadString('STARTUP-PATH');<br>
      EXCEPT<br>
      END;<br>
      END;<br>
      Registry.Free;</font></p>
      <p><font face="Courier New, Courier, mono"> IF StartUpPfad = ''<br>
      THEN<br>
      BEGIN<br>
      IF (SHGetSpecialFolderLocation(0, CSIDL_APPDATA, pIIL)) = NOERROR<br>
      THEN<br>
      BEGIN<br>
      SHGetPathFromIDList(pIIL, szPath);<br>
      OleCheck(SHGetMalloc(aMalloc));<br>
      aMalloc.Free(pIIL);<br>
      StartUpPfad := CheckPath(szPath) + 'Microsoft\Word\Startup';<br>
      END;<br>
      END;<br>
      IF StartUpPfad &lt;&gt; '' THEN Result := CheckPath(StartUpPfad);<br>
      end;<br>
      </font> </p>
      <p>Sch&ouml;ne Gr&uuml;&szlig;e, Mario Noack</p&gt
      Schöne Grüße, Mario

      Comment


      • #4
        Hallo,

        das Coding hat mir geholfen.
        Nachdem ich mir bei den JEDIs die SHFolder-unit geholt habe hat es dann geklappt!

        Danke

        Comment

        Working...
        X