假设我有一个仅在Windows上运行的GUI应用程序,我想使用PHP为它创建一个Web界面。它甚至可能吗?我知道我可以使用system()或exec()等函数来启动程序,但是我可以更好地控制正在运行的GUI应用程序吗?首先,我希望能够发送击键,因此我可以使用它来处理文件,保存输出并退出。
请指出正确的方向。
答案 0 :(得分:3)
它必须是PHP吗?您可以使用VNC的Java小程序(免费),Windows终端服务,Citrix等(非免费)在Web上分发GUI应用程序。我想不出一种方法可以在PHP中实现这一点,而不是用它来“点击”GUI。
答案 1 :(得分:2)
您可能需要查看php-gtk
答案 2 :(得分:2)
不能说我自己尝试了这个,但你应该看看PHP的Windows扩展,特别是COM扩展(http://www.php.net/manual/en/refs.utilspec.windows.php)。
来自文档中的介绍:
COM是粘合的主要方式之一 应用程序和组件一起 在Windows平台上;使用COM你 可以启动Microsoft Word,填写一个 文档模板并保存结果 作为Word文档并将其发送到 您网站的访问者。
您将被限制在自己的盒子上运行脚本,但这听起来就像您需要的那样。 COM / OLE的东西可以是一个非常深的兔子洞,祝你好运!
答案 3 :(得分:1)
我认为实际上不可能通过PHP网络应用程序向桌面应用程序发送鼠标点击或击键(如果有可能,我怀疑这很容易 - 或者很漂亮)。可能有用的是获取PHP应用程序所需的功能,并将其移动到PHP应用程序可以使用您向其公开的一组方法调用的单独库或服务。
答案 4 :(得分:1)
你需要记住的最重要的事情是编程语言类似于工具的旧编程格言。你不会试图用锤子拆掉一个爆胎,也不会用轮胎铁钉来钉。重点:使用正确的工具完成工作。使用php来做你打算做的事就像试着用螺丝刀钉一个钉子。找一把质量好的锤子。
答案 5 :(得分:1)
你绝对可以做到,但这需要一点点hackery。一种方法是编写一个Windows命令行应用程序,它可以向Windows GUI应用程序发送按钮点击等。然后使用PHP和exec
和system
调用来调用此命令行应用程序。
例如,如果您通过它说Firefox,您将拥有一个firefox-wrapper
应用程序,可以像这样调用:
firefox-wrapper open-url http://stackoverflow.com
firefox-wrapper press-back
...
答案 6 :(得分:1)
听起来非常可能...... 让GUI应用程序启动本地服务器,比如127.0.0.1:[anyportnumber] 然后,无论何时通过Web执行某些操作,都要让PHP应用程序通过向位于那里的GUI应用程序发送数据来向您的应用程序发送命令,该应用程序将监听它需要做出反应的任何命令。
答案 7 :(得分:1)
如果您需要在Web应用程序中看到GUI,则可以使用VNC查看器小程序。
如果您希望在幕后提供Web表单并操作GUI,请查看您最喜欢的搜索引擎上的Windows自动化工具。它们具有强大的脚本语言,允许您创建复杂(如果需要)的例程。您可以从命令行调用其中许多内容并传递脚本以执行。如果您使用PHP执行此操作,您甚至可以将脚本生成为临时文件并将其传递给宏处理器。
您可以从Windows脚本宿主(WSH)获得所需内容,这类似于批处理文件脚本,但具有更多功能。