呵呵,我也想知道,在NT下不成问题,在9x下就有点儿伤脑筋了。我用想汇编但是不知道中断号是什么?有那位高手告诉一声?
解决方案 »
- 运用TTcpServer控件的问题
- 一个关于checkbox的问题??
- 哪里有介绍DELPHI动态连接库制作的资料!谢了
- inputbox()函数中的参数PROMPT是不是对中文支持不好,我写了一串中文上去,也不是很长,但最后几个字总显示不出来。
- WEBSNAP“登陆”无法自动跳转正确的目的页面???????????????????
- udpsocket通信问题!请高手指点!
- 怎样强制启动IE打开一个网址?即使IE不是默认的浏览器!
- 这种sql语句该怎样写. 在线
- 为什么放在DATAMODULE里的AdoQuery不能使用ShowMessage函数
- DbGrid中有针对某个字段的OnChange事件吗?
- 在WIN95中看不到ICON图标?
- 如何在MDI主窗体中访问由DLL创建的MDI子窗体?
Windows提供了标准API函数的阿BOOL Beep(
DWORD dwFreq, // 声音频率 nt下有效
DWORD dwDuration // 声音时间 nt下有效
);
Windows有标准API函数啊,需要写中断吗?
BOOL Beep(
DWORD dwFreq, // 声音频率,NT下有效
DWORD dwDuration // 声音时间,NT下有效
);
下面是我在C++Builder编的扬声器发声片段,
与DELPHI 是姐妹语言, 我想可能差不多,
供你参考.void Sound(int f) // 发音, 频率f
{
__int16 B=1193180/f;
asm in AL,61H; // 从端口B取数
asm or AL,3; // 两低位置1
asm out 61H,AL; // 返给端口B
asm mov AL,0B6H; // 通道2位图,2B,M3,B2
asm out 43H,AL; // 送指令寄存器
asm mov AX,B; // 计数: 1193180/F
asm out 42H,AL; // 送低有效位LSB
asm mov AL,AH;
asm out 42H,AL; // 送高有效位MSB
}
void SoundOff() // 关闭声音
{
asm in AL,61H; // 取端口B的字节
asm and AL,0FCH; // 强制置两位为0
asm out 61H,AL; // 返送端口B
}
现改成了驱动MIDI的方式发音,声音很动听;另外API的BOOL Beep(
DWORD dwFreq, // 声音频率,NT下有效
DWORD dwDuration // 声音时间,NT下有效
在Widows98下只发一种频率,不行,只对NT有效,
我试过。
现改成了驱动MIDI的方式发音,声音很动听;另外API的BOOL Beep(
DWORD dwFreq, // 声音频率,NT下有效
DWORD dwDuration // 声音时间,NT下有效
在Widows98下只发一种频率,不行,仅对NT才有效,
我试过。
Code:
procedure BeepEx(feq:word=1200;delay:word=1); procedure BeepOff;
begin
asm
in al,$61;
and al,$fc;
out $61,al;
end;
end;
const
scale=1193180;
var
temp:word;
begin
temp:=scale div feq;
asm
in al,61h;
or al,3;
out 61h,al;
mov al,$b6;
out 43h,al;
mov ax,temp;
out 42h,al;
mov al,ah;
out 42h,al;
end;
sleep(delay);
beepoff;
end;
playsound()
好像都可以!
频率太高或太低会听不清,大常数是硬件上的
规定的参数
太不象话, 2个得分者
都是在我的程序上稍改成
DELPHI而已.
一分没给!!若我不贴,他们能改啥!
不是在乎一钱不值的分数,
而是没尊重我的劳动和时间!!