[英]Executing Python Script from C++ program in Windows XP
我正在嘗試從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腳本從未執行過。
並非真正的答案,但評論太久。
這種在新窗口中執行的問題是,一旦程序結束窗口就會關閉。 當打開一個窗口時,從啟動程序的角度來看,可能一切都很好。
我的建議是在程序結束后使用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";
相反,我離開了
shExecInfo.lpVerb = NULL;
並填寫了directory參數,現在可以使用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.