/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Beep beep
Fra : Harald


Dato : 04-07-02 15:24

Hej

Hvordan får man lyd (et beep) ud af PC´ens interne højttalere, dvs. ikke via
lydkortet?

Mvh
HK




 
 
Juno (04-07-2002)
Kommentar
Fra : Juno


Dato : 04-07-02 17:02

> Hvordan får man lyd (et beep) ud af PC´ens interne højttalere, dvs.
ikke via
> lydkortet?

Ifølge win32.hlp:
BOOL MessageBeep( UINT uType // sound type);
uType = 0xFFFFFFFF Standard beep using the computer speaker

Så:
MessageBeep( $FFFFFFFF);
skulle producere et Beep,
men der kommer kun et lille "klik.wav" ud af min PC...

--
*/*
jUno
spamfilter: Fjern din bh



Harald (04-07-2002)
Kommentar
Fra : Harald


Dato : 04-07-02 18:50

"Juno" <bauer.juno@dinbhget2net.dk> skrev i en meddelelse
news:3d24714d$0$41318$edfadb0f@dspool01.news.tele.dk...
> > Hvordan får man lyd (et beep) ud af PC´ens interne højttalere, dvs.
> ikke via
> > lydkortet?
>
> Ifølge win32.hlp:
> BOOL MessageBeep( UINT uType // sound type);
> uType = 0xFFFFFFFF Standard beep using the computer speaker
>
> Så:
> MessageBeep( $FFFFFFFF);
> skulle producere et Beep,
> men der kommer kun et lille "klik.wav" ud af min PC...

Og ifølge Delphi Help:
The MessageBeep function plays a waveform sound. The waveform sound for each
sound type is identified by an entry in the [sounds] section of the
registry.
Value Sound
0xFFFFFFFF Standard beep using the computer speaker
MB_ICONASTERISK SystemAsterisk
MB_ICONEXCLAMATION SystemExclamation
MB_ICONHAND SystemHand
MB_ICONQUESTION SystemQuestion
MB_OK SystemDefault

Så den kan desværre ikke bruges.

Mvh
HK




Juno (04-07-2002)
Kommentar
Fra : Juno


Dato : 04-07-02 19:23

"Harald" skrev i meddelelse
news:3d248ad1$0$16821$edfadb0f@dspool01.news.tele.dk...
> "Juno" skrev i meddelelse
> news:3d24714d$0$41318$edfadb0f@dspool01.news.tele.dk...
<snip>
> > Ifølge win32.hlp:
> > BOOL MessageBeep( UINT uType // sound type);
> > uType = 0xFFFFFFFF Standard beep using the computer speaker
<snip>
> Og ifølge Delphi Help:
<snip>
> Value Sound
> 0xFFFFFFFF Standard beep using the computer speaker

Jamen, så står der jo det samme

Hvilket system skal du bruge det på ?
API funktionen BEEP skulle kunne producere et, øhm bip, men kun på
NT-baserede os.
Dvs minus 95/98.

--
*/*
jUno
spamfilter: Fjern din bh



Harald (04-07-2002)
Kommentar
Fra : Harald


Dato : 04-07-02 19:38

"Juno" <bauer.juno@dinbhget2net.dk> skrev i en meddelelse
news:3d249248$0$41319$edfadb0f@dspool01.news.tele.dk...
> "Harald" skrev i meddelelse
> news:3d248ad1$0$16821$edfadb0f@dspool01.news.tele.dk...
> > "Juno" skrev i meddelelse
> > news:3d24714d$0$41318$edfadb0f@dspool01.news.tele.dk...
> <snip>
> > > Ifølge win32.hlp:
> > > BOOL MessageBeep( UINT uType // sound type);
> > > uType = 0xFFFFFFFF Standard beep using the computer speaker
> <snip>
> > Og ifølge Delphi Help:
> <snip>
> > Value Sound
> > 0xFFFFFFFF Standard beep using the computer speaker
>
> Jamen, så står der jo det samme

Hæ, jeg læste kun til MessageBeep i din tekst og så slog jeg lige den op
Delphi help og prøvede den af, og så glemte jeg faktisk at læse resten af
hvad du skrev

Men det jeg hæftede mig ved var "The MessageBeep function plays a waveform
sound", og jeg mener da ikke at den lille kabinet højttalere kan frembringe
noget den minder ret meget om waveform sound. Men hvorfor de så skriver
"Standard beep using the computer speaker" ved jeg ikke.

> Hvilket system skal du bruge det på ?
> API funktionen BEEP skulle kunne producere et, øhm bip, men kun på
> NT-baserede os.
> Dvs minus 95/98.

Jeg bruger Windows 2000. I delphi help skriver de "Beep calls the Windows
API MessageBeep." så det, jeg har testet den og det virker ikke, dvs. der
kommer et beep men der er igennem lydkortet.

Mvh
HK





Juno (04-07-2002)
Kommentar
Fra : Juno


Dato : 04-07-02 20:33

"Harald" og "Juno" skrev en masse indlæg...
>> Hvilket system skal du bruge det på ?
>> API funktionen BEEP skulle kunne producere et, øhm bip, men kun på
>> NT-baserede os.
>> Dvs minus 95/98.
>
> Jeg bruger Windows 2000. I delphi help skriver de "Beep calls the
> Windows API MessageBeep." så det, jeg har testet den og det virker
> ikke, dvs. der kommer et beep men der er igennem lydkortet.

Mjah, forvirringen er total
Delphi har en Beep, men nu skrev jeg jo WinApi'ens Beep...

Følgende virker på 2000, men ikke på 98/95: (ER testet)

procedure TForm1.Button1Click(Sender: TObject);
begin
Windows.Beep( 800, 2000);
end;

800=frekvens
2000=millisekunder

--
*/*
jUno



N/A (04-07-2002)
Kommentar
Fra : N/A


Dato : 04-07-02 21:16



N/A (04-07-2002)
Kommentar
Fra : N/A


Dato : 04-07-02 21:16



Juno (04-07-2002)
Kommentar
Fra : Juno


Dato : 04-07-02 21:16

> og så i din Beep-sløjfe lave noget á la
> windows.beep(800,500);
Du kan også bruge
Windows.Beep(Random(800)+200, Random( 500)+500);

Bare sår'n for afvekslingens skyld, hvis den skal stå og bippe i længere
tid.

--
*/*
jUno



Harald (04-07-2002)
Kommentar
Fra : Harald


Dato : 04-07-02 22:03

"Juno" <bauer.juno@dinbhget2net.dk> skrev i en meddelelse
news:3d24ac12$0$54730$edfadb0f@dspool01.news.tele.dk...
> >> "Harald" og "Juno" skrev en masse indlæg...
>
> >> procedure TForm1.Button1Click(Sender: TObject);
> >> begin
> >> Windows.Beep( 800, 2000);
> >> end;
> >
> > Nåå ja, tak for det :)
> >
> > "The function is synchronous; it does not return control to its
> > caller until the sound finishes." så er jeg nok nød til at lave
> > beepet i en tråd for sig selv ellers hænger hele programmet jo
> > (næsten selvom jeg bruger ProcessMessages) hvis det skal stå og sige
> > beeeep beeeep beeeep beep indtil en bruger trykker på en knap. Eller
> > hvad?
>
> Du kan vel lave en global Boolean á la
> var GoBeep: Boolean;
>
> og så i din Beep-sløjfe lave noget á la
> windows.beep(800,500);
> application.processmessages;
> if GoBeep = False then Exit;
>
> og så i din onKeyDn eller lignende
> GoBeep := False;
>
> og når du begynder at bippe lige sætte GoBeep til True.

Jow, men så vil programmet jo være rimeligt sløvt hvis det holder en ½
sekunds pause for hver omgang, og når der så samtidig skal foretages en
masse andet i programmet såsom at sende/modtage data på den serielle port og
sende/modtage data fra klienter via TServerSocket. Men det må komme an på en
prøve, hvis det ikke funker så laver jeg en beep tråd.

Mvh
HK





Yngve Damgaard (05-07-2002)
Kommentar
Fra : Yngve Damgaard


Dato : 05-07-02 08:10


"Harald" <swobu@kroning.dk> skrev i en meddelelse
news:3d245a9c$0$16809$edfadb0f@dspool01.news.tele.dk...
> Hej
>
> Hvordan får man lyd (et beep) ud af PC´ens interne højttalere, dvs. ikke
via
> lydkortet?
>
> Mvh
> HK
>
>
>

Hej HK
Nedenstående kode er ok i win98 prøv det
Yngve


procedure Sound(Hz: Word);
var
faktor: Word;
begin
faktor := round(1192840 / Hz);
asm
push ax
push bx
in al,61h
or al,3
out 61h,al
mov al,0B6h
out 43h,al
mov bx,faktor
mov al,bl
out 42h,al
mov al,bh
out 42h,al
pop bx
pop ax
end;
end;

procedure NoSound;
asm
push ax
in al,61h
and al,0Dh
out 61h,al
pop ax
ret
end;



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste