Thema: Delphi Das Handle ist ungültig

Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#39

AW: Das Handle ist ungültig

  Alt 3. Mai 2018, 12:56
Delphi-Quellcode:
for j := 0 to ProcList.Count - 1 do
                    begin
                      ProcId := GetProcessIdFromModuleName(pWideChar(ProcList[j]));
                      if (PID = ProcId) and (PID <> GetCurrentProcessId) then
                      begin
                        if State <> uint(TAudioSessionState.AudioSessionStateExpired) then
                        begin
                          FAudioSessionList[i].ActiveSession := IntToStr(i);
                          FAudioSessionList[i].PID := PID;
                          inc(SCount, i);
                        end;
                      end;
                    end;
Warum eigentlich der Vergleich von PID mit der ProcID, die du über die gefüllte ProcList holst? Wozu dient das?
Die PID, die du mit SessionControl2.GetProcessID(PID); ermittelst, gibt dir doch eine gültige Process ID einer Audiosession?

Der ieexplore lässt sich ohne große Verrenkungen per OpenProcess ermitteln:
Code:
SessionIndex:             2
SessionIdentifier:        {0.0.0.00000000}.{18e53891-8712-4c0d-9aab-e23e4b813b96}|#%b{63C9CE85-D9FF-4AE9-A105-C25B9A69E0C8}
SessionInstanceIdentifier: {0.0.0.00000000}.{18e53891-8712-4c0d-9aab-e23e4b813b96}|#%b{63C9CE85-D9FF-4AE9-A105-C25B9A69E0C8}|12%b#
DisplayName:
IconPath:
Process ID:               5444
ProcessName:              C:\Program Files (x86)\Internet Explorer\iexplore.exe
ProcessName wird über OpenProcess() und GetModuleFileNameEx() geholt.

Geändert von TiGü ( 3. Mai 2018 um 13:02 Uhr)
  Mit Zitat antworten Zitat