请问C# Winform有没有办法取得电脑下面任务栏的IE窗口的句柄

fyyfantasy 2009-09-08 06:06:07
我想搞自动录入,但是程序取不了IE窗口的句柄,录入不了消息到网页的输入框啊
不能用WebBrowser,因为有点特别的原因,只能是把网页打开了,再用我的软件录入
...全文
186 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mailbao 2009-09-10
  • 打赏
  • 举报
回复
路過~學習~~
fyyfantasy 2009-09-10
  • 打赏
  • 举报
回复
有点头绪了,谢谢,我再研究下先
fyyfantasy 2009-09-10
  • 打赏
  • 举报
回复
我试了,但取出了这些tooltips_class32,TXGuiFoundation Shell_trayWnd 这些,就是没有IEFrame这东西
fyyfantasy 2009-09-10
  • 打赏
  • 举报
回复
多谢大侠相救
mjp1234airen4385 2009-09-09
  • 打赏
  • 举报
回复
楼上几位都是强人。
我正想说呢。
MOmo400 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zgke 的回复:]
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;
        }
[/Quote]

学习
zgke 2009-09-09
  • 打赏
  • 举报
回复
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;
}
jinru2560 2009-09-09
  • 打赏
  • 举报
回复
没错,用那两个API,可以枚举浏览器,包括你打开的WINDOWS窗口
fyyfantasy 2009-09-09
  • 打赏
  • 举报
回复
能写个最简单的例子给我吗,上面的那两个API是否先取到任务栏上的东西,再逐个判断是否IE?
fyyfantasy 2009-09-09
  • 打赏
  • 举报
回复
谢谢,我去看看,搜一下先
zgke 2009-09-08
  • 打赏
  • 举报
回复
public delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param);

[DllImport("user32.dll")]
public static extern int EnumWindows(EnumWindowsProc ewp, int lParam);

使用这两个API就可以了.

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