- - PR -
常にアクティブな状態のウィンドウni
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-12-12 14:31
お世話になります。
常にアクティブな状態のウィンドウを作成したいのですが、 フォームにタイマーを貼り付け Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Me.Activate() End Sub とし、デバッグモードで実行すると他のウィンドウをクリックしても作成した フォームが前面に出てきてアクティブになりますが、Visual Studioを終了し、 exeで実行した場合、意図した動作にならず、タスクバーに表示されたフォームの 色が変化するだけです。 デバッグモード時と同じ動作にする方法はありますでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2007-12-12 14:44
"色が変化する" とはタスク バーが 3 回点滅することを指しているでしょうか? タスク バー 3 回点滅は Activate が別のウィンドウと衝突した場合に起こります。 また最小化状態である場合にも起きます。 これは 「アクティブ == 前面に表示される」 ではないからです。 というより、常にアクティブな Form というのが正攻法では無理です。 アクティブである必要性もわかりません。 最前面ならまだ事情はわかりますが、アクティブにするかどうかはユーザーが勝手に決めることではないでしょうか? それともシステム モーダルなダイアログを作りたいということでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-12-12 15:20
じゃんぬねっとさん早速のご回答ありがとうございます。
現在マウスがクリックされた座標の色抽出プログラムを作成しております。 マウスのクリックは Me.Capture = True として、フォームのMouseDownイベントを利用して検出しています。 一度クリックしてしまうと検出ができなくなりますが、フォームをクリックすると 再度検出が可能になるためMe.Activateをタイマー内で呼ぶことで解決しました。 ただし、Visual Studioを終了してexeを直接起動すると クリックは一度しか検出されませんでした。 常にクリックを検出する方法を模索していますが、原因は Me.Activateがデバッグモードの場合と動作が違うことにあると考えたので 先ほどのように質問させていただきました。 因みにタイマー処理は拡大鏡の表示ロジックで使用しています。
点滅はしません。色が変化するだけです。というか1回点滅するということでしょうか。。。
Me.Activate()の代わりに SetForegroundWindowも使用してみましたが、 双方ともexe時にはフォームは前面には出ませんでした。 |
1