如何使用ShellExecuteW使用参数运行python脚本?

时间:2019-07-18 21:25:59

标签: winapi

我正在尝试使用WinAPI函数ShellExecuteW使用自变量运行python脚本。

看起来像

python .\PythonDLL_Example.py 125960 126110 126070 126250 3928 274353.845945816 119761.8349277858 18080.59072693367 -252416.3714632094 -79682.09253258759 -12446.11663140202

我尝试使用完整路径这样做,以防万一:

ShellExecuteW(NULL, NULL, "C:\\Users\\Amber\\AppData\\Local\\Programs\\Python\\Python37\\python.exe", "C:\\Users\\Amber\\AppData\\Roaming\\MetaQuotes\\Terminal\\DEA332DEFF5165CB2EAFB6F9BD062C50\\MQL5\\Experts\\Advisors\\PythonDLL_Example.py 125960 126110 126070 126250 3928 274353.845945816 119761.8349277858 18080.59072693367 -252416.3714632094 -79682.09253258759 -12446.11663140202", NULL, 10);

没有结果 错误%d42

如下所示的测试执行成功运行:

ShellExecuteW(NULL, "open", "C:\\Windows\\Notepad.exe", NULL, NULL, 10);

请问,如何执行我的脚本?

谢谢

2 个答案:

答案 0 :(得分:0)

我如何解决案件:

  1. 我在Windows OS中将.py文件与python.exe关联了。因此,我不使用“ python。\ PythonDLL_Example.py .....”,而是使用“。\ PythonDLL_Example.py .....”。
  2. 我整理出“%d42”不是错误。这是过程的烦恼。我发现我的脚本有错误(脚本没有传递参数)。
  3. 对我来说,正确的是:

    ShellExecuteW(NULL, NULL, "C:\\Users\\Amber\\AppData\\Roaming\\MetaQuotes\\Terminal\\DEA332DEFF5165CB2EAFB6F9BD062C50\\MQL5\\Experts\\Advisors\\PythonDLL_Example.py", "125960 126110 126070 126250 3928 274353.845945816 119761.8349277858 18080.59072693367 -252416.3714632094 -79682.09253258759 -12446.11663140202", NULL, SW_HIDE);
    

答案 1 :(得分:-1)

似乎无法使用ShellExecute。我已经尝试了很长时间,并查阅了很多信息。看来我最后只能运行Python脚本,但不能运行带有参数的Python脚本。真可惜。

我没有在注释中尝试该方法,但是我发现了另一种可能可行的方法。

链接:Run a python script with arguments

请注意,Python的版本号现在为Python 3,因此请更改参考库并传递参数(某些参数需要宽字节)