首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于Shell的参数设置上的疑点

2013-03-26 
关于Shell的参数设置上的疑问1.突然想到指令内第二个参数可以决定备呼叫的程式以哪种状态显示在萤幕上那我

关于Shell的参数设置上的疑问
1.
突然想到指令内第二个参数可以决定备呼叫的程式以哪种状态显示在萤幕上
那我若使用隐藏模式去开启程式
会不会间接导致我的程序无法获取到隐藏模式下的视窗控件句柄呢?
(目前我是用最小化运行所以还没这问题)

2.
另一个问题是
被呼叫起来的视窗成是因为不知道内部代码是怎编的
运作时会占掉CPU的全部负载
导致我的程序无法更新画面造成反白
是否有方法可以从外部去干涉它的运行?
(目前我是让我的程序执行后缩到后台避开这问题)
有没有方法让它不那么吃资源或许还能获取它运行的进度?

因为那只程式没有背景指令接口
只好运行后模拟手动操作直接送出资料到它的控件中
模拟按钮事件强迫它运行出我要的结果

谢谢...
[解决办法]
会不会间接导致我的程序无法获取到隐藏模式下的视窗控件句柄呢?
--显示不显示和存在不存在是两个问题.
[解决办法]
不断地挂起/恢复进程,即可达到效果.

相应的API:

Private Declare Function NtSuspendProcess Lib "NTDLL.DLL" ( _
         ByVal hProc As Long) As Long
Private Declare Function NtResumeProcess Lib "NTDLL.DLL" ( _
         ByVal hProc As Long) As Long


你Shell那个第三方程序时,返回值就是它的PID.然后使用openProcess打开并得到一个进程句柄,把这个句柄传给NtSuspendProcess就挂起了进程,传给NtResumeProcess就恢复进程.

可以做一个定时器,在定时器里不断地挂起+恢复,实现类似Sleep的功能.

不过这样会严重地降低进程的执行速度,自己取舍吧.

最后别忘了释放OpenProcess打开的句柄.

热点排行