VC++ CreateProcess API 隐藏窗口属性(CREATE_NO_WINDOW)的继承问题

程序CreateProcess.exe用CreateProcess()API运行下面的SYS.exeSYS.exe在OnInitDialog中有以上代码单独运行SYS.e... 程序CreateProcess.exe 用CreateProcess() API 运行下面的 SYS.exe

SYS.exe 在OnInitDialog 中有以上代码
单独运行 SYS.exe 没问题,但是用CreateProcess.exe 运行SYS.exe 时不能弹出SYS.exe窗口和任务管理器
把CREATE_NO_WINDOW去掉能正常运行
我猜测这个属性是可以被子程序继承的
我现在想让它不继承,即不弹出SYS.exe窗口但是显示任务管理器,应该怎么写,谢了。
展开
 我来答
bhtzu
推荐于2016-08-05 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4057万
展开全部
没这样做过,不过我认为,这不是无窗口属性的继承问题,而是因为,CREATE_NO_WINDOW模式调用sys.exe的时候,根本不会进入OnInitDialog代码,因为这个函数,是初始化界面的时候才调用的。
建议你,将sys.exe这个程序中,CreateProcess部分代码,由OnInitDialog转到InitInstance这个入口函数里面(放在函数最后,return之前)试试,这样应该就可以了。
追问

放在InitInstance最后,return之前 只有在SYS.exe 结束时才弹出任务管理器

放在CSYSDlg dlg;  前 还是老样子,不能显示任务管理器

追答
确实应该放在DoModal调用之前。
如果放在这里还是老样子,可能你说的是对的,CREATE_NO_WINDOW造成的。

尝试一下sys.exe中CreateProcess的第六参数加上 |CREATE_NEW_CONSOLE 试试,可能这样可以。

其实你这里有个问题,正常启动sys.exe的时候,对话框窗口是否显示?如果不显示,那么不需要这样的困扰,在CreateProcess.exe中,使用WinExec或者ShellExecute都可以了。
如果sys.exe正常启动是有窗口的,这个。。。可以尝试一下在sys.exe中使用WinExec,如果还是老样子,这个真不知道了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式