|
Wenn ein Anwender eine mit Ihrer Anwendung verknüpfte Datei im
Explorer öffnet, wird automatisch eine Verknüpfung zu dieser Datei
im Dokumente-Ordner des Startmenüs (Recent) angelegt. Sie können
diese Verknüpfung auch manuell über die API-Funktion SHAddToRecentDocs
anlegen lassen, etwa um für eine per Kommandozeile ( Command)
an Ihre Anwendung übergebe Datei eine Verknüpfung im
Dokumente-Ordner anzulegen.
Die API-Funktion kann zwar auch mit so genannten
IDList-Referenzen umgehen, wie sie von einer ganzen Reihe von
Shell-Funktionen erzeugt und verwendet werden. Daher muss ihr im
ersten Parameter uFlags angegeben werden, ob der zweite Parameter
eine solche IDList-Referenz oder einen String mit einem regulären
Pfad enthält. Doch da Sie mit IDList-Referenzen nicht viel anfangen
können, sorgt die Hilfs-Funktion AddToRecentDocs für die
entsprechende Flag-Übergabe, nachdem Sie ihr den Dateinamen
übergeben haben.
Die Datei muss übrigens nicht existieren - der String, den Sie
übergeben, braucht lediglich wie eine gültige Pfadangabe
auszusehen. Die Verknüpfung weist dennoch auf den angegebenen
Pfadnamen (Sie können also auch die Datei erst später im
angegebenen Ordner erzeugen). Als Arbeitsverzeichnis wird in der
Verknüpfung der im Pfad angegebene Ordner gesetzt.
Private Declare Sub SHAddToRecentDocs Lib "shell32.dll" _
(ByVal uFlags As Long, ByVal Path As String)
Public Sub AddToRecentDocs(Path As String)
Const SHARD_PATHA = &H2&
SHAddToRecentDocs SHARD_PATHA, Path
End Sub
 |
Mit der Hilfs-Funktion AddToRecentDocs legen
Sie im Dokumente-Order des Startmenüs eine Verknüpfung auf
eine Datei an

|
Ebenfalls über die API-Funktion SHAddToRecentDocs können Sie
den Dokumente-Ordner leeren. Da ihr dazu anstelle eines Pfad-Strings
eine NULL-Referenz übergeben werden muss, benötigen wir hierfür
eine separate Alias-Deklaration mit einer anderen Deklaration des
zweiten Parameters. Die parameterlose Hilfs-Funktion ClearRecentDocs
vereinfacht auch hier wieder den Aufruf.
Private Declare Sub SHClearRecentDocs Lib "shell32.dll" _
Alias "SHAddToRecentDocs" (ByVal uFlags As Long, _
ByVal Clear As Long)
Public Sub ClearRecentDocs()
Const SHARD_PATHA = &H2&
SHClearRecentDocs SHARD_PATHA, 0
End Sub
 |
Mit der Hilfs-Funktion AddToRecentDocs
leeren Sie den Dokumente-Order des Startmenüs

|
Den Pfad zum Dokumente-Ordner ermitteln Sie wie in "Standard-Ordner
finden" beschrieben mit der FolderID spfRecent. Die
schlichte Annahme C:\Windows\Recent ist nicht zuverlässig, da der
Pfad vom Anwender/Administrator beliebig geändert werden kann (und
Windows auch nicht immer in C:\Windows installiert zu sein braucht).
Wenn Sie unbedingt wollen, können Sie so auch auf einfachste
Weise eine Verknüpfung zu einer Datei anlegen, anstelle sich mit
komplizierten COM-Schnittstellen herumzuschlagen oder sich darauf
verlassen zu müssen, dass das Windows-Scripting (WSH) installiert
ist. Legen Sie einfach mit AddToRecentDocs eine Verknüpfung an,
ermitteln Sie den tatsächlichen Pfad des Dokumente-Ordners und
verschieben Sie sie aus diesem Ordner mit der Name-Anweisung
in den gewünschten Ordner. Kleine, aber im Normalfall
verschmerzbare Nachteile: Sie können weder das Arbeitsverzeichnis
noch das Icon festlegen. Als Icon wird nämlich immer das zu der
jeweiligen Datei-Erweiterung registrierte Icon verwendet.
|