mw234920
mw234920
采纳率100%
2017-08-02 12:27

C#获取指定进程的主窗口句柄

  • c#
已采纳

方法一:
通过在C#获取根据进程名获取进程Process,然后得到句柄 process.MainWindowHandle (获取关联进程主窗口的窗口句柄)

方法二:
通过调用windows底层API来获取指定进程的窗口句柄:主要用到两个
EnumWindows
GetWindowThreadProcessId

这两种方式对于大部分windows窗体都能获取到句柄;但是有些窗口,比如飞秋,获取到窗口句柄始终为0;

求各位大神赐教啊!!!!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • mw234920 mw234920 4年前

    解决办法: 通过窗口标题或者主窗体类名,调用API FindWindow()来获取窗口句柄,可以成功!包括托盘的隐藏窗口

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 4年前

    EnumWindows,这个是可以的,但是一些程序,特别是 Delphi 写的,它所谓的主窗口其实是一个子窗口。你可以先用 spy++ 验证下。
    如果那样,需要继续调用 GetChildWindow 获取真正的主窗口

    点赞 评论 复制链接分享
  • oyljerry oyljerry 4年前

    那些窗口不是标准窗口,可能自己画的,你API所以拿不到。这一类窗口需要用hook等钩子去获取

    点赞 评论 复制链接分享

相关推荐