標籤:blog http java 使用 檔案 2014 問題 代碼
相信做純WEB開發的PHP程式員都會想過,要是PHP能開發windows本地應用程式多好,於是上網一尋找出來的很多都是“PHP-GTK”的老文章,這東西好像已經沒人維護了,隨便看了下,也就沒去細研究了。
前陣子折騰了node-webkit,這東西可以用javascript + chorme核心blink 開發本地應用,滿足純WEB程式員開發本地應用程式的夢想。
node-webkit有幾個優點:
1、內建blink核心,跟隨google升級,支援現代瀏覽器特性,媽媽再也不用擔心我的瀏覽器安全色問題了
2、內建nodejs,就是加強版的javascript,WEB程式員入手快,nodejs功能強大
3、入門級開發流程比較簡單,沒有太多看不明白的東西
4、跨平台,三大作業系統都可用
5、國人開源項目,現在在github上很熱門
缺點:體積太大。 寫個hello wold,嗯,20M以上。 試了不少壓縮方法,最少的也要17M以上,頭痛
有道詞典前陣子也開源了類似項:叫有道hex,但我比較看好node-webkit,社區更活躍更成熟。
因為自己是PHPer,自然是寫PHP才夠酸爽,於是又在想其它解決方案。
有沒有一個綠色的php web server軟體呢,這樣可以把軟體做成綠色版,不用特意去安裝apache nginx之類的東西。
功夫不負有心人,找到了一個叫QuickPHP的好東西,作者本意是想做個方便快速調式PHP指令碼的工具,歪打正著,收下了。
研究了一會,發現是delphi寫的軟體,用exescope處理下,修改幾處文字和菜單,盡量不顯示出這貨是QuickPHP
再用C++邊學邊開發,弄個簡易的瀏覽器,其實就是產生一個表單,裡弄個IE控制項上去。 啟動表單的時候,用C代碼啟動QuickPHP,然後隱藏QuickPHP的表單。
(這裡還有個問題沒解決,否則就比較完美了,最小化後,隱藏託管欄上的表徵圖很麻煩,winxp和win7處理方法還不怎麼一樣,自己C能力太差,先放棄最佳化)
折騰兩天,成果
運行 localphp.exe可以看到效果
其中php.ini和ext目錄非必須,為了使用一些PHP擴充才加上
除掉非必要的擴充目錄(ext),剩下的檔案打包壓縮完就小几M,還算滿意
demo中的功能利用了js的非同步請求,達到無重新整理操作。當然你還可以最佳化css樣式、禁止js報錯、禁止複製文字、禁止右鍵菜單等手段讓它看去更像用戶端
本身php就有很多可以控制作業系統的函數,再加上可以用exec()執行命令列代碼,所以PHP能做的事情就很多了。
除了以上提到的PHP能做的事,其實還是很想讓PHP能調用系統裡的dll檔案,那就牛逼了。想像一下,用PHP找WangWang控制代碼、呼出WangWang聊友視窗、自動發送訊息給WangWang好友,多美麗的情境...
找了半天,發現兩個擴充php_w32api.dll和php_ffi.dll,可惜好像都沒有人維護了,新版的php都不能用。有興趣有能力的同學,可以到php官方去找,最佳化一下,編譯一份給偶用,萬分感謝。
總結一下,在這幾天實現想法的過程中,受益頗多:
1、PHP居然只要一個php5ts.dll就可以運行,還有sapi是什麼
2、C/C++其實也不是那麼可怕,學進去還是挺有意思的
3、辦法總比困難多
接下來想完善兩塊:
第一、徹底隱藏web server伺服器,即那個QuickPHP 或 者自己做個web server
第二、完成用WEB控制WangWang發送訊息功能。思路可以是
1、用PHP的擴充(如上面提到的w32api和ffi)來調用系統dll;
2、自己寫PHP擴充,在擴充裡實現發送WangWang訊息功能;
3、在主表單中實現發送WangWang訊息,通過某種機制讓PHP通知到C