Прошу прощения, это не так просто оказалось. Похоже, если она у меня и осталась, то где-то очень глубоко "закопана". Боюсь даже, что на 5'25"-дискетах...SLICK писал(а):оо, пожалусто выложи ее
Программа со звуком
Модератор: Duncon
[syntax=delphi]
procedure BeepInSpeaker(Freq: Word; Duration: Integer);
var
Ver: TOsVersionInfo;
begin
Ver.dwOSVersionInfoSize := SizeOf(Ver);
GetVersionEx(Ver);
if Ver.dwPlatformId = VER_PLATFORM_WIN32_NT then
Windows.Beep(Freq, Duration)
else
begin
asm
movzx ecx, Freq
mov eax, 1193180
sub edx, edx
div ecx
mov ecx, eax
mov al,0b6H
out 43H,al
mov al,cl
out 42h,al
mov al,ch
out 42h,al
in al,61H
or al,03H
out 61H,al
end;
sleep(Duration);
asm
in al,61H
and al,0fcH
out 61H,al
end;
end;
end;
[/syntax]
Делфи процедура, должна пищать на всех динамиках, если он физически не отключен...
procedure BeepInSpeaker(Freq: Word; Duration: Integer);
var
Ver: TOsVersionInfo;
begin
Ver.dwOSVersionInfoSize := SizeOf(Ver);
GetVersionEx(Ver);
if Ver.dwPlatformId = VER_PLATFORM_WIN32_NT then
Windows.Beep(Freq, Duration)
else
begin
asm
movzx ecx, Freq
mov eax, 1193180
sub edx, edx
div ecx
mov ecx, eax
mov al,0b6H
out 43H,al
mov al,cl
out 42h,al
mov al,ch
out 42h,al
in al,61H
or al,03H
out 61H,al
end;
sleep(Duration);
asm
in al,61H
and al,0fcH
out 61H,al
end;
end;
end;
[/syntax]
Делфи процедура, должна пищать на всех динамиках, если он физически не отключен...
Код: Выделить всё
procedura tire();
begin
BeepInSpeaker(2000,600)
end;
procedure tchk();
begin
BeepInSpeaker(2000,100)
end;
Luke! Use the Force! Use the Force... oh, Luke! Stop using the Force, use your head!