Einzelnen Beitrag anzeigen

max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#8

Re: Wie kann man den Folder "eigene Dateien" öffne

  Alt 13. Jan 2004, 23:43
Hallo!

Habe gute und schnelle Antworten erhalten.
Aber ich muss sage, eigentlich habe ich alles gehabt, um das Problem selber zu lösen.
Mit den nachfolgenden Proceduren kann man alle wichtigen System-Pfade finden und mit ShellExecute starten.

Gruß
Max666

---
Delphi-Quellcode:
function TForm1.GetSpecialFolder(hWindow: HWND; Folder: Integer): String;
var
  pMalloc: IMalloc;
  pidl: PItemIDList;
  Path: PChar;
begin
  // get IMalloc interface pointer
  if (SHGetMalloc(pMalloc) <> S_OK) then begin
    MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.',
               'SHGetMalloc(pMalloc)', 16);
    Exit;
  end;
  SHGetSpecialFolderLocation(hWindow, Folder, pidl);
  GetMem(Path, MAX_PATH);
  SHGetPathFromIDList(pidl, Path);
  Result := Path;
  FreeMem(Path);
  pMalloc.Free(pidl);
end;

procedure TForm1.findpath;
var Handle: HWND;
begin
CSIDLPROGRAMS:=(GetSpecialFolder(Handle, CSIDL_PROGRAMS));
CSIDLCOMMONPROGRAMS:=(GetSpecialFolder(Handle, CSIDL_COMMON_PROGRAMS));
CSIDLDESKTOP:=(GetSpecialFolder(Handle, CSIDL_Desktopdirectory));
CSIDLCOMMONDESKTOP:=(GetSpecialFolder(Handle, CSIDL_COMMON_Desktopdirectory));
CSIDLRECENT:=(GetSpecialFolder(Handle, CSIDL_RECENT));
CSIDLPERSONAL:=(GetSpecialFolder(Handle, CSIDL_PERSONAL));
CSIDLFAVORITES:=(GetSpecialFolder(Handle, CSIDL_FAVORITES));
CSIDLCOMMONFAVORITES:=(GetSpecialFolder(Handle, CSIDL_COMMON_FAVORITES));
CSIDLNETWORK:=(GetSpecialFolder(Handle, CSIDL_NETHOOD));
CSIDLVORLAGEN:=(GetSpecialFolder(Handle, CSIDL_TEMPLATES));
end;

// CSIDLPROGRAMS, ... sind globale Variablen vom Typ string


procedure TForm1.Button1Click(Sender: TObject);
var slCmdLine: PAnsiChar;
    path: string;
begin
path:=CSIDLPERSONAL;
slCmdLine := Pchar(path);
ShellExecute(handle, nil, 'explorer.exe', slCmdLine, 0, SW_SHOWNORMAL);
end;
---

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat