![]() |
Control Panel commands
Mit dem Befehl öffne ich das Control Panel für Multimedia und dem geöffneten Tab Sounds
Delphi-Quellcode:
Jetzt möchte ich den für den Lautsprecher öffnen.ShellExecute(MainHandle, 'open', PWideChar(GetSpecialFolder(CSIDL_SYSTEM) + '\control.exe '), 'mmsys.cpl,,2', '', SW_SHOWNORMAL); Zitat:
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 |
AW: Control Panel commands
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 |
AW: Control Panel commands
Zitat:
|
AW: Control Panel commands
Ich kenne nur ein paar standards.
Zitat:
|
AW: Control Panel commands
Zitat:
Delphi-Quellcode:
oder
ShellExecute(MainHandle, 'open', PWideChar(GetSpecialFolder(CSIDL_SYSTEM) +
'\control.exe '), 'mmsys.cpl,,2', '', SW_SHOWNORMAL);
Delphi-Quellcode:
weil meine Anwendung auch unter Koreanischer Flage laufen soll verwende ich anstelle von 'sounds' den Index des gewünschten Tab das angezeigt werden soll.
ShellExecute(MainHandle, 'open', PWideChar(GetSpecialFolder(CSIDL_SYSTEM) +
'\control.exe '), 'mmsys.cpl,,sounds', '', SW_SHOWNORMAL); In dem fall ist das die 2. Zitat:
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));
Delphi-Quellcode:
Device.GetId(DeviceId)
Bsp. Mein Device 'Lautsprecher (Realtek High Definition Audio)'
Code:
DeviceId liefert dann die ID des Device zurück diese muss man dann nur noch nach außen hin zur verfügung stellen.
DeviceId = '{0.0.0.00000000}.{74088c25-4c92-4184-b938-5651c2eeb6fd}'
öffnen kann man ihn dann auf diese weise..
Delphi-Quellcode:
Ja, ja man kommt auch anders an den system32 Pfad.. Ich mache es halt auf diese weise.
ChangeFSRedirection(true);
ShellExecute(MainHandle, 'open', PWideChar(GetSpecialFolder(CSIDL_SYSTEM) + '\control.exe '), PWideChar('mmsys.cpl, ,' + MainClass.DeviceId), nil, SW_SHOWNORMAL); ChangeFSRedirection(false); gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 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