Keyboard Hook - seltsames verhalten
-
hallo,
ich versuche direkt an eine applikation via SendMessage einen virtuellen tastendruck zu senden.
folgendermaßen implementiert:
[DllImport("User32.dll")] static extern bool SendMessage( IntPtr hwnd, UInt32 msg, UInt32 wParam, UInt32 lParam ); [DllImport("user32.dll", SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); uint WM_SYSKEYDOWN = 0x0104; uint WM_SYSKEYUP = 0x0105; public Form1() { InitializeComponent(); ParenthWnd = FindWindow(null, lpszParentClass); if (ParenthWnd.Equals(IntPtr.Zero)) { txtDebug.AppendText(lpszParentClass + " Not Running"); } else { txtDebug.AppendText(lpszParentClass + ": " + ParenthWnd.ToString()); } } ... private void runInterval() // wird aufgerufen wenn der timer tickt { SendMessage(this.ParenthWnd, WM_SYSKEYDOWN, Convert.ToUInt32( Keys.X ), 0); SendMessage(this.ParenthWnd, WM_SYSKEYUP, Convert.ToUInt32(Keys.X), 0); }
nun habe ich folgendes verhalten wenn ich spy++ verwende. der "tastendruck" kommt zwar an allerdings wird immer noch ein 2. WM_SYSKYDOWN bzw. WM_SYSKEYUP angezeigt ohne irgendwelchen parameter
<00029> 000701DC S WM_SYSKEYDOWN nVirtKey:'X' cRepeat:5 ScanCode:00 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 <00030> 000701DC R WM_SYSKEYDOWN <00031> 000701DC S WM_SYSKEYUP nVirtKey:'X' cRepeat:0 ScanCode:00 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 <00032> 000701DC R WM_SYSKEYUP
woran könnte das liegen und wie bekomme ich das weg?
gruß
ralf