Piszę większy program, którego sednem jest wykorzystywanie globalnych skrótów klawiszowych.
Problem w tym, że wtedy inne programy nie otrzymują zarejestrowanych klawiszów:
np. rejestruję [1] (w tym programie jest to sensowny skrót) to żaden inny program nie reaguje na naciśnięcie [1] (w notatniku się nie pojawia się "1" po naciśnięciu itp).
Piszę w VC#, temat celowo założyłem w C/C++ - funkcje są importowane z C++.
Czy da się jakoś nieblokująco obsługiwać globalne hotkeye?
Ew. przekazywać dalej oryginalne zdarzenia przy tej funkcji?
Fragmenty kodu:
private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
...
public CHotkeys::CHotkeys(int modifier, Keys key, Form form)
{
this.modifier = modifier;
this.key = (int)key;
this.hWnd = form.Handle;
id = this.GetHashCode();
}
public bool CHotkeys::Register()
{
return RegisterHotKey(hWnd, id, modifier, key);
}
...
x = new CHotkeys(mod, key, hWnd);
x.Register();
...
protected override void WndProc(ref Message m)
{
if (m.Msg == CHotkeys.WM_HOTKEY_MSG_ID) Managment.Parse(m);
base.WndProc(ref m);
}