Winapi 用于批处理脚本的Visual Studio 2010 CreateProcess()
我正在尝试在VisualStudio2010中运行批处理脚本。我正在遵循找到的代码以及 在创建我的Winapi 用于批处理脚本的Visual Studio 2010 CreateProcess(),winapi,batch-file,createprocess,Winapi,Batch File,Createprocess,我正在尝试在VisualStudio2010中运行批处理脚本。我正在遵循找到的代码以及 在创建我的.exe时,我在Release和Debug文件夹中创建了running.bat文件(两种编译方法在运行时都失败)。但是,我的程序每次都会崩溃,错误代码为2: main.c-命令行应用程序 #include "windows.h" #include "stdio.h" int main() { STARTUPINFO si; PROCESS_INFORMATION p
.exe
时,我在Release和Debug文件夹中创建了running.bat
文件(两种编译方法在运行时都失败)。但是,我的程序每次都会崩溃,错误代码为2
:
main.c-命令行应用程序
#include "windows.h"
#include "stdio.h"
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
if( !CreateProcess(NULL,
L"cmd.exe /c running.bat",
NULL,
NULL,
TRUE,
CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi )
)
{
printf( "CreateProcess failed (%d)\n", GetLastError() );
return FALSE;
}
return 0;
}
STARTUPINFO是CreateProcess函数的中的一个参数,但在您的代码中传递的是垃圾
STARTUPINFO si = {0};
si.cb = sizeof(STARTUPINFO);
etc...
从:
重要信息调用方负责确保STARTUPINFO中的标准句柄字段包含有效的句柄值。即使dwFlags成员指定STARTF_USESTDHANDLES,这些字段也会原封不动地复制到子进程中而不进行验证。不正确的值可能会导致子进程行为异常或崩溃
对于退出代码2,将批处理文件的完整路径添加到命令中。您可以使用或检索应用程序的当前目录