Wie kann ich das beheben bzw. auf was muss ich achten?
Ich starte einen Stream vom Internet über den IE11 anschließend führe ich TAudioVolume aus.
Bei normalen Prozessen ermittelt über die PID gibt es kein Problem.
Aber wenn hier die Session erstellt und die Abfrage über den Prozess läuft bekomme ich oben genannte Fehlermeldung.
Was kann man machen?
Das selbe Problem habe ich auch wenn die Sidebar.exe erkannt wird.
Delphi-Quellcode:
FAudioSessionList[Index].SessionGuid := GroupGuid;
HR := SessionControl2.GetDisplayName(pDisplayName);
if Succeeded(HR) then
begin
FAudioSessionList[Index].DisplayName := pDisplayName;
if AudioSessionInfo(Index).DisplayName = '' then
FAudioSessionList[Index].DisplayName := GetBaseNameFromPID(PID);
Delphi-Quellcode:
function TAudioVolume.GetBaseNameFromPID(const PID: DWORD): string;
var
hProcess: THandle;
path: array [0 .. MAX_PATH - 1] of WChar;
ErrorTxt : array [0..500] of char;
begin
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PID);
if hProcess <> 0 then
try
if GetModuleBaseName(hProcess, 0, path, MAX_PATH) = 0 then
begin
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, GetLastError, 0, ErrorTxt, 500, nil);
ShowMessage(ErrorTxt);
//RaiseLastOSError;
end;
Result := path;
finally
CloseHandle(hProcess)
end
else
RaiseLastOSError;
end;
Siehe shot! Das wird angezeigt.
Aber ich kann den Prozess steuern also die Lautstärke desselben.
Zudem bekomme ich so gut wie nie den DisplayName und den IconPath.
Eigentlich müsste der DisplayName wie beim Pic stream.png sein.
gruss