私はキーボード入力をグローバルにキャプチャするWindowsアプリケーションを作っています。ユーザが使用するときにCTRL + ALT + Gショートカットコンボは、アプリケーションがどのようなテキストフィールドにgeneraged GUIDを入力するSendKey.Send()はなぜしばらくしか動かないのですか?
SendKey.Send(Guid.NewGuid().ToString());
を使用してフォーカスされています。そして、それは入力を取っているアプリケーションにかかわらずこれを行うべきです。
これは、最初にCTRL + ALT + Gを入力したときに意図したとおりに機能しますが、その後の試行では何も起こらず、まれにしか成功しません。
私はすべてが非常に単純で一貫している必要があります。私はそれをテストしましたが、SendKey.Send()メソッドは毎回動作しません。
私の問題に関連するものはすべてGoogleで検索しましたが、これまでに何も機能していません。
誰でも洞察力はありますか?
編集1: 私はSendKey.SendWait()も同様に使いました。このキーボードショートカットのアプローチを使用して、新しいGUIDを生成するより応答性の高い方法が本当に必要です。
EDIT 2:私のプロジェクトで他の
void hook_KeyPressed(object sender, KeyPressedEventArgs e)
{
SendKeys.SendWait(Guid.NewGuid().ToString());
}
すべてがちょうどです:
/* Initialization Code Here */
// register the event that is fired after the key press.
hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hook_KeyPressed);
// register the control + alt + F12 combination as hot key.
hook.RegisterHotKey((uint)(HotkeyModifiers.Control | HotkeyModifiers.Alt), Keys.G);
イベントコードは非常に簡単である:以下
は、コードの重要な部分であります毛羽。
アップデート1:
私はこのテーマについて多くの質問を持っていますが、私は今日のために、この上で作業を継続するための時間の外にしています。私は、Jon Raynorのapp.configアプローチをある程度成功させるという提案を実装しました。私が新しい問題を特定したら、編集を投稿し、アプリケーションが意図したとおりに機能するようにすると、この質問を閉じることができます。
キーボード入力をグローバルにキャプチャすることはどういう意味ですか?もしあなたがそれをしているのであれば、あなたはGUIDも受け取ります。確かにRegisterHotKeyが必要です。 –
私はこのプロジェクトにRegisterHotKey pinvokeを使用しています。ホットキーをキャプチャするのは簡単ですが、問題はSendKey.Send()メソッドにあります。 – LamdaComplex
あなたのコードでSendKey.Sendを呼び出すと? –