- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 C++ 应用程序,它使用 CreateProcess() 启动另一个应用程序。我之前用 GetStartupInfo() 填充了 STARTUPINFO 数据。这是代码:
STARTUPINFOA si;
PROCESS_INFORMATION pi;
GetStartupInfoA( &si );
cout << si.dwFlags << endl;
cout << si.hStdError << endl;
cout << si.hStdInput << endl;
cout << si.hStdOutput << endl;
我使用 Win7/x64、SP1、VS2005、ICC 9.1(英特尔)
当我从 CubicExplorer 启动应用程序时,它返回:
dwFlags = 1
hStdError = 0xffffffffffffffff
hStdInput = 0xffffffffffffffff
hStdOutput = 0xffffffffffffffff
(...以及我使用此 STARTUPINFO 开始使用 CreateProcess 的第二个应用程序。)
当我从标准的 Windows Explorer 启动应用程序时,它返回:
dwFlags = 1025 (0x401)
hStdError = 0x0000000000000000
hStdInput = 0x0000000000000000
hStdOutput = 0x0000000000010001
(...并且 CreateProcess 因错误 ACCESS_DENIED 而失败。)
我的问题:因为唯一的区别是应用程序是从不同的文件夹资源管理器(Windows 资源管理器 与 Cubic 资源管理器)启动的,什么可以产生这些不同的信息?
最佳答案
您收到的 STARTUPINFO
记录来自启动程序的 CreateProcess
调用。两个不同且完全独立的程序称为 CreateProcess
,它们显然选择以不同方式填充 STARTUPINFO
记录。这没什么了不起的。
顺便说一下,除非 dwFlags
包含 STARTF_USETDHANDLES
,否则读取 hStdX
字段是没有意义的。
我建议不要简单地将您自己的启动参数转发给下一个程序。相反,明确填充下一个程序所需的启动字段。这样,您就知道自己得到了什么。
关于c++ - GetStartupInfo() 根据启动应用程序的资源管理器而有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7362866/
我有一个 C++ 应用程序,它使用 CreateProcess() 启动另一个应用程序。我之前用 GetStartupInfo() 填充了 STARTUPINFO 数据。这是代码: STARTUPIN
我是一名优秀的程序员,十分优秀!