AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CSIDL_CONTROLS funktioniert nicht!!!
Thema durchsuchen
Ansicht
Themen-Optionen

CSIDL_CONTROLS funktioniert nicht!!!

Ein Thema von max666 · begonnen am 5. Mär 2005 · letzter Beitrag vom 5. Mär 2005
Antwort Antwort
max666

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

CSIDL_CONTROLS funktioniert nicht!!!

  Alt 5. Mär 2005, 10:20
Hallo!

Ich wollte mal das virtuelle Verzeichnis der Systemsteuerung auslesen und alle Programme in eine Tabelle auflisten. Mit CSIDL_PROGRAMS usw. funktioniert das auch. Nur mit CSIDL_CONTROLS geht das nicht!

Hat jemand eine Idee, wie ich an die Einträge in der Systemsteuerung kommt?

Gruß
max666
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: CSIDL_CONTROLS funktioniert nicht!!!

  Alt 5. Mär 2005, 11:46
Zitat von max666:
Mit CSIDL_PROGRAMS usw. funktioniert das auch. Nur mit CSIDL_CONTROLS geht das nicht!
Ob du es glaubst oder nicht, es wäre unheimlich hilfreich, wenn du uns sagen würdest, WIE du es bisher probiert hast und was du unter "geht das nicht" verstehst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
max666

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

Re: CSIDL_CONTROLS funktioniert nicht!!!

  Alt 5. Mär 2005, 13:57
Hallo!

Ich habe mit folgender Funktion das virtuelle Verzeichnis von z.B. CSIDL_PROGRAMS ermittelt!

Delphi-Quellcode:
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;
  SHGetSpecialFolderLocation(hWindow, Folder, pidl);
  GetMem(Path, MAX_PATH);
  SHGetPathFromIDList(pidl, Path);
  Result := Path;
  FreeMem(Path);
  pMalloc.Free(pidl);
end;



procedure desktopview;
var Handle: HWND;
    FileInfo: TSHFileInfo;
    PIDL: PItemIDList;
begin
CSIDLPROGRAMS:=(GetSpecialFolder(Handle, CSIDL_PROGRAMS));
Und mit Hilfe der Variablen "CSIDLPROGRAMS" und einer rekursieven Funktion kann man dann das gesammt Verzeichnis auslesen! Bei CSIDL_CONTROL geht das aber nicht!

Gruß
max666
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: CSIDL_CONTROLS funktioniert nicht!!!

  Alt 5. Mär 2005, 14:02
Weil das auch ein virtueller Ordner ist, den es nicht wirklich auf der Platte gibt. Zum Auslesen der Systemsteuerung kannst/musst du die passenden Shell-Funktionen bemühen. Du könntest spaßeshalber mal einen Blick in die Beispiele aus Luckies Hier im Forum suchenWin32-API-Tutorials werfen. Ich weiß 100%, dass diese Funktionen in der Splitter-Demo benutzt werden. Allerdings wird dort der "Eigene Dateien"-Ordner ausgelesen. Den Umbau für die Systemsteuerung sollte man aber mit der durchschnittlichen Anzahl an Gehirnzellen hinbekommen.
  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 04:21 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