キープレスのシミュレーションに役立つWindowsInputSimulatorライブラリを利用しようとしています。
ソフトウェアは、クライアントとサーバーで構成されます。クライアントでキーが入力されると、そのKeyEventArgsがサーバーに送信されます。次に、サーバーはそれを使用して次のことを行います。
public void SendKeyDown(Keys keyCode, Keys modifiers)
{
uint nonVK = MapVirtualKey((uint)keyCode, 2);
char mappedChar = Convert.ToChar(nonVK);
if (modifiers.Equals(Keys.None))
{
VirtualKeyCode vkc;
if (Enum.TryParse(VkKeyScan(mappedChar).ToString(), out vkc))
{
InputSimulator.SimulateKeyDown(vkc);
}
}
else
{
//Find out which modifier we're working with.
uint modVK = MapVirtualKey((uint)modifiers, 2);
char modifierChar = Convert.ToChar(modVK);
VirtualKeyCode vkc, modVkc;
if (Enum.TryParse(VkKeyScan(mappedChar).ToString(), out vkc)
&& Enum.TryParse(VkKeyScan(modifierChar).ToString(), out modVkc))
{
InputSimulator.SimulateModifiedKeyStroke(modVkc, vkc);
}
}
}
これは単一のキーで機能します。ただし、修飾キーも使用しようとしているため、問題が発生しています。たとえば、SHIFT + Kを押すと、「k2」が生成されます。これにより、VirtualKeyCodesへの変換が不安定であるか、他の何かが不安定であると思われるようになります。
また、これらのコマンドを送信するときに、KeyDown / KeyUpイベントのみをキャッチする必要がありますか?または、KeyPressイベントも監視する必要がありますか?矢印キーと非文字キーでも作業できるはずなので、KeyPressを無視するだけでよいと思います。
編集:また、複数の修飾子を使用していることをどのように知ることができますか?それらをどのようにつなぎ合わせる必要がありますか?
考え?ありがとう!