![]() |
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.
|
Re: Symbole der Systemsteuerung anzeigen
@devidespe: WinExec solltest du schleunigst ersetzen. Dies ist schon seit einigen jahren depricated. Wenn du es weiterhin verwendest darfst du dich nicht wundern wenn mit dem nächsten Update die Funktion im Betriebssystem beseitigt ist.
|
Re: Symbole der Systemsteuerung anzeigen
Zitat:
![]() |
Re: Symbole der Systemsteuerung anzeigen
Zitat:
|
Re: Symbole der Systemsteuerung anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
So nachdem ich noch eine ganze Weile herumprobiert und gesucht habe, habe ich die Lösung des Problems gefunden. Ich hänge das Testprojekt mal an, vielleicht kann es ja nochmal jemand gebrauchen oder hat Verbesserungsvorschläge.
Danke allen nochmal für die Unterstützung. :) |
Re: Symbole der Systemsteuerung anzeigen
Deine Demo habe ich gerade getestet, bei mir lassen sich allerdings nur einige Systemsteuerungsapplet unter WindowsXP ausführen. Der Rest funktioniert nicht, in der Variable .rAppletPath steht dann nur der Name des Applet drin.
|
Re: Symbole der Systemsteuerung anzeigen
Ja du hast recht. :cry:
Scheinbar hat die verwendete Funktion unter Windows XP (vermutlich auch noch kleinere Windowsversionen) ein Problem die GUID's zu ermitteln. Unter Windows Vista funktioniert es nämlich problemlos. Leider habe ich im Moment keine Ahnung woran das liegen könnte. :( |
Re: Symbole der Systemsteuerung anzeigen
hoi,
falls du die JEDI's installiert hast, dann hilft dir vllt. die Komponente 'JvAppletDialog' zur Lösung des Problems auf XP Systemen. cya |
Re: Symbole der Systemsteuerung anzeigen
Nein habe die Jedis nicht installiert. Aber werde ich wohl mal machen müssen wenn sonst keiner eine Idee hat.
|
AW: BTHPROBS.CPL - Symbole der Systemsteuerung anzeigen
Die Liste der Applets *.CPL ist ja ganz hilfreich, nur, der Aufruf mit BTHPROBS.CPL als Parameter funktioniert nicht - weder mit WinExec noch mit shellExecute.
Die Gegenprobe mit TIMEDATE.CPL funktioniert hingegen. Weiteres Indiz: Ruft man unter START -> Ausführen TIMEDATE.CPL auf, funktioniert der Aufruf, mit BTHPROBS.CPL funktioniert dieser Aufruf jedoch nicht. Fehlermeldung (auf mehreren Rechner unter Win XP und Win Vista): "bthprobs.cpl konnte nicht gefunden werden. ...", obwohl unter Windows/system32/ gleichermaßen vorhanden. Es scheint so zu sein, dass der programmgesteuerte Aufruf der Bluetooth-Einstellungen unter Windows irgendwie geschützt ist. Auch eine Suche auf den Windows support-seiten und googeln brachte keinen Hinweis auf Abhilfe. Hat jemand Erfahrungen damit ? |
AW: Symbole der Systemsteuerung anzeigen
Die schweren Fehler findet man sofort, die Suche nach Lösungen für die kleinen Fehler dauert oft Stunden.
Das CPL (Control Panel Applet) für Bluetooth-Geräte heißt nicht BTHPROBS.CPL wie oben in der Liste vom 14.11.2007 aufgelistet sondern BTHPROPS.CPL , damit klappt es jetzt auch. Der Tippfehler müsste/sollte wohl auch in der obigen Liste korrigiert werden, oder ? um Nachahmerfehler zu vermeiden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 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