Delphi звук со спикера windows 10

Delphi звук со спикера windows 10

Помогите пож. заставить звучать встроенный динамик компа.
Beep не работает, MessageBeep($FFFFFFFF) тоже. 🙁


Anatoly Podgoretsky © ( 2005-02-16 13:58 ) [1]

Значит его нет или он неисправен.


Чапаев © ( 2005-02-16 13:59 ) [2]

А динамик-то физически подключен?


КаПиБаРа © ( 2005-02-16 14:31 ) [3]


palva © ( 2005-02-16 14:31 ) [4]

Надо убрать драйверы звуковой карты или включить колонки.

В настройках регулятора громкости проверь — не выключен ли динамик ПК.


Reindeer Moss Eater © ( 2005-02-16 15:01 ) [6]

if SoundCardPresent then MessageBeep(MB_ICONASTERISK) else MessageBeep($FFFFFFFF);


IceBeerg © ( 2005-02-16 15:25 ) [7]

Anatoly Podgoretsky © (16.02.05 13:58) [1]
Чапаев © (16.02.05 13:59) [2]
Есть однозначно и подключен, и исправен, звук то при загрузке ПК есть. бивис им пищит.
palva © (16.02.05 14:31) [4]
Колонков на том ПК нет, это рабочий ПК. Драйвер убирать тоже нельзя потому, что иногда все-таки на нем смотрят видео инсрукции со звуком.
Leshiy © (16.02.05 14:45) [5]
Нет, не отключен.
Reindeer Moss Eater © (16.02.05 15:01) [6]
Мне то нужно вывести звук через системный динамик даже если SoundCardPresent=True, но MessageBeep($FFFFFFFF) ну никак не работает.

КаПиБаРа © (16.02.05 14:31) [3]
Сейчас буду пробовать.


IceBeerg © ( 2005-02-16 15:27 ) [8]


IceBeerg © ( 2005-02-16 15:28 ) [9]

КаПиБаРа © (16.02.05 14:31) [3]
Не работает на 4х ПК.

Открой корпус и посмотри куда спикер подключен.


IceBeerg © ( 2005-02-16 16:12 ) [11]

Reindeer Moss Eater © (16.02.05 15:31) [10]
А куда его еще можно подключить кроме как к материнке?
При переключении раскладки клавиатуры в FAR»e он ведь пищит. Но как самому его сделать.


IceBeerg © ( 2005-02-16 16:16 ) [12]

