![]() |
Symbole der Systemsteuerung anzeigen
Mit diesem
![]() Wie kann ich beim Doppelklick auf eines der Symbole (z.B. Internetoptionen, Sicherheitscenter usw.) das entsprechende Systemsteuerungsapplet ausführen lassen? Der Code für den Doppelklick auf das entsprechende Icon in einem ListView ist ja einfach und sieht so aus (zum Test lasse ich mir hier die Beschriftung des Symbols anzeigen):
Code:
Aber, wie komme ich an den Pfad des entsprechenden Systemsteuerungsapplets um dieses via ShellExecute ausführen zu können?
procedure TForm1.lvDblClick(Sender: TObject);
var i : Integer; begin if lv.Selected <> nil then begin i := lv.Selected.Index; showmessage(lv.Items.Item[i].Caption); end; end; |
Re: Symbole der Systemsteuerung anzeigen
Delphi-Quellcode:
applets:
uses shellapi ;
procedure RunControlPanelApplet(Applet:string); begin shellexecute(handle, 'open', pchar('rundll32.exe'), pchar('shell32.dll,Control_RunDLL ' + Applet), nil, SW_ShowNormal); end; access.cpl --> Hardware Dialog appwiz.cpl --> Software Dialog desk.cpl --> Anzeige intl.cpl --> Ländereinstellungen main.cpl --> Maus sysdm.cpl --> System ... ich hoffe es hilft .... cya |
Re: Symbole der Systemsteuerung anzeigen
Hallo,
vielleicht hilft auch dieser Microsoft Artikel: ![]() Grüße vom marabu |
Re: Symbole der Systemsteuerung anzeigen
Also ich rufe Systemsteuerungs-Applets folgendermaßen auf:
Delphi-Quellcode:
Die einzelnen CPL's sind unter bspw. foldermaßen dokumentiert:
PROCEDURE RunCPL(CPLName : STRING);
BEGIN WinExec(PChar('rundll32.exe shell32.dll,Control_RunDLL '+CPLName), SW_SHOWNORMAL); END; ACCESS.CPL = Eingabehilfen APPWIZ.CPL = Software BTHPROBS.CPL = Bluetooth-Geräte DESK.CPL = Anzeige FIREWALL.CPL = Firewall HDWWIZ.CPL = Hardware-Assistent INETCPL.CPL = Vorgabeet INTL.CPL = Region/Sprache IRPROBS.CPL = Infrarot JOY.CPL = Gamecontroller MAIN.CPL = Maus MMSYS.CPL = Sound/Audio NCPA.CPL = Netzwerk NETSETUP.CPL = Netzwerk-Installation NUSRMGR.CPL = Benutzerkonten POWERCFG.CPL = Energie SYSDM.CPL = System TELEPHON.CPL = Telefon/Modem TIMEDATE.CPL = Datum/Uhrzeit WSCUI.CPL = Sicherheitscenter WUAUCPL.CPL = Automatische Updates |
Re: Symbole der Systemsteuerung anzeigen
Danke für eure Antworten. Mein Problem ist nicht wie ich ein Systemsteuerungsapplet via ShellExecute aufrufe, das weiß ich. Vielleicht habe ich mich nicht richtig verständlich ausgedrückt. Ich versuche es mal besser zu erklären:
Mit dem Code aus der Codelib lasse ich mir die verfügbaren Systemsteuerungsapplets auf dem jeweiligen Rechner anzeigen. Dies beinhaltet ja auch Systemsteuerungsapplets von Fremdherstellern (z.B. von Antivirenprogrammen oder Soundkartentreibern). Das heisst hier würde mir die Liste der bekannten Applets nicht weiterhelfen. Ich muss also durch Auswahl auf eines der aufgelisteten Icons im Listview irgendwie auf den kompletten Pfad des dazugehörigen Applets (z.B. C:\Program Files\Realtek\InstallShield\RTSndMgr.cpl) kommen um dieses ausführen zu können. Hoffe ich habe mein Problem jetzt besser beschrieben. :gruebel: |
Re: Symbole der Systemsteuerung anzeigen
alle *.cpl Dateien, also von M$ und Fremdanbietern befinden sich im System-Verzeichnis ['system32'] ...
dadurch das du weißt welche zu M$ gehören - weißt du auch welche von Fremdanbietern stammen ... vllt. kommt man so zu einer logik um die entsprechenden applets auszuführen ... cya |
Re: Symbole der Systemsteuerung anzeigen
Zitat:
Ausserdem komme ich davon immer noch nicht vom ausgewählten Icon zum dazugehörigen Applet. |
Re: Symbole der Systemsteuerung anzeigen
Hallo,
mit der Prozedur ![]() Unter Windows XP stehen die cpl Dateien von Fremdanbietern unter dem Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Control Panel\Cpls und unter Win9X in der Control.ini unter [MMCPL]. Du könntest dann mit der Prozedur GetCPLCaptions() wo du den Pfad zu den einzelnen .cpl Dateien übergibst die Namen auslesen und mit den Items des Listview vergleichen. EDIT: Dann könnte man eigentlich gleich mit LoadImage() das entsprechende Icon aus der cpl Datei laden und im Listview anzeigen. Der Index dazu steht in der Variable CPLInfo.idIcon. |
Re: Symbole der Systemsteuerung anzeigen
Der Tipp mit GetCPLCaptions ist schon mal nicht schlecht und auch der Tipp mit dem Ort in der Registry ist sehr hilfreich. ABER, es gibt noch ein ganz anderes Problem wie ich grade feststellen muss.
Mit dem Code aus der CodeLib erhalte ich 52 Einträge die sich in der Systemsteuerung befinden. Das stimmt auch mit der Anzeige in der Windows-Systemsteuerung überein. Wenn ich aber meine Festplatte nach CPL-Dateien durchsuchen lasse, komme ich ohne Dubletten nur auf 23 Dateien. In der Registry unter HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Con trol Panel\Cpls habe ich gesehen das dort auch ein paar DLL-Dateien eingetragen sind, aber selbst mit denen zusammen komme ich noch nicht mal auf die Hälfte der tatsächlich in der Systemsteuerung vorhandenen Einträge. Da muss es doch noch irgendeine Funktion oder einen Trick geben mit dem Windows das realisiert. :gruebel: |
Re: Symbole der Systemsteuerung anzeigen
Die von mir verlinkte MS Support Seite erklärt diese Einzelheiten eigentlich genau.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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