КАК ИЗДАТЬ ПИСК У СИСТЕМНОГО ДИНАМИКА
От: xwoll  
Дата: 01.04.04 10:17
Оценка:
Здраствуй Алл...
Мож там настройки нужны какие.. у меня на win2000 prof все прикрасно пищит
используя функцию Beep(100,1);
а вот у юзеров на 98 не пищит
ка же так -- мож где громкость регулируется или что надо бы чтоб запищать?
Re: КАК ИЗДАТЬ ПИСК У СИСТЕМНОГО ДИНАМИКА
От: algol Россия about:blank
Дата: 01.04.04 10:29
Оценка:
Здравствуйте, xwoll, Вы писали:

X>Мож там настройки нужны какие.. у меня на win2000 prof все прикрасно пищит

X>используя функцию Beep(100,1);
X>а вот у юзеров на 98 не пищит
X>ка же так -- мож где громкость регулируется или что надо бы чтоб запищать?

Windows 95/98/Me: The Beep function ignores the dwFreq and dwDuration parameters. On computers with a sound card, the function plays the default sound event. On computers without a sound card, the function plays the standard system beep.

Re[2]: КАК ИЗДАТЬ ПИСК У СИСТЕМНОГО ДИНАМИКА
От: xwoll  
Дата: 01.04.04 10:50
Оценка:
Здравствуйте, algol, Вы писали:

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


X>>Мож там настройки нужны какие.. у меня на win2000 prof все прикрасно пищит

X>>используя функцию Beep(100,1);
X>>а вот у юзеров на 98 не пищит
X>>ка же так -- мож где громкость регулируется или что надо бы чтоб запищать?

A>

A>Windows 95/98/Me: The Beep function ignores the dwFreq and dwDuration parameters. On computers with a sound card, the function plays the default sound event. On computers without a sound card, the function plays the standard system beep.


и ЧТО ЖЕ ДЕЛАТЬ ?
MessageBeep — тоже не канала...
Re[3]: КАК ИЗДАТЬ ПИСК У СИСТЕМНОГО ДИНАМИКА
От: e-smirnov  
Дата: 01.04.04 10:52
Оценка:
Здравствуйте, xwoll, Вы писали:

X>и ЧТО ЖЕ ДЕЛАТЬ ?

X>MessageBeep — тоже не канала...

MessageBeep(-1);
Re[4]: КАК ИЗДАТЬ ПИСК У СИСТЕМНОГО ДИНАМИКА
От: matov  
Дата: 01.04.04 11:44
Оценка:
Здравствуйте, xwoll, Вы писали:
Попробуй printf("\a");
Эта штука работает под любую операционку и под любой платформой.
Re[5]: КАК ИЗДАТЬ ПИСК У СИСТЕМНОГО ДИНАМИКА
От: vgrigor  
Дата: 01.04.04 14:51
Оценка:
Здравствуйте, matov, Вы писали:


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

M>Попробуй printf("\a");
M>Эта штука работает под любую операционку и под любой платформой.

Да, тут апи существенно,
надо понимать в зависимости от слушателся.
Винтовку добудешь в бою!
Re: КАК ИЗДАТЬ ПИСК У СИСТЕМНОГО ДИНАМИКА
От: Master Gekus Россия  
Дата: 03.04.04 04:46
Оценка:
Здравствуйте, xwoll, Вы писали:

X>Здраствуй Алл...

X>Мож там настройки нужны какие.. у меня на win2000 prof все прикрасно пищит
X>используя функцию Beep(100,1);
Ну, не уверен я, что звук длительностью 1 миллисекунда с частотой 100 Гц можно услышать... Это ж где-то 20% полупериода синусоиды. А speaker даже не синусоиду генерит.

X>а вот у юзеров на 98 не пищит

X>ка же так -- мож где громкость регулируется или что надо бы чтоб запищать?
Ладно, теперь по теме. Для Windows 9x звук можно издавать, напрямую записывая в порты speaker-а. Я делаю так:

// В переменной nFreq - частота звука (440 - нота "ля" первой октавы
if( nFreq > 18 ) {    // Не пауза...
    nFreq = 0x1234DC / nFreq;   // Константа взята из какой-то доки, сечас уже не помню
    _asm {
        mov        ecx,nFreq

        //set timer #3
        mov        al,182
        out        43h,al
        mov        al,cl
        out        42h,al
        mov        al,ch
        out        42h,al

        //enable speaker
        in        al,61h
        or        al,3
        out        61h,al
    }
}

Sleep( nDuration ); // Время ожидания (в миллисекундах)

// Выключить звук..
_asm {
    in        al,61h
    and        al,0fch
    out        61h,al
}

Просто определяю версию операционки — если платформа NT, то использую стандартный Beep, если нет — вышеприведенный код.

С уважением,
Заливочкин Евгений
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.