java pid 获取句柄_Windows程序设计(4):根据PID,获取句柄Handle

本文介绍了如何在Windows环境下,通过Java实现根据进程ID(PID)获取窗口句柄(Handle)的方法。主要内容包括利用GetWindowThreadProcessId函数和EnumWindows函数进行查找,并讨论了在不同情况下可能遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

接上一篇。

再说一遍需求:写一个程序A,去启动一个指定的程序B,设置它的窗口大小并把它放到指定位置。

既然CreateProcess指定的程序启动参数,对于GUI程序无效(我暂时真的不知道为什么…),那可以让程序启动以后,获取它的Handle,然后模拟操作系统向它发送消息,让其响应。

CreateProcess可以得到被启动的程序的PID,但得不到handle。(我也不知道怎么回事,明明说返回的是个handle,但确实和B的handle不是一个数,另外尝试了各种办法,比如openProcess返回的也不是B的handle的数)

那么,如果根据PID找到它对应的handle呢?

方法一,调用GetWindowThreadProcessId函数。

有可能有死循环…,就是可能一直都找不到。

一个坑!

如果开启的不是gui程序,只是开个控制台,也找不到!启动以后,CreateProcess立即返回了。wait那个函数没有生效!就算是Sleep以后,也找不到……

vc++6.0编译,xp系统和win8系统,测试通过。

注意,因为前面是getForeground,所以后面是写GetNextWindow的参数传的是Prev…

有几个函数,getWindow,getTopWindow,getForeground...

GetNext...的参数有prev、next。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值