![]() |
AW: TAudioVolume Komponente incl. System Mixer
Also in meiner Beispielapplikation mit dem Memo erhälst du OnSessionCreated?
|
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
gruss |
AW: TAudioVolume Komponente incl. System Mixer
Schreib einfach alles nochmal neu! :-D :roteyes:
|
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Du tust doch praktisch nichts .. bis auf ein paar Zeilen im Memo Auszugeben und das alles in der gleichen Anwendung bzw. Thread! Und die Herangehendweise ist komplett unterschiedlich. Erstelle mit deinem Sample Komponente und verwende einen externen zusätzlichen Thread dann sehen wir ob es immer noch funktioniert was ich bezweifeln möchte. Es macht nur sinn sich an die Vorgaben bzw. TAudioVolume zu halten alles andere ist Augenwischerei da es nicht die gleiche Basis verwendet. Aber wie gesagt mache erst mal pause. Bis auf 1 > 2 Leute interessiert es nicht wirklich jemand von daher ;) Aber! Es funktioniert trotzdem auch ohne neu zu schreiben nur du verstehst einfach nicht warum das so ist. :-D :roteyes: Eine Konsolen oder Memo Anwendung ist einfach nichtssagend was glaubst du eigentlich was bei dir abgeht wenn du dich in anderen Threads befindest? Nichts mehr! gruss |
AW: TAudioVolume Komponente incl. System Mixer
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Immer wenn ich mit einem Programmierproblem nicht weiterkomme, versuche ich das Problem zu isolieren. Das geht am Besten in einen Konsolenprogramm oder einer fast nackten Formularanwendung. Nur so sieht man letztendlich den oder die Unterschied(e) bzw. Fehler zum eigentlichen Projekt und kann es beheben. Diese Vorgehensweise will ich dir auch ans Herz legen, weil du dich oft schnell verzettelst. Diese überlangen und sehr komplizierten Non-VCL-Quelltexte, mit denen du normalerweise hantierst, tragen natürlich dazu bei. Zitat:
Delphi-Quellcode:
Siehe auch Anhang.
procedure TAudioThread.Execute;
begin inherited; CoInitializeEx(nil, COINIT_MULTITHREADED); try FAudioSessionNotification := TAudioSessionNotification.Create; FAudioComponent := TAudio.Create(FAudioSessionNotification, PrintText); try FAudioComponent.InitAudioComponents; while not Terminated do begin Sleep(1); end; finally FAudioComponent.Free; end; finally CoUninitialize; end; end; procedure TAudioThread.PrintText(const AText: string); begin OutputDebugString(PChar(AText)); end; function TAudioSessionNotification.OnSessionCreated(const NewSession: IAudioSessionControl): HRESULT; var SessionControl2: IAudioSessionControl2; pRetVal: PWideChar; begin if Supports(NewSession, IAudioSessionControl2, SessionControl2) then begin SessionControl2.GetSessionIdentifier(pRetVal); OutputDebugString(pRetVal); CoTaskMemFree(pRetVal); end; Result := S_OK; end; |
AW: TAudioVolume Komponente incl. System Mixer
Du verstehst es nicht oder?
Zitat:
sondern deine Anwendung testen mit mehreren Threads. Zum Beispiel mit zusätzlicher Form und anderen Threads in dem sinne so wie es bei TAudioVolume war. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Wie denn nun Herr Weiss?
Mit oder ohne extra Thread? Entscheiden Sie sich. Das OnSessionCreated kommt sowohl im externen Thread, als auch im normalen GUI-Mainthread. Einzig und allein der Aufruf von GetSessionEnumerator ist der entscheidende Punkt. Nicht mehr und nicht weniger sollte das Beispiel zeigen. |
AW: TAudioVolume Komponente incl. System Mixer
Hmm..
Wieso einen Thread machen, wenn die COM der App nur MULTITHREADED initiert werden muss?? Zitat:
![]() Gibt es diesen Parameter nicht nur in Delphi 6, sondern hoch bis 10 Tokyo! Somit sollte dieser auch unter D2010 verfügbar sein. Ich habe dass mit dem hier vorhandenen NotificationTest ausprobiert (ja, nach Anpassungen an und dann mit Delphi 6 !!) und habe alle Messages erhalten. Habe ich das CoInitFlags auskommentiert, klappte es nicht mehr.. Wenn Du nun in deiner Unit (AudioSessionNotification) unten das
Delphi-Quellcode:
einbaust (Plus ActiveX, ComObj in die Uses), wird dies Verwendet, ohne die DPR ändern zu müssen. Es wird automatisch gesetzt, wenn deine Unit verwendet wird.
initialization
CoInitFlags := COINIT_MULTITHREADED; (Mit D6 ausprobiert !) |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Das entscheidende ist der Zusätzliche Thread für die Events nichts anderes. Zitat:
Also nochmal. Deine erster Versuch war in einer Anwendung welche nur 1 Thread beinhaltet und das war\ist nicht gleichzusetzen mit TAudioVolume. OK? Gut dann weiter. Ich hatte dich aufgefordert so wie in TAudioVolume eine Anwendung zu erstellen bzw. zu testen mit den Begebenheiten wie sie in TAudioVolume vorlagen. Was hast du gemacht einen extra Thread für die Events erstellt der aber in TAudioVolume zu der zeit nicht existierte. OK? Gut dann weiter. Hättest du dich an der Basis gehalten dann wäre dir genau das Aufgefallen das TAudioVolume keinen extra Thread für SessionCreate erstellt hat. So! Auf mehr wollte ich gar nicht raus. Und ohne diesen besagten Thread würde deine Anwendung ins leere laufen so wie es bei TAudioVolume war. Zitat:
EDIT: Nein es geht nicht! Teste es selbst mit TAudioVolume. Das ist warum ich sage man muss mit der Basis arbeiten. Zitat:
Zitat:
gruss |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Und schriebst doch ein paar Beiträge vorher, das du mit meiner Memo-Testanwendung auf deinen Windows 7 ein OnSessionCreated erhalten hast. Ist dem doch nicht so? EDIT: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz