首页
社区
课程
招聘
[求助]怎么知道CreateProcess的进程已经完全初始化完成
发表于: 2010-1-4 20:16 7128

[求助]怎么知道CreateProcess的进程已经完全初始化完成

2010-1-4 20:16
7128
用CreateProcess创建了一个进程,然后CreateProcess已经返回了。但程序的窗口还才刚刚初始化。
不想用Sleep来等待,因为怕间隔的时间太短。
WaitForInputIdle也不行,WaitForInputIdle返回的时候程序窗口也还是初始化
后来想用EnumWindows,但程序初始化的时候和完全加载完成后所枚举的窗口是一样的。
估计用FindWindow结果也一样。
在网上也找了半天没看到到是怎么处理这种问题的。
哪位大牛能指条明路啊。谢谢先。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 356
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主所说的应该并不是Process的初始化,因为进程的初始化是系统进行管理的。当代码运行到进程PE文件的入口点处的时候,与系统相关的进程信息的初始化就已经完成了。只不过这个时候进程还没有运行进程本生的任何代码而已。
楼主所说的初始化应该进程已经开始运行,并且运行到一定步骤的一个时机。这个针对不同的进程应该么有通用的方法可以获取。必须单个进程特别调试,选择合适的地方作为判断的依据。
假如你写个进程,开始出项一个窗口,上线显示一个“Hello World”的动画,播放完成以后出来一个接受输入的输入框。如果你把之前的那个动画过程当成所谓的“进程初始化”,而出现输入框定义为“进程已经完全初始化完成”,那完全可以找很多东西来作为这个标志。比如,动画是否播放完成?再比如:输入框对象是否创建并处于show状态......这些东西都可以通过调试获得。
2010-1-5 12:16
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
createprocess返回时, 进程就已经创建了,
关键是你的初始化完成是指的什么?  要求窗体出来还是什么?
2010-1-5 19:15
0
雪    币: 287
活跃值: (18)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
我之前也有过这的疑问,等待大牛的高见
2010-1-6 09:28
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
膜拜表达能力+态度+技术
2010-1-6 11:11
0
雪    币: 61
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我也一直很疑惑,在C里面,当用CreateProcess打开了一个PE文件创建进程的时候,怎么找到EntryPoint地址?
2010-9-27 10:48
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
7
EntryPoint在PE头中指定的啊~~
2010-9-27 12:31
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
8
CREATE_SUSPENDED之后想办法拦住BaseProcessStart,就可以算是初始化完了
2010-9-27 12:31
0
游客
登录 | 注册 方可回帖
返回
//