首页 > 代码库 > 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