Autor Beitrag
Cyberbob_at_tot
Hält's aus hier
Beiträge: 10

Win2000, WinXP
Delph 5 bzw. 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Do 23.02.12 00:02 
user profile iconCyberbob_at_tot hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 10

Win2000, WinXP
Delph 5 bzw. 7
BeitragVerfasst: 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 user profile iconNarses: Beiträge zusammengefasst

ich habe das ganze nun mal so versucht...
ausblenden volle Höhe 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 user profile iconNarses: Delphi-Tags hinzugefügt

_________________
********************************
The only winning move is not to play!
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Do 23.02.12 12:24 
Vielleicht hilft dir das weiter:
delphi.about.com/od/...ll/a/delphi_hook.htm

_________________
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 Threadstarter
Hält's aus hier
Beiträge: 10

Win2000, WinXP
Delph 5 bzw. 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Do 23.02.12 14:40 
user profile iconCyberbob_at_tot hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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)