我想让计算机的扬声器响,二不是声卡响,怎么实现?(100分)

  • 主题发起人 主题发起人 sdcx
  • 开始时间 开始时间
S

sdcx

Unregistered / Unconfirmed
GUEST, unregistred user!
我用beep()函数,如果机器上声卡没有驱动,那扬声器会响,如果声卡驱动了,扬声器就<br>不响了.怎么样才能实现每次都让pc自己带的扬声器响?
 
你管它是什么响?只要响了不就可以了?
 
用汇编可以做到
 
给你一个函数<br>function _GetPort(address:word):word;//获取端口<br>var bValue: byte;<br>begin<br> asm<br>  mov dx, address<br>  in al, dx<br>  mov bValue, al<br> end;<br> Result := bValue;<br>end;<br><br>procedure _SetPort(address, Value:Word);//设置端口<br>var bValue: byte;<br>begin<br>&nbsp;bValue := Trunc(Value and 255);<br>&nbsp;asm<br>&nbsp; mov dx, address<br>&nbsp; mov al, bValue<br> out dx, al<br>&nbsp;end;<br>end;<br><br>procedure StartBeep(Freq : Word);//开始发音,Freq为频率<br>var<br> B: Byte;<br>begin<br> if Freq &gt; 18 then<br>  begin<br>   Freq := Word(1193181 div LongInt(Freq));<br>   B := Byte(_GetPort($61));<br>&nbsp;  if (B and 3) = 0 then<br>&nbsp;  begin<br>   _SetPort($61, Word(B or 3));<br>   _SetPort($43, $B6);<br>  end;<br>  _SetPort($42, Freq);<br>  _SetPort($42, Freq shr 8);<br> end;<br>end;<br><br>procedure StopBeep;//停止发音<br>var<br> Value: Word;<br>begin<br> value := _GetPort($61) and $FC;<br> _SetPort($61, Value);<br>end;<br><br>
 
昏倒,不然我来问干什么?
 
我测试一下www的函数,谢谢大家
 
后退
顶部