Entwickler-Ecke
Windows API - Wenn beep dann ?
Cyberbob_at_tot - Mi 22.02.12 19:50
Titel: Wenn beep dann ?
Hallo zusammen,
ich hoffe ihr könnt mir helfen ? Ich habe das Problem, das ich einen Beep durch den internen Speaker lauter bekommen muss. Der Beep wird durch ein Externes Programm erzeugt. Leider ist es mir nicht gelungen, das ganze einfach über die Soundkarte zu leiten. Daher folgende überlegung. Kann ich irgentwie bei einem Beep eine Wavdatei wiedergeben lassen ?
Sprich : Wenn beep dann Wav :)
Mir ist nur kein Befehl bekannt, der mir einen Rückgabewert liefert, sobald der interne Speaker angesprochen wird.
Habt ihr Ideen zu diesem Thema ?
MFG
Cyberbob
Tilo - Mi 22.02.12 22:56
Kurze Überlegung:
Der Beep ist doch durch einen Ascii Code (Nr. 7?) repräsentiert. Vielleicht ist es mit einem globalen "Tastatur"hook möglich?
Eine Andere Möglichkeit ist es einen Rechner zu nehmen der keinen echten Pieper mehr hat sondern den Beep ebenfalls über das Standard Audiogerät abspielt. Hier grefit dann auch die Lautstärkeregelung.
Kurz in Kommandozeile getestet:
echo ^G erzeugt bei mir Piepser über die Lautsprecher. Habe einen Laptop. Wichtig: das "^G" ist nicht als "^"+"G" eingegeben sondern über die Tastenkombination [STRG]+G
Delphi-Laie - Do 23.02.12 00:02
Cyberbob_at_tot hat folgendes geschrieben : |
Mir ist nur kein Befehl bekannt, der mir einen Rückgabewert liefert, sobald der interne Speaker angesprochen wird. |
Dazu müßte zunächst einmal festgestellt werden, daß der "interne Speaker" bzw. die Soundkarte angesprochen wird. Das sind schonmal verschiedene Dinge. Zum Überwachen, was andere Programme mit Windows oder der Hardware anstellen, fällt mir spontan "globaler Hook" (über DLL-Unjektion) ein, um den windowsinternen Botschaftsnachrichtenverkehr zu überwachen.
Cyberbob_at_tot - Do 23.02.12 11:58
Das Problem hierbei ist, das es keinen Rechner, wie am NB zb. das der Speaker direkt über die Soundkarte geschleift wird, daher suche ich nach anderen Lösungsansätzen.
echo ^G hat bei mir leider nicht geklappt.
Aber ich schau mal ob ich die ASCII Zeichen loggen kann, dann sollte er ja bei 07 für Bel einen effekt zeigen.
Moderiert von
Narses: Beiträge zusammengefasst
ich habe das ganze nun mal so versucht...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86:
| function TForm1.GetKey(Key: Word): string; begin case Key of VK_LBUTTON : Result := 'VK_LBUTTON'; VK_RBUTTON : Result := 'VK_RBUTTON'; VK_CANCEL : Result := 'VK_CANCEL'; VK_MBUTTON : Result := 'VK_MBUTTON'; VK_BACK : Result := 'VK_BACK'; VK_TAB : Result := 'VK_TAB'; VK_CLEAR : Result := 'VK_CLEAR'; VK_RETURN : Result := 'VK_RETURN'; VK_SHIFT : Result := 'VK_SHIFT'; VK_CONTROL : Result := 'VK_CONTROL'; VK_MENU : Result := 'VK_MENU'; VK_PAUSE : Result := 'VK_PAUSE'; VK_CAPITAL : Result := 'VK_CAPITAL'; VK_ESCAPE : Result := 'VK_ESCAPE'; VK_SPACE : Result := 'VK_SPACE'; VK_PRIOR : Result := 'VK_PRIOR'; VK_NEXT : Result := 'VK_NEXT'; VK_END : Result := 'VK_END'; VK_HOME : Result := 'VK_HOME'; VK_LEFT : Result := 'VK_LEFT'; VK_UP : Result := 'VK_UP'; VK_RIGHT : Result := 'VK_RIGHT'; VK_DOWN : Result := 'VK_DOWN'; VK_SELECT : Result := 'VK_SELECT'; VK_PRINT : Result := 'VK_PRINT'; VK_EXECUTE : Result := 'VK_EXECUTE'; VK_SNAPSHOT : Result := 'VK_SNAPSHOT'; VK_INSERT : Result := 'VK_INSERT'; VK_DELETE : Result := 'VK_DELETE'; VK_HELP : Result := 'VK_HELP'; VK_NUMPAD0 : Result := 'VK_NUMPAD0'; VK_NUMPAD1 : Result := 'VK_NUMPAD1'; VK_NUMPAD2 : Result := 'VK_NUMPAD2'; VK_NUMPAD3 : Result := 'VK_NUMPAD3'; VK_NUMPAD4 : Result := 'VK_NUMPAD4'; VK_NUMPAD5 : Result := 'VK_NUMPAD5'; VK_NUMPAD6 : Result := 'VK_NUMPAD6'; VK_NUMPAD7 : Result := 'VK_NUMPAD7'; VK_NUMPAD8 : Result := 'VK_NUMPAD8'; VK_NUMPAD9 : Result := 'VK_NUMPAD9'; VK_MULTIPLY : Result := 'VK_MULTIPLY'; VK_ADD : Result := 'VK_VKADD'; VK_SEPARATOR : Result := 'VK_SEPARATOR'; VK_SUBTRACT : Result := 'VK_SUBTRACT'; VK_DECIMAL : Result := 'VK_DECIMAL'; VK_DIVIDE : Result := 'VK_DIVIDE'; VK_F1 : Result := 'VK_F1'; VK_F2 : Result := 'VK_F2'; VK_F3 : Result := 'VK_F3'; VK_F4 : Result := 'VK_F4'; VK_F5 : Result := 'VK_F5'; VK_F6 : Result := 'VK_F6'; VK_F7 : Result := 'VK_F7'; VK_F8 : Result := 'VK_F8'; VK_F9 : Result := 'VK_F9'; VK_F10 : Result := 'VK_F10'; VK_F11 : Result := 'VK_F11'; VK_F12 : Result := 'VK_F12'; VK_F13 : Result := 'VK_F13'; VK_F14 : Result := 'VK_F14'; VK_F15 : Result := 'VK_F15'; VK_F16 : Result := 'VK_F16'; VK_F17 : Result := 'VK_F17'; VK_F18 : Result := 'VK_F18'; VK_F19 : Result := 'VK_F19'; VK_F20 : Result := 'VK_F20'; VK_F21 : Result := 'VK_F21'; VK_F22 : Result := 'VK_F22'; VK_F23 : Result := 'VK_F23'; VK_F24 : Result := 'VK_F24'; VK_NUMLOCK : Result := 'VK_NUMLOCK'; VK_SCROLL : Result := 'VK_SCROLL'; else Result := 'Zeichentaste: '+ Chr(Key); end; end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Edit1.Text := GetKey(Key); Edit2.Text := '0x' + IntToHex(Key,2); Edit3.Text := IntToStr(Key); end; |
Funktioniert beim Tastendruck soweit gut. Wenn ein Beep kommt reagiert er nicht, ist ja auch klar, da ich bei FormKeyUp gesagt habe. Wie kann ich den Beep nun abfangen ?
Moderiert von
Narses: Delphi-Tags hinzugefügt
Cyberbob_at_tot - Do 23.02.12 13:10
wow ist mir persönlich zu hoch muss ich zugeben.
Kennt sich jemand damit näher aus ?
Delphi-Laie - Do 23.02.12 14:40
Cyberbob_at_tot hat folgendes geschrieben : |
wow ist mir persönlich zu hoch muss ich zugeben.
Kennt sich jemand damit näher aus ? |
Assarbads Hook- und DLL-Anleitung helfen weiter.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!