我做了一个键盘钩子,当按下键盘上某个键的时候就播放WAVE,我用的是
playsound(PChar(SoundFname), 0, SND_SYNC OR  SND_NODEFAULT);
我发现当重复按键几十下的时候,声音却只播放了几下,于是我就加了一个线程
专门处理playsound(PChar(SoundFname), 0, SND_SYNC OR  SND_NODEFAULT);
而且我还试着用了SndPlaysound函数,但效果都一样!

解决方案 »

  1.   

    这很正常,Windows播放波形文件缺省都是单通道而且是资源独占的,线程在这里起不到作用。
      

  2.   

    原来我写一个程序时,在鼠标单击的事件下,beep都不能连续,系统处理不过来了
      

  3.   

    rouqing(*柔情似水&冷酷到底*)你说的情况有点像我遇到的情况...
      

  4.   

    要知道,调用Win32 API或者MCI API时,只有上一次调用结束即将资源释放时,本次波形文件才能正常开始播放。因此,假如你的波形文件时间足够短,并且你的击键间隔时间足够长,那么每个键对应一个声音是可能的,否则就是不可能的。你可以打开Windows控制面板有关声音方案的对话框,看看能不能连续按“播放”按钮。
      

  5.   

    playsound(PChar(SoundFname), 1, SND_SYNC OR  SND_NODEFAULT);