programa (sisteme) ses efekti ekleme

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

programa (sisteme) ses efekti ekleme

Mesaj gönderen mege »

Resim

denetim masası, ses denetiminde windows a ve diğer uygulamalara ait sesleri yönetebildiğiniz bir pencere var, yukarıdaki gibi. buraya kendi uygulamamızın ses olaylarını eklemek ve kontrol etmek için, gerekli registry ayarları ve kullanımı :
(not: xp harici sistemlerde denenmedi!)

Kod: Tümünü seç

procedure AddSoundEvent(sKeyName,sComment,sDefaultFile:string);
var Reg:TRegistry;
    sAppName : string;

    procedure setRegistry(sPath,sKey,sValue:string);
     begin
       if not Reg.KeyExists(sPath) then
         begin
          Reg.OpenKey(sPath,TRUE);
          Reg.WriteString(sKey,sValue);
          Reg.CloseKey;
         end;
     end;
begin
  try
    sAppName := copy(ExtractFileName(Application.ExeName),1,length(ExtractFileName(Application.ExeName))-4);
    Reg:=TRegistry.Create;
    Reg.RootKey := HKEY_CURRENT_USER;
    // Program group & Sound
    setRegistry('AppEvents\Schemes\Apps\'+sAppName+'\'+sKeyName,'',sKeyName);
    // default key
    setRegistry('AppEvents\Schemes\Apps\'+sAppName+'\'+sKeyName+'\.default','',sDefaultFile);
    // current key
    setRegistry('AppEvents\Schemes\Apps\'+sAppName+'\'+sKeyName+'\.current','',sDefaultFile);
    // event kaydet
    setRegistry('AppEvents\EventLabels\'+sKeyName,'',sComment);
  finally
    Reg.CloseKey;
    Reg.Free;
  end;
end;
kullanımı içinse en kolay yok bir appevent veya ibevent nesnesi koyup, buradan ses eventleri tetikletmek.

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
begin
PlaySound('COMMIT', 0, SND_ASYNC or SND_ALIAS or SND_APPLICATION or SND_NODEFAULT);
end;
ses ayarları penceresini programdan açmak için:

Kod: Tümünü seç

procedure TForm1.Button3Click(Sender: TObject);
begin
 WinExec(PChar('control mmsys.cpl,,1'),SW_SHOWNORMAL);
end;
tamamıyla bir program örneği, bir buton ayarlar penceresini açmak için,diğeri ise event tetikleme için.
formun creatinde sisteme event adları kayıtlı değilse kaydediliyor.

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls,

  Registry, // registry okumak için
  MMSystem; // play sound apisi

type
  TForm1 = class(TForm)
    Button2: TButton;
    Button3: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure AddSoundEvent(sKeyName,sComment,sDefaultFile:string);

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure AddSoundEvent(sKeyName,sComment,sDefaultFile:string);
var Reg:TRegistry;
    sAppName : string;

    procedure setRegistry(sPath,sKey,sValue:string);
     begin
       if not Reg.KeyExists(sPath) then
         begin
          Reg.OpenKey(sPath,TRUE);
          Reg.WriteString(sKey,sValue);
          //Reg.WriteExpandString(sKey,sValue);
          Reg.CloseKey;
         end;
     end;
begin
  try
    sAppName := copy(ExtractFileName(Application.ExeName),1,length(ExtractFileName(Application.ExeName))-4);
    Reg:=TRegistry.Create;
    Reg.RootKey := HKEY_CURRENT_USER;
    // Program group & Sound
    setRegistry('AppEvents\Schemes\Apps\'+sAppName+'\'+sKeyName,'',sKeyName);
    // default key
    setRegistry('AppEvents\Schemes\Apps\'+sAppName+'\'+sKeyName+'\.default','',sDefaultFile);
    // current key
    setRegistry('AppEvents\Schemes\Apps\'+sAppName+'\'+sKeyName+'\.current','',sDefaultFile);
    // event kaydet
    setRegistry('AppEvents\EventLabels\'+sKeyName,'',sComment);
  finally
    Reg.CloseKey;
    Reg.Free;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 WinExec(PChar('control mmsys.cpl,,1'),SW_SHOWNORMAL);
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
  AddSoundEvent('COMMIT','Kayıt onaylandı','');
  AddSoundEvent('ROLLBACK','Kayıt onaylanmadı','');
  AddSoundEvent('ALARM1','Alarm var','');
    
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
PlaySound('COMMIT', 0, SND_ASYNC or SND_ALIAS or SND_APPLICATION or SND_NODEFAULT);
end;



end.
.-.-.-.-.-.-.-. ^_^
Cevapla