一 快手简介

AAuto编程语言
AAuto是专用于桌面软件快速开发的新一代混合型编程语言 -  具有动态语言轻便、灵活、快速开发的特性,而且又可以同时支持静态类型开发,象静态语言那样使用。AAuto可以直接支持原生DLL,即使是外部EXE进程中的函数,也可以使用一句代码声明为普通的AAuto函数对象( 原生call支持 ),AAuto支持非常多的标准调用约定,例如 stdcall,cdecl,thiscall,fastcall,regparm(n)  等调用约定都可以支持。AAuto虽然小,但支持的接口很丰富、可以支持com静态动态双接口,象VBS一样原生支持com对象。
用一个简单的代码演示一下,下面的AAuto代码定义了一个结构体:

//定义类 
class POINT { 
    int x; int y; //静态类型    
    func = function(){  
        //动态类型  
    }  
}
这种全新的混合编程语言开创了一种全新的编程方式,也因为这种语言特性,AAuto可以非常方便的嵌入各种第三方语言,目前AAuto可以嵌入汇编机器码,C语言,Java,PHP,C#,Python,Javascript,VBScript......等等数量众多的第三方编程语言,方便的互调函数,并且这些调用第三方语言的功能模块都是使用AAuto实现( 开放源码 )。混合型语言让我们可以体验到激动人心的全新编程方式。
AAuto可以将硬盘目录,硬盘文件一键嵌入EXE文件,将全部程序包含所有资源生成独立的绿色EXE文件,所有文件读写的相关函数自动支持,无需更改代码,AAuto制作的程序不需要安装程序,也不需要释放DLL运行库,AAuto制作的程序都是免安装绿色软件。
AAuto属于类C系语言、并且可以自定义一套自己的语法。AAuto在语法风格接近流行类C系语言。有其他语言基础的可以轻松上手,学习AAuto以后学习其他编程语言更可事倍功半。
AAuto支持多线程开发,复杂的多线程开发在AAuto中变得非常简单,标准库也提供大量简化多线程开发的辅助支持库,为多线程软件开发带来很大的方便(请参考快手范例 -> 多线程 )。
AAuto的标准库基本使用纯AAuto源码实现,并且全部开源,标准库提供了大量的简化编程的常用函数,涉及到软件开发的方方面面,极大的简化了桌面软件开发过程。
2软件界面快速开发
AAuto提供web.form支持库( 开源 ),可以创建web窗体加载网页创建web风格的软件界面,网页与本机代码可以直接交互,在快手工程向导里,就提供了 WEB UI 的模板。在使用web窗体时,你能感受到AAuto这种混合语言带来的巨大方便,较之传统编程语言,AAuto 可以更快更加方便的创建 WEB UI 程序,在AAuto自带的范例中,就有一个多窗口浏览器的范例,仅仅使用了一页300行源码就实现了一个功能较完整的多窗口网页浏览器,可以看出使用AAuto极大的简化了Web相关开发技术。
另外,AAuto提供了web.layout支持库,封装了轻量快速的界面引擎HTMLayout,可以使用传统的HTML,CSS技术,更加方便的实现漂亮的界面,而且运行,响应速度极快,官方也提供了大量HTMLayout的范例与教程。
当然,使用AAuto开发传统界面也非常的方便,AAuto提供可视化开发工具,可以象VB一样(实际上比VB更简单)的通过拖拉控件创建程序。
3快手 - AAuto集成开发环境
快手( AAuto集成开发环境)[1]下载压缩包仅 6.x MB, 绿色软件解压即用 - 无论个人或企业都可以永久免费使用本软件。快手内置AAuto标准库,以及大量范例全部开源。AAuto用户可以自由使用无需付费,使用AAuto制作的软件产品不需要声明使用AAuto开发,免费使用AAuto无任何附加条件。


二 使用

<一> 入门

1 下载,解压

2 界面


3 新建一个桌面工程


4 界面设计


5 生成exe


6 自动生成的代码和自己添加的代码

button的事件函数中的一句是自己添加的,其他为自动生成;



    经过以上步骤;生成了一个窗口界面的可直接运行的exe。

<二> 调用C语言的DLL

在快手的论坛中找一段示例代码,加入上面的demo1中;

import tcc; 
vm = tcc( );//创建TCC编译器 
vm.addLib( "user32","kernel32","gdi32" ) //引用库 
vm.output( "/bin.dll", code ) //编译C源码,生成DLL
vm.close(); //收工

//加载生成的DLL
var dll = raw.loadDll( "/bin.dll",, "cdecl" );//第三个参数指定C语言调用约定:cdecl

//声明API函数
Msgbox = dll.api( "Msgbox","int(string str)"); 
Msgbox( "C语言你好!" ); 

//不声明也可以直接调用API函数,如下:
dll.Msgbox( "C语言你好!" ); 

看上去是一段调用Win32 api的MessageBox的代码;


运行;提示安装tcc扩展库;


装完之后,运行代码;没有预期结果;看来此段代码调用win32 api不行;


在快手的帮助中找了一段代码;

User32 := raw.loadDll("User32.dll");

User32@._api_origin := User32@.api; //修改元表中的定义的方法
User32@.api = function(f,p,c){
    io.print(f,p,c);
    return owner._api_origin(f,p,c);
}

io.open();//打开控制台
messageBox := User32.api( "MessageBoxA", " void ( int hWnd, string lpText,string lpCaption ,INT uType )","stdcall");//最后一个参数可以省略
messageBox( 0, "这是一个测试对话框", "对话框标题", 0x00001000 );


加入demo1;运行;出现下图;控制台打开了;消息框也出现了;看来确实可直接调用C的DLL和Win32 api; 不过可能文字编码有点问题;

到此为止看上去此工具确实还不错;


再看此工具带了很多标准库可调用;看上去功能还是很强;

以后有时间继续研究;



更多推荐

使用aardio(快手)编程