2009-10-28 182 views
0

假设我有一个在Windows上运行的仅GUI应用程序,我想使用PHP为它创建一个Web界面。它甚至有可能吗?我知道我可以使用像system()或exec()这样的函数来启动程序,但是我可以更好地控制正在运行的GUI应用程序吗?首先,我希望能够发送它击键,所以我可以使用它来处理文件,保存输出并退出。PHP可以用来控制GUI应用程序吗?

请指点我正确的方向。

+0

它是什么样的程序?这可能会很棘手。它写的是什么? – CodeJoust 2009-10-28 02:01:46

+0

在这个阶段,我只想知道我所描述的是否可能。我还没有为特定的程序工作。 – MiseryIndex 2009-10-28 02:09:11

+0

你的GUI应用程序做什么,你不能在浏览器中做?要做到这一点与任何优雅,你需要编写GUI应用程序(或一个单独的应用程序与它接口)和Web服务,以提供两种应用程序之间的任何体面的接口。我会尽量简化您的解决方案,这些看起来像是一场噩梦。 – 2009-10-28 02:53:31

回答

1

你一定可以做到这一点,但它会需要一点两轮牛车的。一种方法是编写一个Windows命令行应用程序,该应用程序将按钮点击等发送到Windows GUI应用程序。然后使用PHP和调用execsystem调用该命令行应用程序。

例如,如果你路过它说,火狐,你将有一个firefox-wrapper应用程序可以被称为是这样的:

firefox-wrapper open-url http://stackoverflow.com 
firefox-wrapper press-back 
... 
1

我不认为有可能通过PHP Web应用程序实际发送鼠标点击或按键到桌面应用程序(如果可能的话,我怀疑它很容易 - 或漂亮)。可能的工作是采用PHP应用程序需要的功能,并将其移至单独的库或服务中,PHP应用程序可以使用您公开的一组方法调用该服务。

+0

如果我从命令行使用PHP,我可以这样做吗?我认为以后从Web应用程序调用命令行PHP应该不那么困难。 – MiseryIndex 2009-10-28 02:14:30

+0

在这种情况下,您的后端服务/库(与消息交互/将消息传递到托管Web应用程序的机器上的桌面应用程序)将用PHP编写,并且会由也会发生的Web应用程序调用用PHP编写。我没有看到用PHP编写中间部分的问题,除了这不是我个人的选择,但嘿,不同人的不同笔触! ;) – FrustratedWithFormsDesigner 2009-10-28 03:03:32

3

它必须是PHP吗?您可以使用VNC的Java小程序(免费),Windows终端服务,Citrix等(不是免费)在Web上分发GUI应用程序。我无法想出一种在PHP中实现这种可能性的方法,而不是用它“点击”GUI。

+0

通过使用这些工具,我不会放弃控制我的电脑?如果两个人想同时使用我的应用会发生什么? – MiseryIndex 2009-10-28 02:41:46

+0

那里有很多应用程序和解决方案,限制越来越少。这真的取决于你的需求和预算什么是适合你的。 – 2009-10-28 11:30:40

1

这里需要记住的最重要的事情是旧的编程格言,即编程语言与工具类似。你不会试图用锤子去除爆胎,也不会用轮胎熨斗来驱动钉子。重点:为工作使用正确的工具。使用php来做你打算做的事就像试图用螺丝刀来钉钉子。找到一个质量好的锤子。

+0

你能推荐另一种锤子吗? – MiseryIndex 2009-10-28 02:38:33

+0

Java和Python有很多GUI选项。 – 2009-10-28 04:48:22

2

你可能要考虑php-gtk

+0

如果我想在PHP中编写GUI应用程序,我会。难道php-gtk实际上可以帮我做我描述的吗? – MiseryIndex 2009-10-28 02:39:43

+0

不,它不会。 PHP-GTK用于使用PHP构建GTK应用程序。 – cdmckay 2009-10-28 03:58:10

2

不能说我已经试过此我自己,但你应该看看PHP的Windows扩展,特别是COM扩展(http://www.php.net/manual/en/refs.utilspec.windows.php)。

从文档中的介绍:

COM是粘上 应用程序和组件一起 在Windows平台上的主要途径之一;使用COM您 可以启动Microsoft Word,填写 文档模板并将结果 保存为Word文档并将其发送给您的网站的 访问者。

你将被限制在自己的盒子上运行脚本,但这听起来像是你需要的。 COM/OLE的东西可以是一个相当深的兔子洞,所以祝你好运!

1

听起来似乎很可能... 让GUI应用程序启动一个本地服务器,在说127.0.0.1:[anyportnumber] 然后,每当用户在网上做一些事情,让PHP应用程序通过发送命令到您的应用程序将数据发送到位于那里的GUI应用程序,并监听它需要响应的任何命令。

1

如果您需要查看在您的Web应用程序中运行的GUI,那么VNC查看器小程序就是您的选择。

如果您正在寻找提供Web窗体并在幕后操作GUI,请在您最喜爱的搜索引擎上查看Windows自动化工具。他们有强大的脚本语言,可以让你创建复杂的(如果需要)例程。您可以从命令行调用其中的许多命令并传递脚本来执行。如果您使用PHP来完成这项工作,您甚至可以将该脚本生成为临时文件并将其传递给宏处理器。

您可以从Windows Script Host(WSH)获得所需的内容,这与批处理文件脚本相似,但具有更多功能。

相关问题