Недавно добавленные исходники

•  3D Designer  114

•  Sik Screen Capture  95

•  Patch Maker  83

•  Айболит (remote control)  99

•  ListBox Drag & Drop  79

•  Доска для игры Реверси  1 344

•  Графические эффекты  90

•  Рисование по маске  67

•  Перетаскивание изображений  70

•  Canvas Drawing  77

•  Рисование Луны  147

•  Поворот изображения  56

•  Рисование стержней  49

•  Paint on Shape  44

•  Генератор кроссвордов  57

•  Головоломка Paletto  71

•  Теорема Монжа об окружностях  108

•  Пазл Numbrix  53

•  Заборы и коммивояжеры  81

•  Игра HIP  60

•  Игра Go (Го)  48

•  Симулятор лифта  52

•  Программа укладки плитки  54

•  Генератор лабиринта  95

•  Проверка числового ввода  44

•  HEX View  98

•  Физический маятник  100

•  Задача коммивояжера  127

•  Автомобильная пробка  51

•  Квадратные сетки из слов  45

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



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



Под WinNT/2000/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 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; 

end.





Похожие по теме исходники

Драйвер клавиатуры под DOS

Delphi Magazine

Tetris DelphiX

Quake Delphi Sources

 

Delphi MMOG

Delphi Яндекс Директ

Delphi to HTML Converter

Проверка знаний Delphi

 

Is Delphi Dying Monitor

Autosave Delphi 7




Copyright © 2004-2021 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter