AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Control Panel commands

Ein Thema von EWeiss · begonnen am 16. Nov 2018 · letzter Beitrag vom 18. Nov 2018
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Control Panel commands

  Alt 16. Nov 2018, 18:34
Mit dem Befehl öffne ich das Control Panel für Multimedia und dem geöffneten Tab Sounds
Delphi-Quellcode:
              
ShellExecute(MainHandle, 'open', PWideChar(GetSpecialFolder(CSIDL_SYSTEM) +
  '\control.exe '), 'mmsys.cpl,,2', '', SW_SHOWNORMAL);
Jetzt möchte ich den für den Lautsprecher öffnen.
Zitat:
control.exe mmsys.cpl, ,<endpoint-id>
control.exe mmsys.cpl, ,{0.0.0.00000000}.{3737a710-7f79-4359-9073-e6da499920a0}
so wie gelesen soll das funktionieren tut es aber nicht wirklich.

jemand eine Liste wo ich die korrekten endpoint-IDs herbekomme?
Oder kennt jemand eine andere Zeichenfolge die mir den Lautsprecher Tab öffnet.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:54 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Control Panel commands

  Alt 17. Nov 2018, 23:30
Beantworte es selbst funktioniert jetzt egal welches Device ausgewählt wurde.
Als Beispiel LineIn.

Es funktioniert mit den ID's wenn man denn weis wie man dran kommt und es die richtige ist.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:54 Uhr)
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#3

AW: Control Panel commands

  Alt 18. Nov 2018, 09:16
Beantworte es selbst funktioniert jetzt egal welches Device ausgewählt wurde.
Als Beispiel LineIn.

Es funktioniert mit den ID's wenn man denn weis wie man dran kommt und es die richtige ist.

gruss
Wär‘s du auch so nett, uns auch mittelst wie man an die ID‘s dran kommt? Auch wenn Dir hier keiner die Antwort nennen konnte, was vielleicht bedeutet, dass es eben auch keiner wusste, wäre es für den nächsten, der genau sowas sucht, eine echte Hilfe, wenn du deine Erkenntnis mit den anderen Forennutzern teils.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Control Panel commands

  Alt 18. Nov 2018, 10:22
Ich kenne nur ein paar standards.
Zitat:
Multimedia/Sounds Options (MMSYS.CPL)
------------------------------------------
Multimedia Properties (Audio):
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
Multimedia Properties (Video):
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
Multimedia Properties (MIDI):
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
Multimedia Properties (CD Music):
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
Multimedia Properties (Advanced):
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Control Panel commands

  Alt 18. Nov 2018, 10:50
Zitat:
Wär‘s du auch so nett, uns auch mittelst wie man an die ID‘s dran kommt?
Die Definition sollte klar sein, wurde oben schon gezeigt.
Delphi-Quellcode:
ShellExecute(MainHandle, 'open', PWideChar(GetSpecialFolder(CSIDL_SYSTEM) +
   '\control.exe '), 'mmsys.cpl,,2', '', SW_SHOWNORMAL);
oder
Delphi-Quellcode:
ShellExecute(MainHandle, 'open', PWideChar(GetSpecialFolder(CSIDL_SYSTEM) +
   '\control.exe '), 'mmsys.cpl,,sounds', '', SW_SHOWNORMAL);
weil meine Anwendung auch unter Koreanischer Flage laufen soll verwende ich anstelle von 'sounds' den Index des gewünschten Tab das angezeigt werden soll.
In dem fall ist das die 2.
Zitat:
control.exe mmsys.cpl, ,<endpoint-id>
Bei Wasapi ist es so das man die EndPoint-ID kennen muss vom aktuellen Device das gewählt wurde.
Diese ist in jedem System anders und ist nicht vererbbar deshalb ging mein Beispiel oben nicht weil diese ID von einem anderen System stammt.

Die ID bekommt man indem wir das Interface IMMDeviceCollection implementieren.
Anschließend enumeriert man die Device mit GetCount.
Die ID wird dann über den DeviceIndex der jeweiligen Collection zurück gegeben.

Delphi-Quellcode:
    HR := DeviceCollection_.Item(DeviceIndex, Device);
    if HR <> S_OK then
      raise Exception.Create('Unable to get IMMDevice interface for device #' + intToStr
          (DeviceIndex));

    HR := Device.GetId(DeviceId);
    if HR <> S_OK then
      raise Exception.Create('Unable to get device id for device #' + intToStr(DeviceIndex));

Device.GetId(DeviceId)
Bsp. Mein Device 'Lautsprecher (Realtek High Definition Audio)'
Code:
DeviceId = '{0.0.0.00000000}.{74088c25-4c92-4184-b938-5651c2eeb6fd}'
DeviceId liefert dann die ID des Device zurück diese muss man dann nur noch nach außen hin zur verfügung stellen.

öffnen kann man ihn dann auf diese weise..
Delphi-Quellcode:
ChangeFSRedirection(true);
ShellExecute(MainHandle, 'open', PWideChar(GetSpecialFolder(CSIDL_SYSTEM) +
  '\control.exe '), PWideChar('mmsys.cpl, ,' + MainClass.DeviceId), nil, SW_SHOWNORMAL);
ChangeFSRedirection(false);
Ja, ja man kommt auch anders an den system32 Pfad.. Ich mache es halt auf diese weise.

gruss

Geändert von EWeiss (18. Nov 2018 um 12:35 Uhr)
  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 17:13 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