Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi .lnk dateien auf dem Desktop werden nicht erkannt. (https://www.delphipraxis.net/140720-lnk-dateien-auf-dem-desktop-werden-nicht-erkannt.html)

stiftII 24. Sep 2009 16:41


.lnk dateien auf dem Desktop werden nicht erkannt.
 
Hallo zusammen.

Ich hab mir nen Programm geschrieben, welches meinen Desktop für mich aufräumt (nicht benötigte Dateien verschiebt).

Das Problem ist: Es erkennt einige .lnk dateien nicht. Meistens genau die dateien, welche vom Programm bei der installation selbst erstellt wurden sind. ZB. Adobe Acrobat, Antivir usw...

Mein Funktion um Dateien einzulesen sieht wie folgt aus:

Delphi-Quellcode:
function GetFiles : TStringArray;
var
    Rec : TSearchRec;
    nFileCount : integer;
    foo : string;
begin
    nFileCount := 0;
    if FindFirst(GetDesktopPath+'\*.*', faAnyFile, Rec) = 0 then
    begin
        repeat
            // Exclude directories from the list of files.
            if ((Rec.Attr and faDirectory) <> faDirectory) then
      begin
        SetLength(Result, High(Result)+2);
        Result[nFileCount] := Rec.Name;
                Inc(nFileCount);
      end;
        until FindNext(Rec) <> 0;
        FindClose(Rec);
    end;
end;
Die besagten .lnk Dateien werden allerdings nicht gefunden :x..

Jemand nen Tipp ?

Grüße,
stiftII

Luckie 24. Sep 2009 16:46

Re: .lnk dateien auf dem Desktop werden nicht erkannt.
 
Was ist das für ein Pfad: GetDesktopPath?
Es gibt auch noch andere Ordner, wo die Dateien auf dem Desktop liegen, AllUsers zum Beispiel.

stiftII 24. Sep 2009 16:49

Re: .lnk dateien auf dem Desktop werden nicht erkannt.
 
Zitat:

Zitat von Luckie
Was ist das für ein Pfad: GetDesktopPath?
Es gibt auch noch andere Ordner, wo die Dateien auf dem Desktop liegen, AllUsers zum Beispiel.

hallo,

Danke der Tipp könnte schon meine Problemlösung sein ;).

Werds gleich mal testen.

Zu deiner Frage:

Delphi-Quellcode:
function GetDesktopPath : string;
var
  shellMalloc: IMalloc;
  ppidl: PItemIdList;
  PerDir: string;
begin
  ppidl := nil;
  try
    if SHGetMalloc(shellMalloc) = NOERROR then
    begin
      SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, ppidl);
      SetLength(Result, MAX_PATH);
      if not SHGetPathFromIDList(ppidl, PChar(Result)) then
        raise exception.create('SHGetPathFromIDList failed : invalid pidl');
      SetLength(Result, lStrLen(PChar(Result)));
    end;
  finally
   if ppidl <> nil then
         shellMalloc.free(ppidl);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz