使用PHP-GTK编写一个windows桌面应用程序
PHP-GTK的下载地址:http://gtk.php.net/download.php?language=en-US,
猿哥选择了最新版本(beta版),可能有人会问我们为啥不选最新的stable版本,猿哥只想对你说,“怕犯错,可能会丢失很多成长的机会”,与此同时,鉴于最新版通常使用了最新的技术规范,更具“轮子”的研究价值,但是这里有一个非常大的前期,那便是如果你想开发出面向大众用户而非自己研究的桌面级(Desktop)应用软件的话,建议用户还是选用最新的stable版本,这是一种用户思维,而不是做学问的思维。
1、选择PHP-GTK最新版本进行下载
2、下载好了二进制(binary)版本的安装包
3、先不看Get started(或者Quick start)文档,快速浏览目录结构
细心的小伙伴可能会发现demos目录,以及gtk的dll文件(动态链接库)
4、最常规的看见运行效果的方式是,我们把demos里面的实例代码运行起来,先给自己一起学习并掌握它之后的“预先”成就感
猿哥猜测通过调用php.exe来运行这里的php文件便可以看到桌面应用的运行结果了,那么结果是怎样的呢?
好吧,运行起来了,但是我们发现两个明显的命令行问题提示,这到底是什么鬼呢?先抛开问题,猿哥玩了一下运行起来的桌面应用程序,感觉十分流畅,想不到PHP作为一门脚本语言竟然能够写桌面级应用,太赞了。
5、接下来就是玩更多的demo,哈哈,我是不是太贪玩了,好吧,打住,猿哥你好像还没回答上面那个问题,为啥会出现两个错误提示,求别卖关子了好么!?
答案很简单,请看下图:
我们貌似发现了一个特别的可执行程序,当我们使用这个可执行文件去执行相应的脚本时会发现动态链接库加载失败的错误提示没有了,这里,猿哥纯属猜测拿到了一个完美的运行结果,但是猿哥不打算深入分析了,对这个问题感兴趣的小伙伴可以使用google大法搜索一下。
6、庖丁解牛,目无全牛
随便打开两个demo,我们会发现,这些应用都是继承了一个叫做GtkWindow的类,这个类是从哪里来的呢?
打开PHP的ext(扩展)目录,我们发现了一下dll扩展:
聪明的小伙伴肯定猜到了,这个gtk类肯定是从php_gtk2.dll文件来的,好吧,猿哥也是这么猜测的,这肯定是自恋症,得治哈。
继续研究源代码的结构我们会发现更多规律性的东西,在这里就不深究了,这里纯粹是抛砖引玉。
使用PHP-GTK编写一个windows桌面应用程序的更多相关文章
- C++使用代码创建一个Windows桌面应用程序
WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HINSTANCE hInstancem HINSTANCE hPreInstance, ...
- 对Windows桌面应用程序进行UI自动化测试
题记:本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试. 所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试. 要对Windows ...
- 编写一个简单的C++程序
编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...
- Visual C++ Windows 桌面应用程序样例(摘抄)
//================================== //Windows应用程序框架结构(例子) //参考:<Visual C++宝典>陈国建等编著 //======= ...
- 适用于Windows桌面应用程序的.NET Core 3
介绍 9月,微软发布了新版.NET Core,用于构建Windows桌面应用程序,包括WPF和Windows Forms.从那时起开发人员可以将传统的nfx桌面应用程序(和控件库)迁移到.NET Co ...
- 用C语言编写一个简单的词法分析程序
问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...
- 演练:我的第一个 WPF 桌面应用程序 https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application
这篇文章演示如何开发简单的 Windows Presentation Foundation (WPF) 应用程序包括元素所共有的大多数 WPF 应用程序: 可扩展应用程序标记语言 (XAML) 标记. ...
- Cocos2dx集成于windows桌面窗口程序的步骤
2D游戏需要做编辑器,而编辑器总是希望可以复用游戏中的逻辑来运行场景试看效果. 对于cocos2dx开发的程序,这个需求可以描述为: 实现一种方法,在桌面窗口程序中的某个控件上显示cocos2dx的场 ...
- 如何编写一个稳定的网络程序(TCP)
本节我们看一下怎样才能编写一个基于TCP稳定的客户端或者服务器程序,主要以试验抓包的方式观察数据包的变化,对网络中出现的多种情况进行分析,分析网络程序中常用的技术及它们出现的原因,在之后的编程中能早一 ...
随机推荐
- 20180129周一之学习PYTHON笔记【安装、查看工作目录、】
一,安装过程中多选一个ADD的项,免去设置环境变量. 二,PYAUTOGUI模块控制键鼠. IMAGE模块. ----------------------python 如何查看与更换工作目录----- ...
- YUM软件包额外扩展了解项
5.YUM配置文件 yum的配置一般有两种方式: 一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下增加.repo文件 [root@xuliang ...
- FlexPaper及二次开发
Flexpaper二次开发入门教程 http://ajava.org/course/web/?page=2
- leetcode412
public class Solution { public IList<string> FizzBuzz(int n) { var list = new List<string&g ...
- jmeter随机函数
有些接口的字段,入参须唯一. 高并发压测的时候,这个比较棘手,可以用多个随机函数组合 如:两个__RandomString中间,夹个__Random ${__RandomString(2,qwerty ...
- requests bs4 爬取 资讯 图片
#!/usr/bin/env python # Version = 3.5.2 # __auth__ = '无名小妖' import requests from bs4 import Beautifu ...
- J2SE 8的编译
动态加载(修改)服务.高性动态业务逻辑实现(用脚本或模板引擎实现效率满足不了需求) package compile; import java.io.File; import java.io.IOExc ...
- Gradle Maven部署,转化
参考:(易百教程)http://www.yiibai.com/gradle/gradle_deployment.html 目录: Gradle部署 Maven转化为Gradle Gradle部署: c ...
- tomcat的catalina.out日志文件过大
今天发现一个服务器的/opt目录数据过大,最后发现是tomcat中的catalina.out日志过大引起的 用du命令查看opt下一层的数据文件大小 [root@ccssapportalp opt]# ...
- JAVA NIO学习记录1-buffer和channel
什么是NIO? Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不 ...