不是声卡,是利用PC喇叭发出一定频率的声音!21-23 KHz! 在 Win9x 下: Procedure FnBeep(nFreq,nDura: Word); Label Skip; var nStart: DWord; begin Asm push bx // play in al, $61 mov bl, al and al, 3 jne Skip mov al, bl or al, 3 out $61, al mov al, $b6 out $43, al Skip: MOV AX, nFreq OUT $42, AL MOV AL, AH OUT $42, AL POP BX end; nStart := GetTickCount; // Delay repeat Application.ProcessMessages; Until GetTickCount > nStart + nDura; asm IN AL, $61 // Shut up AND AL, $FC OUT $61, AL end; end;在 Win2000 下: Windows.Beep(nFreq, nDura);
在 Win9x 下:
Procedure FnBeep(nFreq,nDura: Word);
Label
Skip;
var
nStart: DWord;
begin
Asm
push bx // play
in al, $61
mov bl, al
and al, 3
jne Skip
mov al, bl
or al, 3
out $61, al
mov al, $b6
out $43, al
Skip: MOV AX, nFreq
OUT $42, AL
MOV AL, AH
OUT $42, AL
POP BX
end;
nStart := GetTickCount; // Delay
repeat
Application.ProcessMessages;
Until GetTickCount > nStart + nDura;
asm
IN AL, $61 // Shut up
AND AL, $FC
OUT $61, AL
end;
end;在 Win2000 下:
Windows.Beep(nFreq, nDura);
2。有两种方法一是直接在调用函数中写入数值,最大值只能写入几万;另一种是通过edit传送,最大值可以写好几亿(这是发出的声音还能听见,不是超声波),为什么会有这么大的差别?
2。有两种方法一是直接在调用函数中写入数值,最大值只能写入几万;另一种是通过edit传送,最大值可以写好几亿(这是发出的声音还能听见,不是超声波),为什么会有这么大的差别?
2。有两种方法一是直接在调用函数中写入数值,最大值只能写入几万;另一种是通过edit传送,最大值可以写好几亿(这是发出的声音还能听见,不是超声波),为什么会有这么大的差别?