让机箱的喇叭发音。(0分)

  • 主题发起人 主题发起人 newapp
  • 开始时间 开始时间
注意加上windows.
不然缺省是Delphi自己定义的发声函数
不能设置发声频率
加上windows.之后使用的是Windows API中的,
可以较灵活设置,
象什么驱蚊软件就是使用了它
 
[red]两位高人可否说的详细一点[/red][:D]
 
beep函数
很简单,你察察帮助
 
我查不到WINDOWS.BEEP的帮助。[:)],大侠,帮个忙啦!先谢了
 
Beep( dwFreq, dwDuration)其中,dwfreq为声音频率,单位为赫兹,dwDuration为声音长度,单位为毫秒。
 
to all大侠
5555555555[:(],windows.Beep(900,10000);我听怎么不见声音呀
Beep只用这个还听得到一点点小小的声音
多少赫兹的声音人才听的到??
 
这个函数好像只支持NT,人的听觉在20~20 000HZ,发声在65~1 100HZ

 
to 大侠人在边缘
有没有在98和WINME里能用喇叭发音的函数???
 
除非自己写!贴一个英国人写的!

一个由英国人John Atkins用汇编写的操纵底层资源的发音函数:
  function _GetPort(address:word):word;//获取端口
   var
    bValue: byte;
   begin

    asm
     mov dx, address
     in al, dx
     mov bValue, al
   end;

   Result := bValue;
  end;

  procedure _SetPort(address, Value:Word);//设置端口
   var
    bValue: byte;
   begin

    bValue := Trunc(Value and 255);
    asm
     mov dx, address
     mov al, bValue
     out dx, al
    end;

   end;

  procedure StartBeep(Freq : Word);//开始发音,Freq为频率
   var
    B: Byte;
   begin

    if Freq >18 then

     begin

      Freq := Word(1193181 div LongInt(Freq));
      B := Byte(_GetPort($61));
    if (B and 3) = 0 then

     begin

      _SetPort($61, Word(B or 3));
      _SetPort($43, $B6);
     end;

     _SetPort($42, Freq);
     _SetPort($42, Freq shr 8);
   end;

   end;

  procedure StopBeep;//停止发音
    var
     Value: Word;
    begin

     value := _GetPort($61) and $FC;
     _SetPort($61, Value);
  end;

  有了上述发音函数后,就可以轻松地写出在win9x环境下让主板喇叭奏乐报时的程序了.
 
这个函数太好了,谢谢。
您真是个大好人咧!
 
接受答案了.
 
后退
顶部