Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сигнал System Speaker-ом

3.8K
22 июля 2003 года
slavko
9 / / 21.05.2003
Как бибикнуть системным динамиком?
13K
27 декабря 2007 года
mr_squall
1 / / 01.09.2005
Console.WriteLine("\a");
17K
28 декабря 2007 года
jack marked
20 / / 12.11.2006
Вот тебе компонентик для работы со спикером, взятый с сурсфоржа.
3.6K
04 января 2008 года
CrazyTimon
125 / / 13.02.2006
Попробкй Windows.beep()....и там параметры какие та длительность вроде, тональность и т.д.
347
05 января 2008 года
Maniak
319 / / 05.11.2005
не это все сакс... во самый реальный пример:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;
procedure Beep(Tone, Duration: Word);
procedure Sound(Freq : Word);
procedure NoSound;
procedure SetPort(address, Value:Word);
function GetPort(address:word):word;
var
  Form1: TForm1;

implementation

{$R *.dfm}
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 8);
  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;

procedure TForm1.Button1Click(Sender: TObject);
begin
beep(1000,1000);
end;

end.
5.3K
06 января 2008 года
Somebody
185 / / 24.12.2006
Это всё хорошо, но иногда хочется sound, чтобы как в Pascal'е, пока не nosound - пищит. Это M$ по-хорошему не сделала, хотя Beep по своей сути - это Sound/Sleep/NoSound. Если работать с драйвером - можно написать и свою функцию: [thread]33342[/thread].
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог