2
ゲーム用のホットキーヘルパーのようなアプリケーションを作成したいとします。たとえば、Warcraft 3では何らかの理由で数字キーを使用します。 "Numpad 1 key pressed"メッセージを "X"キーを押してOSに送ることは可能ですか?私はフックを使ってこれをやろうとしていましたが、わかりませんでした。私は明らかに希望します。C#のフックでkeydownをリダイレクトしていますか?
私はこのクラスをフックに使用しました:Global System Hooks in .NET。
globalKeyboardHook hook = new globalKeyboardHook(); // A Global Hook
private void btnHook_Click(object sender, EventArgs e)
{
hook.hook(); // Set the hook
hook.HookedKeys.Add(Keys.X); // Hook the X key
// i removed other hooks purify the code, six hooks total.
hook.KeyDown += new KeyEventHandler(hook_KeyDown); // add eventhandler
Program.hookActive = true; // inform the program that hook is active.
Guncelle(); // update form components (buttons enabling/disabling according to hook status etc.)
}
private void hook_KeyDown(object sender, KeyEventArgs e)
{
KeyEventArgs k = new KeyEventArgs(Keys.NoName);
switch (e.KeyCode)
{
case Keys.X:
k = new KeyEventArgs(Keys.NumPad1);
OnKeyDown(k);
break;
// i removed other cases to purify the code, six cases total.
}
}
ありがとうございます。今、2つの異なる問題が発生しました。メモ帳のようなアプリケーションでも動作しましたが、大きなゲームのようなWarcraftのようなものでは動作しませんでした。第2の問題は、「X」キーを1回押すたびにnumpad1キーが4回シミュレートされることです。 –