Window を指定回点滅させる (FlashWindowEx)

user32.dll の FlashWindowEx を用いて、Window を 指定回数点滅させます。
1 回だけ点滅させる場合は、Windows を点滅させる (FlashWindow) を参照してください。
サンプルのダウンロード

このカテゴリーの先頭へ このページの先頭へ

■サンプルの説明

起動したところ
NumericUpDown に 点滅させたい回数を指定して、点滅 ボタンを押下すると、Form が 100 ミリ秒間隔で 指定回点滅します。

このカテゴリーの先頭へ このページの先頭へ

■コード

F0005_FlashWindowEx.vb
Imports System.Runtime.InteropServices
''' <summary>
''' FlashWindow(user32.dll)
''' </summary>
Partial Public Class F0005_FlashWindowEx

    ''' <summary>
    ''' FlashWindowEx(ウィンドウを指定回点滅させる)の宣言
    ''' </summary>
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
    Private Shared Function FlashWindowEx( _
                            ByRef pfwi As FLASHWINFO) _
                            As Integer
    End Function

    ''' <summary>
    ''' FLASHWINFO 構造体
    ''' </summary>
    Private Structure FLASHWINFO
        Public cbSize As Integer
        Public hWnd As IntPtr
        Public dwFlags As Integer
        Public uCount As Integer
        Public dwTimeout As Integer
    End Structure

    '点滅停止
    Private Const FLASH_STOP As Integer = &H0
    'ウィンドウのタイトル部分のみ点滅
    Private Const FLASH_CAPTION As Integer = &H1
    'タスクバーのみ点滅
    Private Const FLASH_TRAY As Integer = &H2
    '全部点滅
    Private Const FLASH_ALL As Integer = FLASH_CAPTION Or FLASH_TRAY
    'FLASH_STOPが呼び出されるまで点滅
    Private Const FLASH_TIMER As Integer = &H4
    'ウィンドウがアクティブになるまで点滅
    Private Const FLASH_TIMERNOFG As Integer = &HC

    ''' <summary>
    ''' ロード時のイベント
    ''' </summary>
    Private Sub F0005_FlashWindowEx_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.Text = "F0005_FlashWindowEx"
        Me.Button1.Text = "点滅"

        Me.NumericUpDown1.Minimum = 1
        Me.NumericUpDown1.Maximum = 50
        Me.NumericUpDown1.Value = 5
    End Sub

    ''' <summary>
    ''' 点滅ボタンクリック時のイベント
    ''' </summary>
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim pfwi As FLASHWINFO

        With pfwi
            .hWnd = Me.Handle
            .dwFlags = FLASH_ALL
            .uCount = Integer.Parse(Me.NumericUpDown1.Value.ToString()) '回数
            .dwTimeout = 100 '100ミリ秒間隔で点滅する
        End With

        '点滅
        FlashWindowEx(pfwi)
    End Sub

End Class
このカテゴリーの先頭へ このページの先頭へ

■参考資料

FlashWindowEx