在Windows XP中用C++程序执行Python脚本

2024-10-01 15:39:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从C++程序中执行一个Python脚本。我遇到的问题是我无法执行python脚本。在

如果我通过将lpParameter值设置为NULL而去掉它,那么一切正常,我的程序启动python终端,然后在退出python终端时程序结束。在

我有一种感觉,它与lpParameters字段有关,用空格分隔参数,所以我尝试用转义引号括起整个python脚本。在

#include "windows.h"
#include "shellapi.h"
#include <iostream>

using namespace std;

int main()
{
    cout<<"About to execute the shell command";

    SHELLEXECUTEINFO shExecInfo;
    shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    shExecInfo.fMask = NULL;
    shExecInfo.hwnd = NULL;
    shExecInfo.lpVerb = "runas";
    shExecInfo.lpFile = "C:\\Python25\\python.exe";
    shExecInfo.lpParameters = "\"C:\\Documents and Settings\\John Williamson\\My Documents\\MyPrograms\\PythonScripts\\script.py\"";
    shExecInfo.lpDirectory = NULL;
    shExecInfo.nShow = SW_NORMAL;
    shExecInfo.hInstApp = NULL;
    ShellExecuteEx(&shExecInfo);


    return 0;
}

当我启动这段代码时,我的程序运行,快速弹出另一个终端,它很快就消失了,然后我原来的终端说任务完成了。实际上,虽然我指定的python脚本从未执行过。在


Tags: 程序脚本终端参数includewindowsnull引号
2条回答

不是真的是一个回答,但太长时间不能发表评论。在

这种在新窗口中执行的问题,是程序一结束窗口就关闭了。由于一个窗口已经打开,从发射程序的角度来看可能一切正常。在

我的建议是使用一个cmd /k,在程序结束后强制窗口保持打开状态:

shExecInfo.lpFile = "cmd";
shExecInfo.lpParameters = "/k C:\\Python25\\python.exe \"C:\\Documents and Settings\\John Williamson\\My Documents\\MyPrograms\\PythonScripts\\script.py\"";

至少如果任何地方有错误,你会有机会看到它。在

结果问题出在权限和设置此参数:

shExecInfo.lpVerb = "runas";

相反,我留下了它

^{pr2}$

并且还填写了directory参数,它现在正在工作。在

相关问题 更多 >

    热门问题