СообЧа > База Знаний > Программирование > Delphi

Вопрос

Как издать звук через PC Speaker?

Ответ

// Для WinNT вызов функции из ОС, для Win9x прямое обращение к портам

Procedure BeepEx(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 // выключить звук по окончанию Duration
        end;
    end;
end;

Из конференции Delphi



Copyright © 2000-2004 Сообщество Чайников
Контактная информация