public delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param); [DllImport("user32.dll")] public static extern int EnumWindows(EnumWindowsProc ewp, int lParam);使用这两个API就可以了.
能写个最简单的例子给我吗,上面的那两个API是否先取到任务栏上的东西,再逐个判断是否IE?
没错,用那两个API,可以枚举浏览器,包括你打开的WINDOWS窗口
public delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param); [DllImport("user32.dll")] public static extern int EnumWindows(EnumWindowsProc ewp, int lParam); [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int GetClassName(IntPtr hWnd, StringBuilder ClassName, int nMaxCount); private void button1_Click(object sender, EventArgs e) { EnumWindowsProc _Proc = new EnumWindowsProc(GetWindows); EnumWindows(_Proc, 0); } IList<IntPtr> _WindowsList = new List<IntPtr>();
public bool GetWindows(IntPtr p_Handle, int p_Param) { StringBuilder _ClassName = new StringBuilder(255); GetClassName(p_Handle, _ClassName, 255); if (_ClassName.ToString() == "IEFrame") _WindowsList.Add(p_Handle); return true; }
public static extern int EnumWindows(EnumWindowsProc ewp, int lParam);使用这两个API就可以了.
public static extern int EnumWindows(EnumWindowsProc ewp, int lParam); [DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetClassName(IntPtr hWnd, StringBuilder ClassName, int nMaxCount); private void button1_Click(object sender, EventArgs e)
{
EnumWindowsProc _Proc = new EnumWindowsProc(GetWindows); EnumWindows(_Proc, 0); }
IList<IntPtr> _WindowsList = new List<IntPtr>();
public bool GetWindows(IntPtr p_Handle, int p_Param)
{
StringBuilder _ClassName = new StringBuilder(255);
GetClassName(p_Handle, _ClassName, 255);
if (_ClassName.ToString() == "IEFrame") _WindowsList.Add(p_Handle);
return true;
}