Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#75

AW: TAudioVolume Komponente incl. System Mixer

  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