Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Windows API / MS.NET Framework API (https://www.delphipraxis.net/20-library-windows-api-ms-net-framework-api/)
-   -   Delphi Foldericon anpassen (https://www.delphipraxis.net/6232-foldericon-anpassen.html)

sakura 4. Jul 2003 10:26


Foldericon anpassen
 
So, damit ich den Code nicht verliere, kommt der gleich mal in die CodeLibrary 8)

Ihr kennt bestimmt alle den Bilder-Ordner, Favoriten-Ordner und andere, welche sich im Explorer gesondert darstellen. Dieser Code zeigt lediglich, wie man das Icon ändern kann und einen Info-Tipp anzeigt. Es ist kein Beispiel für eine andere Dateiansicht, dazu wird die Datei folder.htt gebraucht, und das habe ich noch nicht getan.

Im Verzeichnis, welches sich gesondert darstellen soll, muss ein Datei desktop.ini enthalten sein. Diese sollte die Attribute faHidden und faSysFile haben. Der Aufbau ist denkbar einfach.
Code:
[.ShellClassInfo]
IconFile=folder.ico
IconIndex=0
InfoTip=Mein schöner Folder.
Hier wird die Datei folder.ico fürs Icon genutzt. Da nur der Dateiname angegeben wurde, wird die Datei auch im entsprechenden Verzeichnis erwartet. Auch hier sollten die Attribute analog zu denen der desktop.ini gesetzt sein.

Damit der Windows-Explorer die desktop.ini auch lädt, muss dieses dem System mitgeteilt werden. Dazu gibt es die Funktion PathMakeSystemFolder, welche durch Delphi nicht bereitgestellt wird und daher separat importiert werden muss. Verfügbar ist die ab dem IE 4.0.
Delphi-Quellcode:
function PathMakeSystemFolder(pszPath: LPSTR): BOOL; stdcall; external
    'shlwapi.dll' name 'PathMakeSystemFolderA';
Windows bietet für diese Funktion keine Gegenfunktion :shock:, deshalb muss man das durch das korrigieren der Verzeichnisattribute von Hand erledigen.

Die folgende Funktion ermöglicht es, diese erweiterte Darstellung an- und auszuschalten. Sie erwartet als ersten das Verzeichnis, dessen Attribute angepasst werden sollen und als zweiten Parameter True für die spezielle Ansincht, ansonsten False.
Delphi-Quellcode:
procedure SetDesktopIni(Path: String; ShowSpecialSettings: Boolean);
var
  pPath: array[0..MAX_PATH] of Char;
begin
  if AnsiLastChar(Path)^ = '\' then
    SetLength(Path, Pred(Length(Path)));
  StrPCopy(pPath, Path);
  if ShowSpecialSettings then
  begin
    PathMakeSystemFolder(pPath);
  end else begin
    SetFileAttributes(pPath, GetFileAttributes(pPath) and (
        not (faSysFile or faReadOnly)));
  end;
end;
...:cat:...

Gast 5. Jul 2003 17:07

Weißt du auch, wie man eine HTML zuweist? Wäre interessant.

Als Antwort auf den Beitrag darunter: Danke ;)

(Will ja hier keine Posts kassieren für Sinnloses)

sakura 5. Jul 2003 17:43

Daran forsche ich noch. Ich bin schon recht weit. Ich lasse es Dich wissen, sobald es funktioniert ;-)

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 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