AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TAudioVolume Komponente incl. System Mixer
Thema durchsuchen
Ansicht
Themen-Optionen

TAudioVolume Komponente incl. System Mixer

Ein Thema von EWeiss · begonnen am 6. Mai 2018 · letzter Beitrag vom 24. Jul 2019
Antwort Antwort
TiGü

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

AW: TAudioVolume Komponente incl. System Mixer

  Alt 14. Mai 2018, 08:37
Also wenn überhaupt, zeige ich dir das anhand der Ableitung von TWinControl.
Bei den ewig langen und komplizierten NonVCL-Quelltexten kriege ich Pickel auf den Augen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: TAudioVolume Komponente incl. System Mixer

  Alt 14. Mai 2018, 08:43
Also wenn überhaupt, zeige ich dir das anhand der Ableitung von TWinControl.
Bei den ewig langen und komplizierten NonVCL-Quelltexten kriege ich Pickel auf den Augen.
Kein Problem kann mir das dann anpassen
Wenn du das obige Beispiel nimmst ist das kein Problem.

gruss
  Mit Zitat antworten Zitat
HolgerX
Online

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#3

AW: TAudioVolume Komponente incl. System Mixer

  Alt 14. Mai 2018, 09:19
Hmm..

Um eine Applikation direkt mit COINIT_MULTITHREADED zu starten, genügt eigendlich folgendes:

In der Projekt DPR :

uses
ActiveX,
ComObj,
...

und dann vor dem Application.Initialize; :

CoInitFlags := COINIT_MULTITHREADED;
Application.Initialize;

Damit sollte die (VCL) Applikation direkt als MULTITHREADED initialisiert werden.

(So geht es zumindestens unter D6 )
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: TAudioVolume Komponente incl. System Mixer

  Alt 14. Mai 2018, 09:38
Hmm..

Um eine Applikation direkt mit COINIT_MULTITHREADED zu starten, genügt eigendlich folgendes:

In der Projekt DPR :

uses
ActiveX,
ComObj,
...

und dann vor dem Application.Initialize; :

CoInitFlags := COINIT_MULTITHREADED;
Application.Initialize;

Damit sollte die (VCL) Applikation direkt als MULTITHREADED initialisiert werden.

(So geht es zumindestens unter D6 )
Mag unter VCL so gehen aber nicht mit NonVcl.
Aber gut zu wissen wenn es geht

EDIT:
Wenn ich das mache in meiner DPR..
Delphi-Quellcode:
var
  HR: HRESULT;
begin
  HR := CoInitializeEx(nil, COINIT_MULTITHREADED);
  if HR <> S_OK then
    raise Exception.Create('Error : Unable to initialize Component Object Model');
  WinMain(hInstance, 0, nil, 0);
Dann schlägt CoInitializeEx fehl.
Ich muss quasi den von Delphi erstellten APARTMENTTHREADED erst mal beende.
Das ist aber ein Unart wenn Delphi das von sich aus macht.

Aber auch dann funktionieren die Events nicht.
function TAudioSessionNotification.OnSessionCreated(const NewSession: IAudioSessionControl): HResult;

Und dein Beispiel funktioniert nicht mit D2010.
Delphi-Quellcode:
program AudioVolumeAdj_Eng;

uses
  Forms,
  ActiveX,
  ComObj,
  VolumeTest_Eng in 'VolumeTest_Eng.pas{Form1},
  AudioVolume in '..\AudioVolume.pas';

{$R *.res}

begin
  CoInitFlags := COINIT_MULTITHREADED;
  Application.Initialize;
// Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

gruss

Geändert von EWeiss (14. Mai 2018 um 09:57 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: TAudioVolume Komponente incl. System Mixer

  Alt 14. Mai 2018, 19:31
Hier mal ein Test Projekt für die Events (Threads) so 100% funktioniert es nicht.

Da keine Rückantwort kam.. gelöscht.

gruss

Geändert von EWeiss (15. Mai 2018 um 16:46 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: TAudioVolume Komponente incl. System Mixer

  Alt 15. Mai 2018, 00:57
Noch nicht ganz fertig aber zum Testen\Spielen sollte es reichen.
Wie gesagt immer noch die Event Probleme...
Nebenbei kein MemoryLeak auch nicht bei den Icons..

Wegen der CPU! Das muss ich alles noch optimieren.

gruss

Geändert von EWeiss (16. Mai 2018 um 15:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TAudioVolume Komponente incl. System Mixer

  Alt 15. Mai 2018, 02:22
Noch nicht ganz fertig aber zum Testen
Das andere Beispiel mit dem Event wo was krachen soll habe ich weder zum krachen noch sonst was bekommen, Edit1 blieb Edit1.
zum Spielen sollte es reichen.
Auf jeden Fall, funktioniert super bei mir (Windows 7 x64)
Wie gesagt immer noch die Event Probleme
Ist damit per timer/event zu prüfen ob ein Prozess dazugekommen/beendet wurde gemeint?
Wegen der CPU! Das muss ich alles noch optimieren.
Da mag ich nicht in Deiner Haut stecken, das sieht ja jetzt schon verdammt kompliziert aus.
Nebenbei kein MemoryLeak auch nicht bei den Icons
Dann bleib dem Treu, super Arbeit, mir gefällts
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
HolgerX
Online

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#8

AW: TAudioVolume Komponente incl. System Mixer

  Alt 17. Mai 2018, 12:30
Hmm..

Wieso einen Thread machen, wenn die COM der App nur MULTITHREADED initiert werden muss??

Um eine Applikation direkt mit COINIT_MULTITHREADED zu starten, genügt eigendlich folgendes:

In der Projekt DPR :

uses
ActiveX,
ComObj,
...

und dann vor dem Application.Initialize; :

CoInitFlags := COINIT_MULTITHREADED;
Application.Initialize;

Damit sollte die (VCL) Applikation direkt als MULTITHREADED initialisiert werden.
Lt.

http://docwiki.embarcadero.com/Libra...bj.CoInitFlags

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:
initialization
  CoInitFlags := COINIT_MULTITHREADED;
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.

(Mit D6 ausprobiert !)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 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-2025 by Thomas Breitkreuz