Delphi-PRAXiS
Seite 8 von 21   « Erste     678 91018     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   TAudioVolume Komponente incl. System Mixer (https://www.delphipraxis.net/196270-taudiovolume-komponente-incl-system-mixer.html)

TiGü 14. Mai 2018 09:37

AW: TAudioVolume Komponente incl. System Mixer
 
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.

KodeZwerg 14. Mai 2018 09:40

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Zitat von EWeiss (Beitrag 1402005)
Zitat:

Zitat von KodeZwerg (Beitrag 1401998)
Delphi-Quellcode:
CoInitializeEx(0, COINIT_MULTITHREADED);
wird das nicht so aufgerufen?

Ein Pointer mit 0 ?? :shock:

gruss

Oje, ich bin noch nicht ganz wach, NIL solls natürlich sein, bin von C++ NULL ausgegangen *grml*

EWeiss 14. Mai 2018 09:43

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Zitat von TiGü (Beitrag 1402009)
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

HolgerX 14. Mai 2018 10:19

AW: TAudioVolume Komponente incl. System Mixer
 
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 ;) )

EWeiss 14. Mai 2018 10:38

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Zitat von HolgerX (Beitrag 1402016)
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.
Delphi-Quellcode:
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

EWeiss 14. Mai 2018 20:31

AW: TAudioVolume Komponente incl. System Mixer
 
Hier mal ein Test Projekt für die Events (Threads) so 100% funktioniert es nicht.

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

gruss

EWeiss 15. Mai 2018 01:57

AW: TAudioVolume Komponente incl. System Mixer
 
Noch nicht ganz fertig aber zum Testen\Spielen sollte es reichen.
Wie gesagt immer noch die Event Probleme... :wall:
Nebenbei kein MemoryLeak auch nicht bei den Icons..

Wegen der CPU! Das muss ich alles noch optimieren.

gruss

KodeZwerg 15. Mai 2018 03:22

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Zitat von EWeiss (Beitrag 1402102)
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.
Zitat:

Zitat von EWeiss (Beitrag 1402102)
zum Spielen sollte es reichen.

Auf jeden Fall, funktioniert super bei mir (Windows 7 x64)
Zitat:

Zitat von EWeiss (Beitrag 1402102)
Wie gesagt immer noch die Event Probleme

Ist damit per timer/event zu prüfen ob ein Prozess dazugekommen/beendet wurde gemeint?
Zitat:

Zitat von EWeiss (Beitrag 1402102)
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.
Zitat:

Zitat von EWeiss (Beitrag 1402102)
Nebenbei kein MemoryLeak auch nicht bei den Icons

Dann bleib dem Treu, super Arbeit, mir gefällts :thumb::thumb::thumb:

EWeiss 15. Mai 2018 03:28

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Da mag ich nicht in Deiner Haut stecken, das sieht ja jetzt schon verdammt kompliziert aus.
Den Timer auf 60ms hochsetzen wirkt schon wunder.
Das Problem ist halt das es keine Windows gibt die Controls bestehen nur aus reinen Bitmaps.
Deshalb muss ich um diese zu aktualisieren UpdateWindow verwenden und das verbraucht einiges an CPU.
Na ja mal schaun.

Zitat:

Das andere Beispiel mit dem Event wo was krachen soll habe ich weder zum krachen noch sonst was bekommen, Edit1 blieb Edit1.
Wenn man das starte und anschließend eine Audio Anwendung starte sollte es krachen..
Tut es bei mir zumindest. ;)

Zitat:

Ist damit per timer/event zu prüfen ob ein Prozess dazugekommen/beendet wurde gemeint?
Richtig! Solange kann ich nicht darauf reagieren wenn die Events nicht funktionieren.

gruss

KodeZwerg 15. Mai 2018 03:35

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Zitat von EWeiss (Beitrag 1402105)
Richtig! Solange kann ich nicht darauf reagieren wenn die Events nicht funktionieren.

Könnte man das eventuell so Regeln?
Bei Programm Start wird ja Ermittelt was da so alles für Prozesse laufen die auch noch mit dem Mixer verbunden sind.
Da kann man doch bestimmt so etwas wie eine Liste anlegen für "hab diesen Prozess" oder noch besser, limitieren auf den Namen den dein Programm für die Prozesse anzeigt.
Nun ein Timer und die gleiche Prozedur durchlaufen lassen wie beim Start nur das dabei eine zweite Liste erstellt wird.
Die könnte man doch dann Gegenprüfen und bei Veränderung alles von vorne zeichnen wie bei Programm Start. Nur so ein Gedanke, ob der umzusetzen ist weiß ich nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.
Seite 8 von 21   « Erste     678 91018     Letzte »    

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