News
Photos
Articles
Components
Applications
Kleinkunst

.NET & Delphi - Change the Recent documents menu

In het startmenu staat er een submenu Documenten waarin verwijzingen naar de onlangs geopende bestanden (recent documents) worden bijgehouden. Dit submenu kan je tonen of verbergen via een registry instelling. Ga met de registry editor naar HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced.

Daar vind je een sleutel met de naam Start_ShowRecentDocs. Als de waarde 2 is, is het menu zichtbaar, als de waarde 0 is dan zal het verborgen worden.

Met volgende REG bestanden kan je het menu tonen of verbergen.

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"Start_ShowRecentDocs"=dword:00000002
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"Start_ShowRecentDocs"=dword:00000000

Wil je vanuit je eigen programma's verwijzingen naar documenten toevoegen, dan kan je hiervoor de ShellAPI functie SHAddToRecentDocs gebruiken. Met deze functie kan je op een heel eenvoudige manier een verwijzing naar een document toevoegen in het Documenten submenu. Ook de lijst leegmaken kan eenvoudig door een null/nil waarde mee te geven. Zie de MSDN website voor meer informatie.

In Delphi (Win32, VCL) kan je deze functie SHAddToRecentDocs (en bijhorende SHARD_PATH constante) terugvinden in de ShellAPI unit. Voeg de ShellAPI unit dus toe bij de uses en dan kan je volgende 2 procedures gebruiken.

Delphi voorbeeld :

procedure AddToRecentDocs(const strPath: string);
begin
  SHAddToRecentDocs(SHARD_PATH, PChar(strPath));
end;
procedure ClearRecentDocs;
begin
  SHAddToRecentDocs(SHARD_PATH, nil);
end;

Wil je deze functie in .NET gebruiken, dan zal je via het DllImport attribuut (uit de System.Runtime.InteropServices namespace) de functie SHAddToRecentDocs uit de shell32.dll moeten aanspreken. Voeg dus using System.Runtime.InteropServices toe in je C# programma en met onderstaande ShellAPI class kan je 2 static methods aanspreken om een bestand toe te voegen of om de lijst leeg te maken.

C# voorbeeld :

class ShellApi {
  private const int SHARD_PATH = 0x2;
  [DllImport("shell32.dll", CharSet = CharSet.Ansi)]
  private static extern void SHAddToRecentDocs(uint flag, string path);
  public static void AddToRecentDocs(string path) 
  {
    SHAddToRecentDocs(SHARD_PATH, path);
  }
  public static void CleanRecentDocs()
  {
    SHAddToRecentDocs(SHARD_PATH, null);
  }
}