![]() |
Ton über den Gehäuse internen Lautsprecher!
Hiho leute! Ich möchte einen Ton/Töne aus dem internen Lautsprecher (also nicht über die normalen PC-Boxen) "abspiele"
iCh habe es mit folgendem Code probiert:
Code:
bei mir findet er aber das "NoSound" am ende nicht!!! Diese habe ich probeweiße entfernt und gestartet! Ich musste den Rechner neustarten, weil mir das Piepen total auf die nerven ging! Und ich wusste nicht, wie ich das ausschalte!
{
Windows NT/2000/XP: Windows.Beep(dwFreq, dwDuration); dwFreq : frequency, in hertz, of the sound. dwDuration : duration, in milliseconds, of the sound. } // Windows 9x/NT-Platforms: 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(aFreq, aDelay: Integer); procedure DoSound(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 Delay(MSecs: Integer); var FirstTickCount: LongInt; begin FirstTickCount := GetTickCount; repeat Sleep(1); //or use Application.ProcessMessages instead of Sleep until ((GetTickCount - FirstTickCount) >= Longint(MSecs)); end; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin Windows.Beep(aFreq, aDelay); end else begin DoSound(aFreq); Delay(aDelay); end; end; procedure NoSound; var Value: Word; begin if not (Win32Platform = VER_PLATFORM_WIN32_NT) then begin Value := GetPort($61) and $FC; SetPort($61, Value); end; end; // Example: procedure TForm1.Button1Click(Sender: TObject); begin Sound(500, 1000); Sound(700, 1000); Sound(900, 1000); NoSound; end; Kann mir jemand helfen ?!? cu Trouble_Maker |
oh cool!
Hat jetzt komischerweiße doch geklappt *freu* ... Jetzt aber trotzdem noch ne Frage! Ich möchte den Sound abspielen, aber dann soll er erst aufhören, wenn ein Button geklickt wird! ICh kann doch jetzt nicht einfach das NoSound in die Procedure von dem Button schreiben !?! Danke Trouble_Maker |
Doch, kannst Du. Das geht aber nur unter Windows 95/98, unter NT beendet die Beep-Funktion den Sound von allein.
...:cat:... |
is das dann nur unter NT oder auch 2000 und XP ?!?
Danke Trouble_Maker |
2000 und XP sind auch NT Systeme ;-) Von daher auch bei denen.
...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz