首页 > 代码库 > PHP程序员开发win32应用程序之梦

PHP程序员开发win32应用程序之梦

相信做纯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找旺旺句柄、呼出旺旺聊友窗口、自动发送消息给旺旺好友,多美丽的场景...


找了半天,发现两个扩展php_w32api.dll和php_ffi.dll,可惜好像都没有人维护了,新版的php都不能用。有兴趣有能力的同学,可以到php官方去找,优化一下,编译一份给偶用,万分感谢。



总结一下,在这几天实现想法的过程中,受益颇多:

1、PHP居然只要一个php5ts.dll就可以运行,还有sapi是什么

2、C/C++其实也不是那么可怕,学进去还是挺有意思的

3、办法总比困难多


接下来想完善两块:

第一、彻底隐藏web server服务器,即那个QuickPHP 或 者自己做个web server

第二、完成用WEB控制旺旺发送消息功能。思路可以是

1、用PHP的扩展(如上面提到的w32api和ffi)来调用系统dll;

2、自己写PHP扩展,在扩展里实现发送旺旺消息功能;

3、在主窗体中实现发送旺旺消息,通过某种机制让PHP通知到C