导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

怎么过通过句柄获得进程名称?

ahui_net 北京百森咨询有限公司 技术总监  2012-01-17 11:07:26

这个句柄是一个窗口的句柄,很奇怪这个窗口句柄没有在进程列表中显示出来,通过Process.GetProcesses();穷举不到。


不知道有没有非托管的动态连接库能够有方法能找出来。

请教,谢谢。
...全文
176 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahui_net 2012-01-18
[Quote=引用 3 楼 gomoku 的回复:]

C# code

[DllImport("user32.dll", SetLastError=true)]
public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int processId);


具体见:
http://msdn.microsoft.com/zh-cn/library/windows/des……
[/Quote]

很感谢你的回复。通过轮询我可以通过进程id地址循环Process.GetProcesses();找到其进程名,但是我发现Process.GetProcesses();的效率极低,很费cpu,有能通过进程id查出进程名的方法吗?再请教下。
回复
wushuai1346 2012-01-18
[Quote=引用 3 楼 gomoku 的回复:]

C# code

[DllImport("user32.dll", SetLastError=true)]
public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int processId);


具体见:
http://msdn.microsoft.com/zh-cn/library/windows/des……
[/Quote]学习了
回复
足球中国 2012-01-18
[Quote=引用 3 楼 gomoku 的回复:]

C# code

[DllImport("user32.dll", SetLastError=true)]
public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int processId);


具体见:
http://msdn.microsoft.com/zh-cn/library/windows/des……
[/Quote]
这个就是了。
回复
q_107723600 2012-01-18
好贴,好问题,好回答
回复
gomoku 2012-01-18

[DllImport("user32.dll", SetLastError=true)]
public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int processId);


具体见:
http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms633522(v=vs.85).aspx
回复
ahui_net 2012-01-18
找到方法了。谢谢大家。
回复
wy811007 2012-01-18
你要找什么东西额 具体点啊..用spy+ 查看下 窗体类 窗体名 什么的 还有进程信息
回复
足球中国 2012-01-17
可以。我原来做的一个系统辅助工具就是通过窗口句柄找的进程。
太久了。记不住是哪个API了。
好象enumwindows之类的吧。
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.