【实例简介】
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace mgen_windowNotify
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
NotifyIconAnimator trayAnimator;
private void button1_Click(object sender, EventArgs e)
{
var icons = new string[] { "project1.ico", "project2.ico" }.Select(s => new Icon(s)).ToArray();
trayAnimator.StartAnimation(icons, 500, -1);
}
private void button2_Click(object sender, EventArgs e)
{
trayAnimator.StopAnimation();
}
private async void button3_Click(object sender, EventArgs e)
{
await Task.Delay(3000);
NativeMethods.FlashWindowEx(this);
}
private void Form1_Load(object sender, EventArgs e)
{
notifyIcon1.Icon = new Icon("project1.ico");
trayAnimator = new NotifyIconAnimator(notifyIcon1);
}
//窗体中3秒后非活动闪烁窗口的按钮点击事件执行
//NativeMethods类型是Win32 API的封装类型,请参考源代码或者pinvoke.net
private async void button4_Click(object sender, EventArgs e)
{
//等3秒
await Task.Delay(3000);
//判断Form的Handle是否是当前活动窗口的Handle
if (this.Handle != NativeMethods.GetForegroundWindow())
//如果是的话,执行FlashWindowEx
NativeMethods.FlashWindowEx(this);
}
}
}