2009-10-28 184 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)獲得所需的內容,這與批處理文件腳本相似,但具有更多功能。

相關問題