AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Special Folder

Ein Thema von aps · begonnen am 26. Mär 2013 · letzter Beitrag vom 27. Mär 2013
Antwort Antwort
aps

Registriert seit: 21. Sep 2003
Ort: Hameln
62 Beiträge
 
Delphi 6 Professional
 
#1

Probleme mit Special Folder

  Alt 26. Mär 2013, 18:45
Hallo,

ich nutze folgende Funktion, um Special Folders zu ermitteln:

Code:
const
  CSIDL_COMMON_DOCUMENTS = $002e;

function 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;

  // retrieve path
  SHGetSpecialFolderLocation(hWindow, Folder, pidl);
  GetMem(Path, MAX_PATH);
  SHGetPathFromIDList(pidl, Path);
  Result := Path;
  FreeMem(Path);

  // free memory allocated by SHGetSpecialFolderLocation
  pMalloc.Free(pidl);
end;


Directory = GetSpecialFolder(Handle, CSIDL_COMMON_DOCUMENTS);
Das funktioniert auch auf praktisch allen PCs wunderbar, bis auf einen einzigen mir bekannten Kunden-PC unter Windows XP. Da kommt immer ein leerer Pfad raus anstelle des gewünschten Pfads für die Gemeinsamen Dokumente (unter Win7 Bibliothek Gemeinsame Dateien).

Woran kann das liegen und wie bekomme ich auch auf dem Rechner den gewünschten Pfad? Laut Kundenangaben gibt es den Pfad, sogar an standardmäßiger Stelle, nur mein Delphi-Programm (d6) schafft es nicht, ihn zu ermitteln.

Danke im Voraus!
Andreas
Freude am Schauen und Begreifen ist die schönste Gabe der Natur. [Albert Einstein]
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Probleme mit Special Folder

  Alt 26. Mär 2013, 19:50
Geht es mit dieser Funktion?

Delphi-Quellcode:
...

  function SHGetFolderPathW(hwndOwner: HWND; nFolder: Integer; hToken: THandle;
    dwFlags: DWORD; pszPath: LPWSTR): HRESULT; stdcall;
    external 'shell32.dllname 'SHGetFolderPathW';

...

function GetSpecialDirectory(CSIDL: Integer; Handle: Cardinal = 0): String;
const
  SHGFP_TYPE_CURRENT = 0;
var
  APIResult: HRESULT;
  Buffer: Array[0 .. MAX_PATH - 1] of WCHAR;
begin
  Result := '';

  APIResult := SHGetFolderPathW(Handle, CSIDL, 0, SHGFP_TYPE_CURRENT, Buffer);

  if APIResult = S_OK then
    Result := SysUtils.IncludeTrailingPathDelimiter(WideString(Buffer));
end;
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Probleme mit Special Folder

  Alt 26. Mär 2013, 20:02
Was bekommst du denn für einen Fehlercode, wenn SHGetPathFromIDList fehlschlägt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
aps

Registriert seit: 21. Sep 2003
Ort: Hameln
62 Beiträge
 
Delphi 6 Professional
 
#4

AW: Probleme mit Special Folder

  Alt 27. Mär 2013, 17:52
Erst einmal danke für die Antworten.

@Andreas: Ich habe meinem Kunden mal ein kleines Testprogramm geschickt, damit er das mal ausprobieren kann.

@Luckie: Gibt es eine Möglichkeit, mehr zu erfahren als nur "Klappt" oder "Klappt nicht"? Ich kenne mich mit diesen Routinen vom Windows-System nicht mehr wirklich aus (überhaupt bin ich leider seit Jahren aus Delphi raus und fange gerade erst wieder damit an), und die Funktion stammt hier aus der Lib.
Andreas
Freude am Schauen und Begreifen ist die schönste Gabe der Natur. [Albert Einstein]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Probleme mit Special Folder

  Alt 27. Mär 2013, 18:52
In der Doku steht nichts wie man an nähere Infos kommt. Aber versuch es mal mit GetLastError.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
aps

Registriert seit: 21. Sep 2003
Ort: Hameln
62 Beiträge
 
Delphi 6 Professional
 
#6

AW: Probleme mit Special Folder

  Alt 27. Mär 2013, 20:07
Ich wollte hier Erfolg melden: Die Variante von Andreas funktioniert auf allen getesteten Systemen, auch auf dem des Kunden, wo die alte Version hier aus der Lib nicht lief.


Danke dafür
Andreas
Freude am Schauen und Begreifen ist die schönste Gabe der Natur. [Albert Einstein]
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz