Autor |
Beitrag |
Cyberbob_at_tot
Hält's aus hier
Beiträge: 10
Win2000, WinXP
Delph 5 bzw. 7
|
Verfasst: Mi 22.02.12 19:50
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
_________________ ********************************
The only winning move is not to play!
|
|
Tilo
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: 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
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: 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
Hält's aus hier
Beiträge: 10
Win2000, WinXP
Delph 5 bzw. 7
|
Verfasst: 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...
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
_________________ ********************************
The only winning move is not to play!
|
|
Xion
Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 23.02.12 12:24
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Cyberbob_at_tot
Hält's aus hier
Beiträge: 10
Win2000, WinXP
Delph 5 bzw. 7
|
Verfasst: Do 23.02.12 13:10
wow ist mir persönlich zu hoch muss ich zugeben.
Kennt sich jemand damit näher aus ?
_________________ ********************************
The only winning move is not to play!
|
|
Xion
Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 23.02.12 13:28
Also ich nicht, aber in der Library gibts zumindest was dazu:
www.delphi-library.d...1&highlight=hook
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Delphi-Laie
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: 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.
|
|
Nersgatt
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Do 23.02.12 15:57
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|