Блог → Программирование

Beep в Windows 7

В Windows XP функция Beep пищала системным динамиком, но в «Семёрке» её поведение изменили, теперь звук перенаправляется на звуковую карту, что совсем не так весело.

Как выяснилось, пищать спикером всё ещё можно, но делать это придется напрямую (по ссылке пример на C#). Вот, если кому надо, то же самое, но на Delphi:

function Inp32(PortAdr: word): byte; stdcall; external 'inpout32.dll';
function Out32(PortAdr: word; Data: byte): byte; stdcall; external 'inpout32.dll';

procedure MyBeep(tone, duration: integer);
var
  n,m: integer;
begin
  if tone <> 0 then
  begin
    n := 1193180 div tone;
    Out32($43,182);
    Out32($42,n and $FF);
    Out32($42,(n shr 8) and $FF);
    m := Inp32($61);
    Out32($61,m or $03);
  end;
  Sleep(duration);
  m := Inp32($61);
  Out32($61,m and $FC);
end;

Теперь пара слов об inpout32.dll. Скачать её можно отсюда, это модифицированная версия, которая, несмотря на название, работает и в x32 и в x64 редакциях Windows. Для прямого доступа к портам устанавливается драйвер, что накладывает ограничения:

64-битная версия драйвера подписана, так что проблем с разрешением на установку не будет.

10 января 2013 21:06 

Комментарии


Роман
Роман — 10 лет назад
спас меня, премного благодарен

DuMOHsmol
DuMOHsmol — 10 лет назад anothersite.ru
Роман, приятно слышать :)

https://w4i9o.mssg.me/
https://w4i9o.mssg.me/ — 1 неделю назад
Pretty nice post. I just stumbled upon your weblog and wanteed to say that I've really enjoyed
browsing your blog posts. In any case I'll be subscribing
to your feed and I hope youu write again soon! https://w4i9o.mssg.me/

https://prefereplus.com/employer/tonebet-casino/
https://prefereplus.com/employer/tonebet-casino/ — 1 неделю назад
This iss very interesting, You're a very skilled blogger.
I've joined your feed and loook forward to seeking more
of your excellent post. Also, I've shared your web site in my social networks! https://prefereplus.com/employ...tonebet-casino/

https://Leicestercityplayers.Wordpress.com/
https://Leicestercityplayers.Wordpress.com/ — 1 неделю назад
We absolutely love your blog and find thhe majority of your post's to be precisely what I'm
looking for. Wouuld you offer guest writers to write content for yourself?
I wouldn't mind writing a post or elaborating onn a
number oof the subjects you write cokncerning here.

Again, awesome site! https://Leicestercityplayers.Wordpress.com/

https://www.03244.Com.ua/list/530659
https://www.03244.Com.ua/list/530659 — 5 дней назад
Hurrah! At last I goot a blog from where I know how to really get useful facts concerning my study and knowledge. https://www.03244.Com.ua/list/530659

Ваше имя Сайт или блог (опционально) Аватар (опционально, e-mail для Gravatar или ссылка на картинку с ipic.su) Текст комментария

Справка по написанию комментария

  • Для вставки аватара зарегиструйтесь на сервисе Gravatar и укажите ваш e-mail. Вы также можете загрузить аватар на http://ipic.su и скопировать текст с поля «прямая ссылка». Другие сервисы или хостинги изображений не поддерживаются. Большие изображения будут уменьшены автоматически. Пример:

    http://ipic.su/img/img7/fs/user4.1358962896.png
  • Имя, адрес и аватар сохраняются, второй раз вводить не придётся
  • Кликните на аватар, чтобы вставить имя пользователя
  • Слово обрамлённое «звёздочками» становится *жирным*
  • Адрес ссылки автоматически становится ссылкой — http://anothersite.ru
  • Ссылки на текст с http://pastebin.com автоматически разворачиваются в тексте комментария
  • Цитату следует начинать со знака «больше»:
    > пример многострочной
    > цитаты