0

C# winform には、「サイレント モード」を備えたアプリがあります。そのモードでは、最小化され、タスク バーから非表示になります。別名:

this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;

Altしかし、特定の時点で、たとえば+ Ctrl+ Shift+のように、キーボードの特定のキーの組み合わせを押すことで、プログラムのメイン ウィンドウが再び表示されるようにしたいのS ですが、その方法がわかりません。

これを回避する方法はまったく異なりました。ユーザーがウィンドウを元に戻したい場合、特定のディレクトリに「SilentMode.OFF」というファイルを作成する必要がありました。そうすることで、ウィンドウが元に戻ります。アプリのタイマーでこれを行うことができました。タイマーは、そのファイルがそのディレクトリに作成されているかどうかを確認し、作成されている場合はウィンドウを表示します。それは物事を行うプロの方法ではありません。

Q: 最小化されたウィンドウと通信するにはどうすればよいですか? どうすればそれを送信して、応答させたいキーに応答させることができますか?

Leaveイベントなどのいくつかのイベントを試しましたが、実際には機能しませんでした。

どんなヒントでも大いに役立ちます、ありがとう。

4

2 に答える 2

1

私の知る限り、winapapi にはホットキー関数用の .NET ラッパーはありません。ただし、pinvoke 経由で RegisterHotkey を使用できます。詳細な説明は次のとおりです。 http://www.codeproject.com/Articles/5914/Simple-steps-to-enable-Hotkey-and-ShortcutInput-us

于 2012-08-25T14:03:35.127 に答える
-1

次のようなメソッドを作成できます。

[DllImport("user32.dll")]
static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey); 

private void WaitForHotKeys()
{
       if(GetAsyncKeyState(Keys.Alt) != 0 && GetAsyncKeyState(Keys.Control) != 0 && 
          GetAsyncKeyState(Keys.Shift) != 0 && GetAsyncKeyState(Keys.S) != 0)
       {
          this.WindowState = FormWindowState.Normal;
          this.ShowInTaskbar = true;
       }       
}

そして、loadメソッドを追加します。

Thread myThread = new Thread(new ThreadStart(WaitForHotKeys));
myThread.Start();
于 2012-08-25T14:26:24.163 に答える