Мой.ЧудоФорум.Ру
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Добавить в закладки
Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск

Вход

Забыли пароль?

Последние темы
» Как снять "защиту от записи" с MicroSD?
Как управлять спикером под 9х из Дельфи EmptyВс Ноя 02 2014, 14:18 автор dimka

» Исходники игр на Паскале
Как управлять спикером под 9х из Дельфи EmptyЧт Окт 16 2014, 13:18 автор tqq

» Помогите разблокировать smartbuy micro CD.
Как управлять спикером под 9х из Дельфи EmptyСр Сен 24 2014, 14:40 автор Unearthly

» Исходники программ на Делфи для скачивания
Как управлять спикером под 9х из Дельфи EmptyСр Июл 16 2014, 08:15 автор aleator

» Как прошить телефон Nokia?
Как управлять спикером под 9х из Дельфи EmptyВт Май 06 2014, 12:42 автор vovan17

» Самопроизвольное отключение ноутбука
Как управлять спикером под 9х из Дельфи EmptyВт Июл 09 2013, 21:17 автор Aleksei

» МР3-плеер NEXX nf-810
Как управлять спикером под 9х из Дельфи EmptyПн Июл 01 2013, 09:11 автор Vitaliy_82

» Как снять защиту от записи на MicroSD
Как управлять спикером под 9х из Дельфи EmptyВт Мар 26 2013, 16:25 автор katja*****

» Как передавать большие файлы с одного компьютера на другой быстро?
Как управлять спикером под 9х из Дельфи EmptyПн Окт 01 2012, 20:07 автор irko

Счетчики
Rambler's Top100
Все файлы, находящиеся на сайте, были найдены в сети Интернет как свободно распространяемые и добавлены исключительно в ознакомительных целях.
Перепечатка материалов (в любом виде) с данного сайта без письменного разрешения администратора запрещена.
Copyright ©2010-2011 Mine.ChudoForum.Ru - Все права защищены

Как управлять спикером под 9х из Дельфи

Перейти вниз

Как управлять спикером под 9х из Дельфи Empty Как управлять спикером под 9х из Дельфи

Сообщение автор den Ср Апр 20 2011, 09:14

Под Windows XP вы можете использовать Beep(Tone, Duration) (задавать тон и продолжительность звучания).
А под 9.x/Me эта функция не реализована, но можно командовать железом через порты, и сделать универсальную:

unit BeepUnit;

procedure Beep(Tone, Duration: Word); // универсальная - версию виндовса проверяет

procedure Sound(Freq : Word);
procedure NoSound;

procedure SetPort(address, Value:Word);
function GetPort(address:word):word;

implementation

procedure SetPort(address, Value:Word);
var
bValue: byte;
begin
bValue := trunc(Value and 255);
asm
mov dx, address
mov al, bValue
out dx, al
end;
end;

function GetPort(address:word):word;
var
bValue: byte;
begin
asm
mov dx, address
in al, dx
mov bValue, al
end;
GetPort := bValue;
end;

procedure Sound(Freq : Word);
var
B : Byte;
begin
if Freq > 18 then begin
Freq := Word(1193181 div LongInt(Freq));
B := Byte(GetPort($61));
if (B and 3) = 0 then begin
SetPort($61, Word(B or 3));
SetPort($43, $B6);
end;
SetPort($42, Freq);
SetPort($42, Freq shr Cool;
end;
end;

procedure NoSound;
var
Value: Word;
begin
Value := GetPort($61) and $FC;
SetPort($61, Value);
end;

procedure Beep(Tone, Duration: Word);
begin
if SysUtils.Win32Platform = VER_PLATFORM_WIN32_NT
then Windows.Beep(Tone, Duration)
else begin
Sound(Tone);
Windows.Sleep(Duration);
NoSound;
end;
end;

end.
den
den
Модератор
Модератор

Сообщения : 36
Благодарности : 11

https://mine.123.st

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения