如何在 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中独立运行的可执行文件

屏幕保护程序如何在 Windows 8 中继续在桌面上绘图?

vs2015 windows服务怎么安装