dephi7中如何控制电脑发出蜂鸣声(机器自带的扬声器)

解决方案 »

  1.   

    windows.beep(dwFreq:integer;dwDuration:integer);dwFreq: 声音频率;
    dwDuration;持续时间.-------------------------------------------------messagebeep()-------------------------------------------------procedure pcSound(dFreq:Double;wLong:Word);//第一个为频率,第二个为持续时间
    var
      wFreq:word;
    begin
      wFreq := round(1192576/dFreq);
      asm                                 //读写60,61端口发声
        push ax
        push bx
        push cx
        push dx
        push di
        mov  al,0B6H
        out  43H,al
        mov  dx,12H
        mov  ax,wFreq
        out  42H,al
        mov  al,ah
        out  42H,al
        in   al,61H
        mov  ah,al
        or   al,3
        out  61H,al
    @wait1:
        mov  cx,wLong
    @delay:
        dec  cx
        jnz  @delay
        dec  bx
        jnz  @wait1
        mov  al,0B6H
        out  43H,al
        mov  al,ah
        out  61H,al
        pop  di
        pop  dx
        pop  cx
        pop  bx
        pop  ax
      end;
    end;
    {---------------------------
      261.7   c
      293.7   d 
      329.6   e
      349.2   f
      392.0   g
      440.0   a
      493.9   b
    ---------------------------}
      

  2.   

    windows.Beep(  261 ,1000);
    windows.Beep(  293 ,1000);
    windows.Beep(  329 ,1000);
    windows.Beep(  349 ,1000);
    windows.Beep(  392 ,1000);
    windows.Beep(  440 ,1000);
    windows.Beep(  493 ,1000);