|
■No85243 (hoho さん) に返信
> 今アクティブなウィンドウはWeb(IE)になります。
下記の実験コードを書いて試してみましたが、相手がメモ帳であれ Internet Explorer であれ、
アクティブなウィンドウが切り替わることはありませんでした。
Public Class Form1
Private Declare Function ShowWindow Lib "user32" (hWnd As IntPtr, nCmdShow As Integer) As Boolean
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'No85240 の懸念点を確認するため、コントロール無しの状態で検証する
Controls.Clear()
'プライマリモニタの右上に配置する
StartPosition = FormStartPosition.Manual
Dim rect = Screen.PrimaryScreen.WorkingArea
SetBounds(rect.Right - 200, rect.Top, 200, 140)
TopMost = True
ShowInTaskbar = True
'定期的に最小化/復元するためのタイマー
Timer1.Interval = 100
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'毎分 5,15,25,35,45,55秒の時に最小化し
'毎分 0,10,20,30,40,50秒の時に通常表示に戻す
Select Case Now.Second Mod 10
Case 0
Const SW_SHOWNOACTIVATE As Integer = 4
ShowWindow(Handle, SW_SHOWNOACTIVATE)
Case 5
Const SW_SHOWMINNOACTIVE As Integer = 7
ShowWindow(Handle, SW_SHOWMINNOACTIVE)
End Select
End Sub
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
'このフォームはアクティブにならない
Const WS_EX_NOACTIVATE As Integer = &H8000000
Dim p As CreateParams = MyBase.CreateParams
If Not MyBase.DesignMode Then
p.ExStyle = p.ExStyle Or WS_EX_NOACTIVATE
End If
Return p
End Get
End Property
End Class
|