これは実行できます...他のvb.net実行ファイルがそれを行うのを見てからです。私はSystemTrayに、プログラムのNotifyIconを打つときNotifyIconをクリックすると、3つの状態(2ではなく)の間で反転します
...私は、私だけを切り替える必要があるだろうと思った:
1> Show my form 2> Hide my form
しかし、私は本当にすべて3との間で反転する必要があります。
1> Show my form 2> Hide my form 3> If my form is visible... but behind other programs... just bring it to the front.
私は#1と#2を動かすことしかできないようだ。私はどのように3すべてをやりますか? (私は「常に手前に」永久に私のフォームを作成する必要はありません。)
' Flip between #1 and #2 If (Me.Visible) Then Me.Hide() Else Me.Show() Me.WindowState = FormWindowState.Normal ' In case user minimized it earlier Me.Activate() ' Active and give focus (brings to front, also) End If
NotifyIconを打つことは非常にすることを引き起こすので、私は本当に...「私のフォームがアクティブになっている」かどうかを確認することはできませんマウスをにクリックしてください。すべてのフォームは「アクティブではありません」。
編集:「スタートバー」や「常に上のウィンドウ」などの他のウィンドウについては心配していません。 (彼らはいつも私の上にいるので)
私は本当に検出する必要があると思う: "私はショーは真実...そして私はアクティブである" (でもNotifiIconをクリックすると私のフォームは非アクティブになります...どうすれば真偽をチェックできますか?)
私は本当にそれがちょうどウィンドウのやり方で動作したいと思っています:タスクバーは単に「開いている」(閉じている場合)と「閉じる」(開いている場合)にしません。
がすでに開いているかどうかを検出するが、他のウィンドウの背後にあるので、それを閉じないでください...ではなく...ウィンドウが表示されますそれは常に1つのより多くのことを行います。 3つの異なるもののため
チェックします。 3つの異なることがあります。 (決して2にすぎない)
私は本当に "常に上の"ウィンドウが私の上にあることを心配していません。 (彼らはいつも私の上にいるので)それらを除いて...私はあなたの窓を私の上に置くことができます...私はまだ活動していますか?私のものは非アクティブではないでしょうか?どうすればそれを検出し、それをアクティブにすることができますか? (私のnotifyIconをクリックすると、私のフォームが作成されることに注意してください...* ALL *は非アクティブです。だから私はまだ私がアクティブなものとして使用されていた私を検出することができますか?)私は検出する必要があると思います:私のウィンドウはMe.Hideに設定されていません...しかし、それもアクティブではありません。 (しかし、忘れないでください...私のnotifyIconクリックは常に "非アクティブ"にします)。 – Margie
上記(前)のウィンドウをループすると、これが役立ちます。あなたはspy ++(spyxx.exe)を使って、私が何を話しているのか見ることができます。これは、他のウィンドウがあなたの上にあるかどうかを検出するのに役立ちます。 Form.Activateはおそらくあなたのウィンドウをアクティブにするために働くでしょう...そうでなければ、p/SetForegroundWindow APIを呼び出します。 –
うわー。私はspyxx.exeやAPI呼び出しの必要がないことを望んでいました....この非常に簡単なことを行うには:私のフォームがアクティブなフォームであるかどうかを検出します...私のNotifyIconをクリックします。 (しかし、クリック自体は、CLICKがフォームを非アクティブにするので、私がそれをやり遂げるのを妨げています。) – Margie