【问题标题】:How to run python script with arguments using ShellExecuteW?如何使用 ShellExecuteW 运行带有参数的 python 脚本?
【发布时间】:2019-11-27 21:07:06
【问题描述】:

我正在尝试使用 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);

请你执行我的脚本?

谢谢

【问题讨论】:

  • 你为什么要使用ShellExecute()。由于您尝试直接调用python.exe,因此您应该改用CreateProcess()
  • 雷米是正确的。为此使用 CreateProcess。即使这样,您也需要提供工作目录,就像调用 ShellExecute 时需要提供的一样,尽管您的代码不需要。

标签: winapi


【解决方案1】:

我是如何解决我的案子的:

  1. 我在我的操作系统 Windows 中将 .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);
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多