如何在 Windows 8 VS2013 中使用 si.lpReserved 2?
Posted
技术标签:
【中文标题】如何在 Windows 8 VS2013 中使用 si.lpReserved 2?【英文标题】:how to use si.lpReserved2 in Windows8 VS2013? 【发布时间】:2014-10-03 05:46:58 【问题描述】:我正在使用this technique 从内存中的 GUI 应用程序启动控制台程序。此外,我通过未记录的 si.lpReserved2 和 si.cbReserved2 的使用,从 GUI 向控制台程序提供了一些数据,如described here。 所有这些都是在 WinXP 上的 VS2010 中编译的,并且在 Windows XP 7 和 8 中运行良好。
当 VS2013 出现时,它改变了处理上述这些参数的方式。如果我将它们设置为 nil 和 0,它适用于 Windows 8 和其他系统。如果尝试像以前一样使用它们,控制台程序会停止并显示 AppCrash 弹出消息 - 仅在 Windows8 中,在 Windows XP 和 7 上它仍然有效。
在 si.lpReserved2 中 VS2013 发生了什么变化,有什么方法可以在 Windows 8 中继续使用它?它真的很方便,用于非常合法的目的..
【问题讨论】:
这里没有什么听起来很合法。使用命令行参数。并通过调用 CreateProcess 创建进程。当您违反所有规则时,您期望会发生什么? 我很想知道使用这种技术有什么好处? 不尊重官方文档是让您自己的软件(以及同一台计算机和其他计算机上的其他软件)出错且速度缓慢的好方法。 【参考方案1】:文档说:
cbReserved2
保留供 C 运行时使用;必须为零。
lpReserved2
保留供 C 运行时使用;必须为 NULL。
这再清楚不过了。
如果您希望将参数传递给新进程,请通过命令行进行。
【讨论】:
以上是关于如何在 Windows 8 VS2013 中使用 si.lpReserved 2?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 VS 2013 中使用 c# 在 Windows 窗体应用程序中插入数据?
Windows 8和Windows10系统下VS2013安装插件VA_X_Setup2074
在 VS2012 和 windows 8 x64 中使用 MFC CDatabase 连接访问数据库
如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件