AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Symbole der Systemsteuerung anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Symbole der Systemsteuerung anzeigen

Ein Thema von ringli · begonnen am 13. Nov 2007 · letzter Beitrag vom 30. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#1

Symbole der Systemsteuerung anzeigen

  Alt 13. Nov 2007, 21:40
Mit diesem Beitrag aus der Codelib und der CSIDL_CONTROL kann ich mir ja den Inhalt der Systemsteuerung anzeigen lassen. Das klappt auch wunderbar, aber jetzt meine Frage:

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:
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;
Aber, wie komme ich an den Pfad des entsprechenden Systemsteuerungsapplets um dieses via ShellExecute ausführen zu können?
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#2

Re: Symbole der Systemsteuerung anzeigen

  Alt 14. Nov 2007, 08:20
Delphi-Quellcode:
uses shellapi ;

procedure RunControlPanelApplet(Applet:string);
begin
     shellexecute(handle, 'open', pchar('rundll32.exe'), pchar('shell32.dll,Control_RunDLL ' + Applet), nil, SW_ShowNormal);
end;
applets:

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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Symbole der Systemsteuerung anzeigen

  Alt 14. Nov 2007, 09:26
Hallo,

vielleicht hilft auch dieser Microsoft Artikel:

How to enumerate and run available Control Panel applications

Grüße vom marabu
  Mit Zitat antworten Zitat
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Symbole der Systemsteuerung anzeigen

  Alt 14. Nov 2007, 09:45
Also ich rufe Systemsteuerungs-Applets folgendermaßen auf:

Delphi-Quellcode:
PROCEDURE RunCPL(CPLName : STRING);
BEGIN
  WinExec(PChar('rundll32.exe shell32.dll,Control_RunDLL '+CPLName), SW_SHOWNORMAL);
END;
Die einzelnen CPL's sind unter bspw. foldermaßen dokumentiert:

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
Devid
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Symbole der Systemsteuerung anzeigen

  Alt 14. Nov 2007, 10:15
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.
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#6

Re: Symbole der Systemsteuerung anzeigen

  Alt 14. Nov 2007, 10:53
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
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Symbole der Systemsteuerung anzeigen

  Alt 14. Nov 2007, 10:57
Zitat von soulies:
alle *.cpl Dateien, also von M$ und Fremdanbietern befinden sich im System-Verzeichnis ['system32'] ...
Stimmt so nicht. Das Systemsteuerungsapplet für das LiveUpdate von Symantec befindet sich bspw. im Verzeichnis C:\Program Files\Symantec\LiveUpdate\S32LUCP2.CPL

Ausserdem komme ich davon immer noch nicht vom ausgewählten Icon zum dazugehörigen Applet.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Symbole der Systemsteuerung anzeigen

  Alt 14. Nov 2007, 11:34
Hallo,

mit der Prozedur GetCPLCaptions() aus der Code-Lib kannst du den Anzeige-Namen auslesen. Das ist also der Name den die einzelnen Items im Listview haben.
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.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Symbole der Systemsteuerung anzeigen

  Alt 14. Nov 2007, 12:58
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Symbole der Systemsteuerung anzeigen

  Alt 14. Nov 2007, 13:02
Die von mir verlinkte MS Support Seite erklärt diese Einzelheiten eigentlich genau.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:16 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