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窗口但是显示任务管理器,应该怎么写,谢了。 展开
SYS.exe 在OnInitDialog 中有以上代码
单独运行 SYS.exe 没问题,但是用CreateProcess.exe 运行SYS.exe 时不能弹出SYS.exe窗口和任务管理器
把CREATE_NO_WINDOW去掉能正常运行
我猜测这个属性是可以被子程序继承的
我现在想让它不继承,即不弹出SYS.exe窗口但是显示任务管理器,应该怎么写,谢了。 展开
展开全部
没这样做过,不过我认为,这不是无窗口属性的继承问题,而是因为,CREATE_NO_WINDOW模式调用sys.exe的时候,根本不会进入OnInitDialog代码,因为这个函数,是初始化界面的时候才调用的。
建议你,将sys.exe这个程序中,CreateProcess部分代码,由OnInitDialog转到InitInstance这个入口函数里面(放在函数最后,return之前)试试,这样应该就可以了。
建议你,将sys.exe这个程序中,CreateProcess部分代码,由OnInitDialog转到InitInstance这个入口函数里面(放在函数最后,return之前)试试,这样应该就可以了。
追答
确实应该放在DoModal调用之前。
如果放在这里还是老样子,可能你说的是对的,CREATE_NO_WINDOW造成的。
尝试一下sys.exe中CreateProcess的第六参数加上 |CREATE_NEW_CONSOLE 试试,可能这样可以。
其实你这里有个问题,正常启动sys.exe的时候,对话框窗口是否显示?如果不显示,那么不需要这样的困扰,在CreateProcess.exe中,使用WinExec或者ShellExecute都可以了。
如果sys.exe正常启动是有窗口的,这个。。。可以尝试一下在sys.exe中使用WinExec,如果还是老样子,这个真不知道了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询