Thema: Delphi Das Handle ist ungültig

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Das Handle ist ungültig

  Alt 2. Mai 2018, 05:32
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

Geändert von EWeiss (11. Jul 2019 um 15:51 Uhr)
  Mit Zitat antworten Zitat