Forum: Programmieren allgemein
Delphi
by TiGü,
4. Mai 2018
Das Problem lässt sich mit Konsolenprogramm nicht nachvollziehen. Viel Spaß bei der Fehlersuche.
Forum: Programmieren allgemein
Delphi
by TiGü,
4. Mai 2018
Task Manager parallel öffnen und schauen, ob das Programm richtig beendet wird.
Forum: Programmieren allgemein
Delphi
by TiGü,
4. Mai 2018
Erzeugst du die visuellen Elemente aufgrund der Größe des Rückgabewertes von TAudioVolume.GetSessionCount oder aufgrund der Länge des Arrays FAudioSessionList?
Sind diese Zeilen noch aktuell oder inzwischen auch geändert/auskommentiert?
HR := pEnumerator.GetCount(FSessionCount);
Succeeded(HR) then
SetLength(FAudioSessionList, FSessionCount + 1);
Forum: Programmieren allgemein
Delphi
by TiGü,
4. Mai 2018
inc(SCount, i); fällt dir was auf? :roll:
Forum: Programmieren allgemein
Delphi
by TiGü,
4. Mai 2018
Laut Screenshots deines Programms sind es acht Sessions. Laut Windows vier Anwendungen und ein Gerät/Systemsound.
Ist der Wert von FSessionCount ermittelt durch: HR := pEnumerator.GetCount(FSessionCount);, denn auch acht? => Debuggen!
Forum: Programmieren allgemein
Delphi
by TiGü,
3. Mai 2018
Du solltest deiner TAudioVolume.GetPathFromPID Methode in der ersten Zeile übrigens ein Result := ''; gönnen. Sicher ist sicher!
Forum: Programmieren allgemein
Delphi
by TiGü,
3. Mai 2018
for j := 0 to ProcList.Count - 1 do
begin
ProcId := GetProcessIdFromModuleName(pWideChar(ProcList));
if (PID = ProcId) and (PID <> GetCurrentProcessId) then
begin
if State <> uint(TAudioSessionState.AudioSessionStateExpired) then
begin
...
Forum: Programmieren allgemein
Delphi
by TiGü,
3. Mai 2018
SessionControl2.GetProcessId(ProcessId);
Writeln('Process ID: ', ProcessId);
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessId);
if ProcessHandle <> 0 then
begin
if GetModuleFileNameEx(ProcessHandle, 0, ProcessName,...
Forum: Programmieren allgemein
Delphi
by TiGü,
3. Mai 2018
Kann es sein, dass du den von jaenicke zitierten Abschnitt nicht so ganz verstanden hast?
Hier nochmal auf Deutsch:
Was heißt das also?
Es besagt, dass es für Programme wie Skype, Chrome, Internet Explorer, FireFox, WinAmp, VLC KEINE Pflicht ist, das Interface IAudioSessionControl zu implementieren bzw. die Methode SetDisplayName aufzurufen.
Keine Ahnung, was du eigentlich...
Forum: Programmieren allgemein
Delphi
by TiGü,
2. Mai 2018
Das ist ein Forum.
Man stellt öffentlich Fragen und erhält öffentlich Antworten.
Es hätte keinen Sinn für nachfolgende Programmierergenerationen, wenn die eventuell folgende Lösung nur noch per internen Mailverkehr abläuft.
Ein kleines Beispielprogramm mit allen notwendigen Units wird ja möglich sein.
Anders machen das andere User ja auch nicht, wenn ihnen geholfen werden soll.
Mit den...
Forum: Programmieren allgemein
Delphi
by TiGü,
2. Mai 2018
Das mit dem unvollständigen Quelltext-Schnipseln ist mir so zu mühselig.
Lade bitte ein kleines Konsolenprojekt mit allen notwendigen Units und Dateien als ZIP-Archiv hoch.
Forum: Programmieren allgemein
Delphi
by TiGü,
2. Mai 2018
Zusatzfrage: Welchen Wert hat HR?
HR := SessionControl2.GetDisplayName(pDisplayName);
Forum: Programmieren allgemein
Delphi
by TiGü,
2. Mai 2018
Was ist SessionControl2? Wo kommt es her? Wie wird es erzeugt? Was ist der Datentyp? Ist das ein Interface? Wie ist die Definition des Interfaces?
Forum: Programmieren allgemein
Delphi
by TiGü,
2. Mai 2018
Wie machste das denn?
:glaskugel: Glaskugel sagt: Ohne genauen Quelltext keine Aussage! :glaskugel:
Forum: Programmieren allgemein
Delphi
by TiGü,
2. Mai 2018
Versuch mal anstatt GetModuleBaseName die Funktion GetProcessImageFileNameW.
Beispiel:
program Project3;
{$APPTYPE CONSOLE}
{$R *.res}
Forum: Programmieren allgemein
Delphi
by TiGü,
2. Mai 2018
iexplore.exe besteht ja MINDESTENS aus zwei Process-Instanzen, wenn ich ihn bei mir hier starte und sonst nichts mache (laut Task-Manager).
Probiere doch mal die andere PID aus.