Entwickler-Ecke

Windows API - beep-Ton bei Alt+ Tastenkombination


Manfred - Fr 27.07.12 17:38
Titel: beep-Ton bei Alt+ Tastenkombination
Hallo Delphi-Gemeinde,

gesucht habe ich nach Sound, beep, oder was mir sonst noch eingefallen ist, eine Lösung hirfür habe ich nicht gefunden.

Durch die Betätigung einer Tastenkombination mit [Alt]+... wird ein Ton erzeugt, den ich gerne ausschalten würde.

Verwendet wird hierbei Delphi 6, aber ich gehe fast davon aus, dass es bedeutungslos ist.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  key := 0;
  shift := [];
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  key := #0;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  key := 0 ;
  shift := [] ;
end;


Dabei wurde auch KeyPreview auf TRUE gesetzt.

Tasten werden nun keine mehr interpretiert, aber der Ton kommt dennoch.

Was kann ich nur tun?


jaenicke - Fr 27.07.12 20:05

Ich schätze du musst dafür sorgen, dass du solche Systemtasten überhaupt behandeln kannst. Dafür musst du soweit ich mich erinnere auf WM_GETDLGCODE reagieren:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645425.aspx
Danach bekommst du dann die entsprechenden Windows Messages für die Tastendrücke und kannst darauf reagieren.


Delete - So 29.07.12 11:42

Oder so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
If irgendwas then
// disable beep
SystemParametersInfo(SPI_SETBEEP, Word(False), nil0);

// enable beep
SystemParametersInfo(SPI_SETBEEP, Word(true), nil0);


jaenicke - So 29.07.12 11:54

Systemweite Einstellungen setzen ist aber nicht die feine Art und Weise... :roll: