CodePanic! > C#.NET Tips > 今ここ
■ウィンドウのタイトルを点滅(FlashWindow)させる
ウィンドウのタイトルを点滅させたい場合は
Win32APIの FlashWindowEx APIをコールします。
サンプルコードの前半は同APIを利用するための準備で
ボタンを押すと点滅させています。
点滅後はタイトルが強調表示されたままになります。
何かの処理が完了したことを知らせる場合などに利用します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; // DllImportのために必要
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
[DllImport("user32.dll")]
static extern Int32 FlashWindowEx(ref FLASHWINFO pwfi);
[StructLayout(LayoutKind.Sequential)]
public struct FLASHWINFO
{
public UInt32 cbSize; // FLASHWINFO構造体のサイズ
public IntPtr hwnd; // 点滅対象のウィンドウ・ハンドル
public UInt32 dwFlags; // 以下の「FLASHW_XXX」のいずれか
public UInt32 uCount; // 点滅する回数
public UInt32 dwTimeout; // 点滅する間隔(ミリ秒単位)
}
public const UInt32 FLASHW_STOP = 0; // 点滅を止める
public const UInt32 FLASHW_CAPTION = 1; // タイトルバーを点滅させる
public const UInt32 FLASHW_TRAY = 2; // タスクバー・ボタンを点滅させる
public const UInt32 FLASHW_ALL = 3; // タスクバー・ボタンとタイトルバーを点滅させる
public const UInt32 FLASHW_TIMER = 4; // FLASHW_STOPが指定されるまでずっと点滅させる
public const UInt32 FLASHW_TIMERNOFG = 12; // ウィンドウが最前面に来るまでずっと点滅させる
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
FLASHWINFO fInfo = new FLASHWINFO();
fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
fInfo.hwnd = this.Handle;
fInfo.dwFlags = FLASHW_ALL;
fInfo.uCount = 5; // 点滅回数
fInfo.dwTimeout = 0;
FlashWindowEx(ref fInfo);
}
}
}
Copyright © 2008.07 - shougo suzaki
|