是的,有声卡和音响就播放一段wav,没有的话就是pc喇叭。

解决方案 »

  1.   

    错了!让PC喇叭发音是这个:
    MessageBeep(0xFFFFFFFF);
    你可以参考Win32 API Help。
    另外实际上还有一个Win32 API,注意不是Delphi自己的Beep(),而是
    BOOL Beep(
        DWORD dwFreq,           // 声音频率,Hz为单位
        DWORD dwDuration        // 持续时间,ms为单位
    );
    可以定制声音的。(低于20Hz就听不见啦,高于20000的那是超声波了,可以用这个函数做一个电子驱蚊器,效果很好,但是具体声音频率我记不得了)
      

  2.   

    用Windows.Beep()就可以了,函数的说明请看jarjarbink的帖子。
    要注意的是,如果是在98下面,这两个参数都没用,系统只发出一个默认的声音,如果你的PC喇叭不够响的话,这个声音很可能就会听不见。
    在2K和NT下参数才会起作用。
      

  3.   

    // 通过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);
    }