Nope habe deine Funktion testweise mal eingebaut da kommt nichts an.
Beides bleibt leer.
...........
Dein Projekt ohne Änderung kompiliert D2010
Siehe das Ergebnis.
Sollte eigentlich den Namen und den IconPfad meiner Anwendung anzeigen.Tut's aber nicht.
Und wenn ich die Konsole vorher starte und anschließend ein Sound Programm stürzt das Konsolen teil ab.
Hmmm.. vielleicht lege ich das Projekt erst mal zur Seite.
Hier die Änderung damit es nicht mehr abstürzt.
Aber funktionieren tut es trotzdem nicht. (Win7 Problem? Keine Ahnung)
Delphi-Quellcode:
procedure PrintDefaultSessionControlDisplayName;
var
DeviceEnumerator: IMMDeviceEnumerator;
SessionManager: IAudioSessionManager;
SessionManager2: IAudioSessionManager2;
AudioDevice: IMMDevice;
SessionControl2: IAudioSessionControl2;
SessionEnumerator: IAudioSessionEnumerator;
SessionControl: IAudioSessionControl;
HR: HRESULT;
SessionCount: Integer;
pRetVal: PWideChar;
begin
SessionCount := 0;
HR := CoInitializeEx(nil, 0);
if Succeeded(HR) then
begin
HR := CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_ALL, IID_IMMDeviceEnumerator, DeviceEnumerator);
if Succeeded(HR) then
begin
HR := DeviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, AudioDevice);
if Succeeded(HR) then
begin
HR := AudioDevice.Activate(IID_IAudioSessionManager, CLSCTX_INPROC_SERVER, nil, IUnknown(SessionManager));
if Succeeded(HR) then
begin
if Supports(SessionManager, IID_IAudioSessionManager2, SessionManager2) then
begin
HR := SessionManager2.GetSessionEnumerator(SessionEnumerator);
if Succeeded(HR) then
begin
HR := SessionEnumerator.GetSession(SessionCount, SessionControl);
if Succeeded(HR) then
begin
if Supports(SessionControl, IID_IAudioSessionControl2, SessionControl2) then
begin
SessionControl2.GetDisplayName(pRetVal);
Writeln('DisplayName: ', pRetVal);
CoTaskMemFree(pRetVal);
SessionControl2.GetIconPath(pRetVal);
Writeln('IconPath: ', pRetVal);
CoTaskMemFree(pRetVal);
end;
SessionControl2 := nil;
end;
SessionControl := nil;
end;
SessionEnumerator := nil;
end;
SessionManager2 := nil;
end;
SessionManager := nil;
end;
end;
DeviceEnumerator := nil;
CoUninitialize;
end;
end;
gruss