以下のコードを使用して、Ctrl + Alt + Qホットキーをキャプチャしています。これは完全に機能します。 しかし、私はこれをバックグラウンドアプリケーションで使いたいです。私のアプリケーションはフォームを持っていないので、私はクラスファイルの中で同じコードを使いたいと思っています。C#を使用してスレッドからホットキーを取得する。
クラスファイルにイベントハンドラ[keypressed]を書き込むことができないので、私は混乱しています。 代わりに、私はスレッドでkeypressを使いたいです。
助けてください。
public DialogResult Result;
KeyboardHook hook = new KeyboardHook();
public Form1()
{
InitializeComponent();
// 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((ModifierKeys)2 | (ModifierKeys)1, Keys.Q);
}
void hook_KeyPressed(object sender, KeyPressedEventArgs e)
{
Result = MessageBox.Show("Are you sure, you want to log off?","Log off"
,MessageBoxButtons.YesNo
,MessageBoxIcon.Warning);
if (Result == DialogResult.Yes)
{
}
else
{
}
}
いいえ、私はフォームを使ってそれを行います。しかし、フォームを見えないようにする方法はありますか?それはタスクバーにさえいないでしょう。 可能ですか?ありがとう。 – Anuya
はい、可能です。私のアプリが見えなくても、私はホットキーをキャプチャして前面に持っていきます。 –
私は以下を使用していますが、依然として私はフォームを取得しています。 プライベートvoid InitializeComponent() { this.SuspendLayout(); // // Form1 // this.Visible = false; this.ShowInTaskbar = false; } – Anuya