【问题标题】:How to run a Windows Forms Application from PHP如何从 PHP 运行 Windows 窗体应用程序
【发布时间】:2013-11-21 19:57:30
【问题描述】:

我正在尝试运行一个自定义 Windows 窗体应用程序,该应用程序接受来自 PHP 脚本的命令行参数,但到目前为止我还没有成功。 如果没有提供参数,这个程序会加载它的交互式 GUI,否则它只会处理信息,然后以状态 0 退出。

首先,我尝试使用 exec() 函数,页面会挂起大约两分钟,然后浏览器会抛出“未收到数据”错误。 所以我开始阅读 exec、popen、proc_open、system、passthru 和 shell_exec 函数。我尝试使用 exec、system 和 shell_exec 使程序运行,但无济于事。

然后我发现可能存在权限问题,因为实际尝试运行该程序的用户是我的 Web 服务器 (Apache/2.2.22 (Win32) PHP/5.3.14) 所以我访问了 Apache 服务的属性并让它以我自己的用户身份登录,重新启动服务并设法使用 exec 函数获取返回值。

我还发现,为了防止页面挂起,我应该将程序设置为在后台运行,但是我需要等待程序的响应才能让用户知道它已经完成了工作。

现在的问题是我似乎只能在没有参数的情况下运行它。它实际上并没有加载它的 GUI,它只返回它的状态 0,所以我不确定它是否真的运行了。如果我设置了一个参数,那么页面就会挂起,并且我会得到一个不会在任务管理器中自行关闭的 cmd.exe 进程。

PHP 代码:

$path = 'start /b "D:/Path/to/program.exe" argument';
$output = array();
$returnVal;
exec($path, $output, $returnVal);

我怎样才能让这个程序运行?

更新: 如果我在没有参数的情况下运行程序并将> output.txt 附加到命令中,我会在 output.txt 文件中得到以下内容:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

D:\WPrograms32\Apache2.2\htdocs>

【问题讨论】:

    标签: php winforms exec


    【解决方案1】:

    通过将我的项目转换为控制台应用程序解决了这个问题,不知何故 PHP 能够以这种方式正确执行它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多