**************让PC喇叭发音是用MessageBeep(0);吗?怎么不响啊?*************** 是的,有声卡和音响就播放一段wav,没有的话就是pc喇叭。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 错了!让PC喇叭发音是这个:MessageBeep(0xFFFFFFFF); 你可以参考Win32 API Help。另外实际上还有一个Win32 API,注意不是Delphi自己的Beep(),而是BOOL Beep( DWORD dwFreq, // 声音频率,Hz为单位 DWORD dwDuration // 持续时间,ms为单位); 可以定制声音的。(低于20Hz就听不见啦,高于20000的那是超声波了,可以用这个函数做一个电子驱蚊器,效果很好,但是具体声音频率我记不得了) 用Windows.Beep()就可以了,函数的说明请看jarjarbink的帖子。要注意的是,如果是在98下面,这两个参数都没用,系统只发出一个默认的声音,如果你的PC喇叭不够响的话,这个声音很可能就会听不见。在2K和NT下参数才会起作用。 // 通过PC喇叭发出声音UINT Sound(LPVOID pParam){ int FreqTable[100]; int DelayTable[100]; for(int i=0;i<10;i+=100) { FreqTable[i]=50*i+500; DelayTable[i]=100; } int *nFreqTableLength = (int *)pParam; int Freq; for(i=0;i<*nFreqTableLength;i++) { Freq=FreqTable[i]; if(Freq<37||Freq>32767) { _outp(0x61,_inp(0x61)&0xFC);//NoSound() continue; } Freq=1193181/Freq; _outp(0x61,_inp(0x61)|3); _outp(0x43,0xB6); _outp(0x42,Freq&0x00ff); _outp(0x42,(Freq&0xff00)>>8); Sleep(DelayTable[i]); _outp(0x61,_inp(0x61)&0xFC);//NoSound() } _outp(0x61,_inp(0x61)&0xFC);//NoSound() return TRUE;}void NoSound(){ _outp(0x61,_inp(0x61)&0xFC);} 如何判断已输入的字符数, DBGIRD里面数据用右键删除可以吗吗` 在Delphi中执行存储过程超时的问题 绘制正弦曲线!请各位大哥帮忙! 如何将SQL SERVER 2000中的两个表连接在一起,且其中的记录是一对多? 请各位帮我看看下面的代码 如何在image中输出清楚的字? 谁能理解这段代码? delphi中关于空间排序的问题 在Delph3中怎样实现窗体最小化时的动画效果? 谁知道这是为什么 这是我编的俄罗斯方块程序,如果您满意我可以给您源代码
MessageBeep(0xFFFFFFFF);
你可以参考Win32 API Help。
另外实际上还有一个Win32 API,注意不是Delphi自己的Beep(),而是
BOOL Beep(
DWORD dwFreq, // 声音频率,Hz为单位
DWORD dwDuration // 持续时间,ms为单位
);
可以定制声音的。(低于20Hz就听不见啦,高于20000的那是超声波了,可以用这个函数做一个电子驱蚊器,效果很好,但是具体声音频率我记不得了)
要注意的是,如果是在98下面,这两个参数都没用,系统只发出一个默认的声音,如果你的PC喇叭不够响的话,这个声音很可能就会听不见。
在2K和NT下参数才会起作用。
UINT Sound(LPVOID pParam)
{
int FreqTable[100];
int DelayTable[100]; for(int i=0;i<10;i+=100)
{
FreqTable[i]=50*i+500;
DelayTable[i]=100;
} int *nFreqTableLength = (int *)pParam;
int Freq;
for(i=0;i<*nFreqTableLength;i++)
{
Freq=FreqTable[i];
if(Freq<37||Freq>32767)
{
_outp(0x61,_inp(0x61)&0xFC);//NoSound()
continue;
}
Freq=1193181/Freq;
_outp(0x61,_inp(0x61)|3);
_outp(0x43,0xB6);
_outp(0x42,Freq&0x00ff);
_outp(0x42,(Freq&0xff00)>>8);
Sleep(DelayTable[i]);
_outp(0x61,_inp(0x61)&0xFC);//NoSound()
}
_outp(0x61,_inp(0x61)&0xFC);//NoSound()
return TRUE;
}void NoSound()
{
_outp(0x61,_inp(0x61)&0xFC);
}