И как ни странно не везде срабатывает
echo -код символа
на одном ПК bat»ник пищит на на другом нет 8(


_silver © ( 2005-02-16 16:41 ) [13]

var
Win32Ver : TOSVersionInfo;
Win32Platform : Integer;

procedure Sound(Frequency, Duration: Integer);
asm
push edx
push eax
mov eax, Win32Platform
cmp eax, VER_PLATFORM_WIN32_NT
jne @@9X
call Windows.Beep
ret
@@9X:
pop eax
pop edx
push ebx
push edx
mov bx, ax
mov ax, 34DDh
mov dx, 0012h
cmp dx, bx
jnc @@2
div bx
mov bx, ax
in al, 61h
test al, 3
jnz @@1
or al, 3
out 61h, al
mov al, 0B6h
out 43h, al
@@1:
mov al, bl
out 42h, al
mov al, bh
out 42h, al
call Windows.Sleep
in al, 61h
and al, 0FCh
out 61h, al
jmp @@3
@@2:
pop edx
@@3:
pop ebx
end;
.
Win32Ver.dwOSVersionInfoSize := SizeOf(Win32Ver);
GetVersionEx(Win32Ver);
Win32Platform := Win32Ver.dwPlatformId;
Sound(1000,1000);


IceBeerg © ( 2005-02-16 18:29 ) [14]

_silver © (16.02.05 16:41) [13]
Большое спасибо, код работает!

Читайте также:  Яндекс браузер для альт линукс

Воспроизведение звуковых сигналов

Здравствуйте, уважаемые читатели сегодня я познакомлю Вас с двумя замечательными функциями воспроизведения звуков.

Первая функция, с которой мы познакомимся будет функция Beep. Beep — это функция API Windows, которая синхронно воспроизводит звук определенной тональности и продолжительности.

Определение функции выглядит следующим образом:

function Beep(dwFreq, dwDuration: DWORD): BOOL;

Функция принимает два параметра. Первый — dwFreq частота звука в Герцах (параметр может принимать значения от 37 до 32767). Второй параметр — dwDuration продолжительность воспроизведения в миллисекундах . Если функция выполнена успешно, она возвращает значение true. Ещё важной особенностью работы beep является то, что до окончания воспроизведения звука функция не возвращается (программа останавливается на время сигнала.)

Вторая функция, с которой я Вас хочу познкамить — MessageBeep. Функция также подает звуковой сигнал, только мы уже не выбираем частоту и продолжительность. Воспроизводятся стандартные звуки Windows (установленные в панели управления, раздел звук).

function MessageBeep(uType: UINT): BOOL;

Функция принимает всего один параметр, который отвечает воспроизводимый звук. Для параметра uType определены константы. На сайте microsoft я нашел следующее:

  • MB_ICONASTERISK
  • MB_ICONEXCLAMATION
  • MB_ICONERROR
  • MB_ICONHAND
  • MB_ICONINFORMATION
  • MB_ICONQUESTION
  • MB_ICONSTOP
  • MB_ICONWARNING
  • MB_OK

Если MessageBeep отрабатывает успешно — она возвращает true; Также стоит отметить, что функция работает асинхронно(после начала воспроизведения функция предает управление в точку вызова).

Небольшой теоретический материал предлагаю закрепить на практике.

Создайте новый проект и разместите на нем PageControl с с двумя вкладками. На первой вкладке разместите 4 button, 2 edit, 2 UpDown. К каждому из edit привяжите UpDown. На второй вкладке разместите ComnoBox и Button. Должно получиться примерно следующее:

Код программы крайне простой, к тому же с комментариями .

Воспроизведение звуков на Delphi

В этой статье я постараюсь рассмотреть три процедуры для воспроизведения звука. Использование этих процедур вместо компонента TMediaPlayer существенно сэкономит ресурсы системы. С помощью этих процедур можно решать довольно широкий круг задач. Итак, начнем рассмотрение этих процедур с самой простой.

Эта процедура не имеет никаких параметров. Ее объявление выглядит довольно-таки просто:

Суть этой процедуры — воспроизводить стандартный звуковой сигнал, установленный в Windows, если имеется звуковая карта и настроен стандартный звук, если же нет, то звук поступит через динамик компьютера в виде короткого щелчка. Ее можно использовать, например, при вводе пользователем не тех данных, или при закрытии формы:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Beep;
end;

С первой процедурой мы разобрались. Теперь посмотрим вторую.

Эта функция является более серьезной, она определена как:

function MessageBeep(uType:word) : boolean;

Параметр uType указывает воспроизводимый звук, как идентификатор раздела [sounds] реестра, в котором записаны звуки, сопровождающие те, или иные события Windows. Параметр uType может принимать следующие значения:

  • MB_ICONASTERISK — проигрывает звук «Звездочка» (SystemAsterisk)
  • MB_ICONEXCLAMATION — проигрывает звук «Восклицание» (SystemExclamation)
  • MB_ICONHAND — проигрывает звук «Критическая ошибка» (SystemHand)
  • MB_ICONQUESTION — проигрывает звук «Вопрос» (SystemQuestion)
  • MB_OK — проигрывает звук «Стандартный звук» (SystemDefault)

Надо отметить, что эта функция воспроизводит звук асинхронно, т.е. во время воспроизведения звука Ваше приложение продолжает работать. После запроса звука функция MessageBeep передает управление вызвавшей ее функции.

Если невозможно воспроизвести указанный звук, то функция попытается воспроизвести стандартный системный звук, установленный по умолчанию, если и это невозможно, то будет воспроизведен стандартный сигнал через динамик.

Ну и наконец, осталась самая интересная и полезная функция воспроизведения звука, о ней мы сейчас и поговорим.

Эта функция может воспроизводить любые волновые звуки, а не только звуки событий Windows. Функция API Windows, параметры которой описаны в модуле mmsystem. Поэтому для использования этой функции в Ваших программах, необходимо включить в раздел uses модуль mmsystem. Функция PlaySound определена так:

function PlaySound(pszSound:PChar; hmod:HINST; fdwSound:Cardinal):boolean;

Параметр pszSound является нуль терминированной строкой (последний символ строки имеет нулевой код), он определяет воспроизводимый звук. Параметр hmod используется в случае, когда звук берется из ресурса, поскольку мы этого делать не будем, то можно этот параметр задавать равным 0 или nil.

Последний параметр fdwSound является множеством, которое определяет как будет воспроизводиться звук (режим воспроизведения). Приведу наиболее важные значения этого множества для воспроизведения произвольных волновых флагов.

  • SND_ASYNC — Звук воспроизводится асинхронно и функция возвращается сразу же после начала воспроизведения. Чтобы прекратить воспроизведение нужно вызвать функцию PlaySound с параметром pszSound, равным 0.
  • SND_LOOP — воспроизведение звука постоянно повторяется, одновременно надо установить флаг SND_ASYNC.
  • SND_NOSTOP — Если заданный звук не может быть воспроизведен из-за занятости ресурсов, то функция немедленно вернет false (и звук не будет воспроизведен). Если же данный флаг не указан, то функция попытается остановить воспроизведение другого звука, чтобы освободить ресурсы.
  • SND_PURGE — Останавливает воспроизведение любых звуков, вызванных в данной задаче.
  • SND_SYNC — Синхронное воспроизведение звука события. Функция PlaySound возвращается только после окончания воспроизведения.

Важно: флаги можно комбинировать операцией or.

Указанный параметром pszSound звук, должен подходить для установленного драйвера устройства воспроизведения волновых файлов, а также должен помещаться в доступную память.

Прервать воспроизведение звука можно выполнив оператор

PlaySound(0, 0, SND_PURGE);

или путем задания нового звука.

Например, чтобы многократно и асинхронно проиграть какой-нибудь звук, выбранный с помощью OpenDialog, можно написать такой код:

procedure TForm1.Button1Click(Sender: TObject);
var PCh: PChar;
begin
if OpenDialog1.Execute then
begin
StrPCopy(PCh,OpenDialog1.FileName);
PlaySound(Pch,0,SND_ASYNC or SND_LOOP);
end;
end;

Ну вот, надеюсь все ясно! В следующий раз будет что-нибудь посложнее и поинтереснее!

Delphi звук со спикера windows 10

Очень простой вопрос, но ни одного простого ответа не могу найти(поиском уже воспользовался)

Есть Форма с одной кнопкой.
Нужно чтоб при нажатии на эту кнопук издавался звук, например типа сирены, длительностью несколько секунд.

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
<
// заполни здесь
>

И все
Можно даже не объяснять что да как, главное чтоб работало!

Очень надеюсь на Вашу помощь!

От: vovan1980
Дата: 11.02.05 12:17
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Очень простой вопрос, но ни одного простого ответа не могу найти(поиском уже воспользовался)

А>Есть Форма с одной кнопкой.
А>Нужно чтоб при нажатии на эту кнопук издавался звук, например типа сирены, длительностью несколько секунд.

А>void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
А> <
А>// заполни здесь
А>>

А>И все
А>Можно даже не объяснять что да как, главное чтоб работало!

А>Очень надеюсь на Вашу помощь!

Не проверял, но дословно цитирую с http://www.bcbdev.ru/

Чтобы включить PC Speaker, воспользуйтесь следующим кодом:
SystemParametersInfo(SPI_SETBEEP, 1, NULL, SPIF_UPDATEINIFILE);
Чтобы выключить PC Speaker, воспользуйтесь следующим кодом:
SystemParametersInfo(SPI_SETBEEP, 0, NULL, SPIF_UPDATEINIFILE);

От: Аноним
Дата: 11.02.05 13:06
Оценка:

Здравствуйте, vovan1980, Вы писали:

V>Не проверял, но дословно цитирую с http://www.bcbdev.ru/

V>Чтобы включить PC Speaker, воспользуйтесь следующим кодом:
V> SystemParametersInfo(SPI_SETBEEP, 1, NULL, SPIF_UPDATEINIFILE);
V>Чтобы выключить PC Speaker, воспользуйтесь следующим кодом:
V> SystemParametersInfo(SPI_SETBEEP, 0, NULL, SPIF_UPDATEINIFILE);

Ну неужели никто и никогда не задавался таким вопросом?
Или это такая суперсложная проблема, заставит встроенный динамик издавать звуки?

От: vovan1980
Дата: 11.02.05 13:32
Оценка:

Первое, что приходит при поиске в ХЕЛПе это BEEP
Не пробовал?

Beep( генерируемая_частота, длительность_звучания_в_мс );

От: Аноним
Дата: 11.02.05 13:48
Оценка:

Здравствуйте, vovan1980, Вы писали:

V>Первое, что приходит при поиске в ХЕЛПе это BEEP
V>Не пробовал?

V>Beep( генерируемая_частота, длительность_звучания_в_мс );

Пробовал!
Звук есть!
Но через колонки (зв.карту).

От: vovan1980
Дата: 11.02.05 13:55
Оценка:

Аноним, Вы писали:

А>Пробовал!
А>Звук есть!
А>Но через колонки (зв.карту).

Проверьте наличие спикера и отключите колонки.
Возможно, что колонки заглушают звук спикера.

Если я не прав, то это просто мистика какая-то
Хотя вполне вероятно, что может быть и такое.
Короче тема закрыта, у меня все работает, и не через звуковуху, а через спикер.

От: Аноним
Дата: 11.02.05 14:29
Оценка:

Здравствуйте, vovan1980, Вы писали:

V>Аноним, Вы писали:

А>>Пробовал!
А>>Звук есть!
А>>Но через колонки (зв.карту).

V>Проверьте наличие спикера и отключите колонки.
V>Возможно, что колонки заглушают звук спикера.

V>Если я не прав, то это просто мистика какая-то
V>Хотя вполне вероятно, что может быть и такое.
V>Короче тема закрыта, у меня все работает, и не через звуковуху, а через спикер.

Вот такой код на Турбо Паскале 7.0 (ДОС)
uses Crt;

издает писк в динамике (слышно).

А вот такой(C++ Builder 5):

void __fastcall TForm1::Button1Click(TObject *Sender)
<
//SystemParametersInfo(SPI_SETBEEP, 1, NULL, SPIF_UPDATEINIFILE);
// Пробовал и так и этак
Beep(22000, 10200 );
//SystemParametersInfo(SPI_SETBEEP, 0, NULL, SPIF_UPDATEINIFILE);
>

Я что то делаю не так?
Может Вы приведете свой код?
Был бы благодарен!!

От: tiberius ICQ:1870700
Дата: 11.02.05 15:11
Оценка:
От: Dimonka
Дата: 11.02.05 15:39
Оценка:

Здравствуйте, tiberius, Вы писали:

T>Я свырвал динамик на своём компе, чтобы не пищал, зараза!
T>Теперь спокойно работаю

Однажды, когда не включится монитор, ты поставишь его на место

От: Аноним
Дата: 11.02.05 15:40
Оценка:

Здравствуйте, tiberius, Вы писали:

T>Я свырвал динамик на своём компе, чтобы не пищал, зараза!
T>Теперь спокойно работаю

И комп выкинь!
Чтоб не мешался!

От: Аноним
Дата: 14.02.05 04:05
Оценка:

Вот пример работы со спикером, правда на делфи.
Для двух систем, дело в том что в

Читайте также:  Как изменить вид проигрывателя windows media
Оцените статью