Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   MMDevApi und Konsolenanwendung (https://www.delphipraxis.net/164254-mmdevapi-und-konsolenanwendung.html)

AndyK 4. Nov 2011 11:34

MMDevApi und Konsolenanwendung
 
Hallo,

ich hoffe ich habe das richtige Forum erwischt und hoffe ihr könnt mir den entscheidenden Tipp geben.
In einer meiner Anwendungen (mit GUI) nutze ich "MMDevApi" zum einstellen der (Master-) Lautstärke unter Win7 (64bit). Programmiert unter Delphi 5. Die Anwendung läuft so problemlos.

Nun möchte ich diese Funktion in einer Konsolenanwendung nutzen. Der Compiler ist mit dem Code zufrieden, die Anwendung lässt sich auch starten. Sobald ich aber die Lautstärke steuern möchte hängt das Programm und gibt im Debugg-Modus folgendes aus: "Exception EAccessViolation in Modul..."

Gruß
Andy

Bummi 4. Nov 2011 12:07

AW: MMDevApi und Konsolenanwendung
 
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, ActiveX,
  MMDevApi in 'C:\Bummispicker\Snipplets\MMDevApi.pas';
var
  endpointVolume: IAudioEndpointVolume = nil;

procedure Init;
var
  deviceEnumerator: IMMDeviceEnumerator;
  defaultDevice: IMMDevice;
begin
  CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, deviceEnumerator);
  deviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, defaultDevice);
  defaultDevice.Activate(IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, nil, endpointVolume);
end;

procedure SetVolume(vol:Double);
var
  VolumeLevel: Single;
begin
  if endpointVolume = nil then Exit;
  VolumeLevel := vol;
  endpointVolume.SetMasterVolumeLevelScalar(VolumeLevel, nil);
end;

begin
  try
   Coinitialize(nil);
   readln;
   init;
   readln;
   SetVolume(0.5);
   readln;
   Couninitialize;
    { TODO -oUser -cConsole Main : Code hier einfügen }
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

AndyK 4. Nov 2011 17:38

AW: MMDevApi und Konsolenanwendung
 
Genial! Vielen Dank!

Gruß
Andy

Bummi 4. Nov 2011 17:52

AW: MMDevApi und Konsolenanwendung
 
Danke für den Dank:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 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