如何使用process.start(程序)打开程序并返回程序的句柄(重新发帖)
时间:2011-12-09
来源:互联网
我是要通过程序运行不特定的外部程序,并对其窗口进行控制,对于一般的程序,使用下面这段程序就可以正常获取,但是,无法获取像“迅雷、迅雷看看、360”等程序的真正Pid,
Public aa As New Process
Public RunfilenName As String
Dim hwnd As IntPtr
aa.StartInfo.FileName = RunfilenName
aa.Start()
hwnd = aa.Id
Dim i As Int16 = 0
Do While 0 = hwnd And i < 500 ‘循环是为了等待相应程序打开,否则无法获取到
Thread.Sleep(10)
hwnd = aa.Id
i += 1
Loop
经测试使用
Dim Myprocess() As Process = Process.GetProcessesByName(aa.ProcessName),
可以获取进程信息,但Pid和上面的程序一样也不是不真正Pid
Public aa As New Process
Public RunfilenName As String
Dim hwnd As IntPtr
aa.StartInfo.FileName = RunfilenName
aa.Start()
hwnd = aa.Id
Dim i As Int16 = 0
Do While 0 = hwnd And i < 500 ‘循环是为了等待相应程序打开,否则无法获取到
Thread.Sleep(10)
hwnd = aa.Id
i += 1
Loop
经测试使用
Dim Myprocess() As Process = Process.GetProcessesByName(aa.ProcessName),
可以获取进程信息,但Pid和上面的程序一样也不是不真正Pid
作者: zhichao2001 发布时间: 2011-12-09
迅雷5好像是在又启动了一个进程,迅雷7刚才找了下,应该只有一个Thunder.exe
迅雷看看和迅雷类似,360没用过,不知道
迅雷看看和迅雷类似,360没用过,不知道
作者: bunliney 发布时间: 2011-12-09
很多程序并不是只有一个程序的,比如说我们写一个能够更新的程序,一般包括
更新.exe
主程序.exe
(配置文件.ini)
..其他程序..
我们运行的话一般是启动更新.exe>>然后检测配置文件等等>>若有更新,则更新>>主程序
当然也有先启动主程序.exe>>启动附带程序,自检完整性>>启动 更新.exe>>更新>>...
现在很多程序都比较大,而且都比较独立这样在更新或者检测时会更加方便,例如360安全卫士,
主程序界面和主程序的托盘就是两个程序,他的其他程序都是独立的,但是单独打开是不允许的,
程序之间互相通讯,以保持完整性和相对独立性
所以这样你在检测PID的时候,要注意分析PID进程实际的程序创建者(路径及句柄等等),当然不缺乏很多程序都是实现创建和加载内核驱动,很多都无法检测到句柄
更新.exe
主程序.exe
(配置文件.ini)
..其他程序..
我们运行的话一般是启动更新.exe>>然后检测配置文件等等>>若有更新,则更新>>主程序
当然也有先启动主程序.exe>>启动附带程序,自检完整性>>启动 更新.exe>>更新>>...
现在很多程序都比较大,而且都比较独立这样在更新或者检测时会更加方便,例如360安全卫士,
主程序界面和主程序的托盘就是两个程序,他的其他程序都是独立的,但是单独打开是不允许的,
程序之间互相通讯,以保持完整性和相对独立性
所以这样你在检测PID的时候,要注意分析PID进程实际的程序创建者(路径及句柄等等),当然不缺乏很多程序都是实现创建和加载内核驱动,很多都无法检测到句柄
作者: xiaolinyouni 发布时间: 2011-12-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28