主要使用的是user32.dll(核心规则是通过窗口的title来查找的)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace *******.utility
{
/// <summary>
/// 窗口的工具类
/// </summary>
public class WindowHelper
{
[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_RESTORE = 9;
/// <summary>
/// 使指定的窗口显示在最前面(包括最小化的情况)
/// </summary>
/// <param name="windowTitle">窗口的标题</param>
public static void BringWindowToFront(string windowTitle)
{
IntPtr hWnd = FindWindow(null, windowTitle);
if (hWnd != IntPtr.Zero)
{
ShowWindow(hWnd, SW_RESTORE);
SetForegroundWindow(hWnd);
}
// else 就是没找到此窗口,可以修改函数的返回值来进行判断窗口是否存在
}
// 判断是否有网络
[DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
public extern static bool InternetGetConnectedState(out int conState, int reader);
public static bool IsNetworkConnected
{
get
{
return InternetGetConnectedState(out int n, 0);
}
}
}
}