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
Seite 8 von 21   « Erste     678 91018     Letzte »    
EWeiss
Projekt entfernt..

Geändert von EWeiss (24. Jul 2019 um 05:45 Uhr)
 
TiGü

 
Delphi 10.4 Sydney
 
#71
  Alt 14. Mai 2018, 09: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
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#72
  Alt 14. Mai 2018, 09:40
CoInitializeEx(0, COINIT_MULTITHREADED); wird das nicht so aufgerufen?
Ein Pointer mit 0 ??

gruss
Oje, ich bin noch nicht ganz wach, NIL solls natürlich sein, bin von C++ NULL ausgegangen *grml*
  Mit Zitat antworten Zitat
EWeiss
 
#73
  Alt 14. Mai 2018, 09: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

 
Delphi 6 Professional
 
#74
  Alt 14. Mai 2018, 10: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
 
#75
  Alt 14. Mai 2018, 10: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 10:57 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#76
  Alt 14. Mai 2018, 20: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 17:46 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#77
  Alt 15. Mai 2018, 01: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 16:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#78
  Alt 15. Mai 2018, 03: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
  Mit Zitat antworten Zitat
EWeiss
 
#79
  Alt 15. Mai 2018, 03:28
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

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

 
Delphi 11 Alexandria
 
#80
  Alt 15. Mai 2018, 03:35
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.

Geändert von KodeZwerg (15. Mai 2018 um 03:39 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 8 von 21   « Erste     678 91018     Letzte »    


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 23:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz