使用aardio(快手)编程
一 快手簡(jiǎn)介
AAuto編程語(yǔ)言
AAuto是專(zhuān)用于桌面軟件快速開(kāi)發(fā)的新一代混合型編程語(yǔ)言 - ?具有動(dòng)態(tài)語(yǔ)言輕便、靈活、快速開(kāi)發(fā)的特性,而且又可以同時(shí)支持靜態(tài)類(lèi)型開(kāi)發(fā),象靜態(tài)語(yǔ)言那樣使用。AAuto可以直接支持原生DLL,即使是外部EXE進(jìn)程中的函數(shù),也可以使用一句代碼聲明為普通的AAuto函數(shù)對(duì)象( 原生call支持 ),AAuto支持非常多的標(biāo)準(zhǔn)調(diào)用約定,例如 stdcall,cdecl,thiscall,fastcall,regparm(n) ?等調(diào)用約定都可以支持。AAuto雖然小,但支持的接口很豐富、可以支持com靜態(tài)動(dòng)態(tài)雙接口,象VBS一樣原生支持com對(duì)象。
用一個(gè)簡(jiǎn)單的代碼演示一下,下面的AAuto代碼定義了一個(gè)結(jié)構(gòu)體:
//定義類(lèi)
class POINT {
? ? int x; int y; //靜態(tài)類(lèi)型 ? ?
? ? func = function(){ ?
? ? ? ? //動(dòng)態(tài)類(lèi)型 ?
? ? } ?
}
這種全新的混合編程語(yǔ)言開(kāi)創(chuàng)了一種全新的編程方式,也因?yàn)檫@種語(yǔ)言特性,AAuto可以非常方便的嵌入各種第三方語(yǔ)言,目前AAuto可以嵌入?yún)R編機(jī)器碼,C語(yǔ)言,Java,PHP,C#,Python,Javascript,VBScript......等等數(shù)量眾多的第三方編程語(yǔ)言,方便的互調(diào)函數(shù),并且這些調(diào)用第三方語(yǔ)言的功能模塊都是使用AAuto實(shí)現(xiàn)( 開(kāi)放源碼 )。混合型語(yǔ)言讓我們可以體驗(yàn)到激動(dòng)人心的全新編程方式。
AAuto可以將硬盤(pán)目錄,硬盤(pán)文件一鍵嵌入EXE文件,將全部程序包含所有資源生成獨(dú)立的綠色EXE文件,所有文件讀寫(xiě)的相關(guān)函數(shù)自動(dòng)支持,無(wú)需更改代碼,AAuto制作的程序不需要安裝程序,也不需要釋放DLL運(yùn)行庫(kù),AAuto制作的程序都是免安裝綠色軟件。
AAuto屬于類(lèi)C系語(yǔ)言、并且可以自定義一套自己的語(yǔ)法。AAuto在語(yǔ)法風(fēng)格接近流行類(lèi)C系語(yǔ)言。有其他語(yǔ)言基礎(chǔ)的可以輕松上手,學(xué)習(xí)AAuto以后學(xué)習(xí)其他編程語(yǔ)言更可事倍功半。
AAuto支持多線(xiàn)程開(kāi)發(fā),復(fù)雜的多線(xiàn)程開(kāi)發(fā)在AAuto中變得非常簡(jiǎn)單,標(biāo)準(zhǔn)庫(kù)也提供大量簡(jiǎn)化多線(xiàn)程開(kāi)發(fā)的輔助支持庫(kù),為多線(xiàn)程軟件開(kāi)發(fā)帶來(lái)很大的方便(請(qǐng)參考快手范例 -> 多線(xiàn)程 )。
AAuto的標(biāo)準(zhǔn)庫(kù)基本使用純AAuto源碼實(shí)現(xiàn),并且全部開(kāi)源,標(biāo)準(zhǔn)庫(kù)提供了大量的簡(jiǎn)化編程的常用函數(shù),涉及到軟件開(kāi)發(fā)的方方面面,極大的簡(jiǎn)化了桌面軟件開(kāi)發(fā)過(guò)程。
2軟件界面快速開(kāi)發(fā)
AAuto提供web.form支持庫(kù)( 開(kāi)源 ),可以創(chuàng)建web窗體加載網(wǎng)頁(yè)創(chuàng)建web風(fēng)格的軟件界面,網(wǎng)頁(yè)與本機(jī)代碼可以直接交互,在快手工程向?qū)Ю?#xff0c;就提供了 WEB UI 的模板。在使用web窗體時(shí),你能感受到AAuto這種混合語(yǔ)言帶來(lái)的巨大方便,較之傳統(tǒng)編程語(yǔ)言,AAuto 可以更快更加方便的創(chuàng)建 WEB UI 程序,在AAuto自帶的范例中,就有一個(gè)多窗口瀏覽器的范例,僅僅使用了一頁(yè)300行源碼就實(shí)現(xiàn)了一個(gè)功能較完整的多窗口網(wǎng)頁(yè)瀏覽器,可以看出使用AAuto極大的簡(jiǎn)化了Web相關(guān)開(kāi)發(fā)技術(shù)。
另外,AAuto提供了web.layout支持庫(kù),封裝了輕量快速的界面引擎HTMLayout,可以使用傳統(tǒng)的HTML,CSS技術(shù),更加方便的實(shí)現(xiàn)漂亮的界面,而且運(yùn)行,響應(yīng)速度極快,官方也提供了大量HTMLayout的范例與教程。
當(dāng)然,使用AAuto開(kāi)發(fā)傳統(tǒng)界面也非常的方便,AAuto提供可視化開(kāi)發(fā)工具,可以象VB一樣(實(shí)際上比VB更簡(jiǎn)單)的通過(guò)拖拉控件創(chuàng)建程序。
3快手 - AAuto集成開(kāi)發(fā)環(huán)境
快手( AAuto集成開(kāi)發(fā)環(huán)境)[1]下載壓縮包僅 6.x MB, 綠色軟件解壓即用 - 無(wú)論個(gè)人或企業(yè)都可以永久免費(fèi)使用本軟件。快手內(nèi)置AAuto標(biāo)準(zhǔn)庫(kù),以及大量范例全部開(kāi)源。AAuto用戶(hù)可以自由使用無(wú)需付費(fèi),使用AAuto制作的軟件產(chǎn)品不需要聲明使用AAuto開(kāi)發(fā),免費(fèi)使用AAuto無(wú)任何附加條件。
二 使用
<一> 入門(mén)
1 下載,解壓
2 界面
3 新建一個(gè)桌面工程
4 界面設(shè)計(jì)
5 生成exe
6 自動(dòng)生成的代碼和自己添加的代碼
button的事件函數(shù)中的一句是自己添加的,其他為自動(dòng)生成;
? ? 經(jīng)過(guò)以上步驟;生成了一個(gè)窗口界面的可直接運(yùn)行的exe。
<二> 調(diào)用C語(yǔ)言的DLL
在快手的論壇中找一段示例代碼,加入上面的demo1中;
import tcc;?
vm = tcc( );//創(chuàng)建TCC編譯器?
vm.addLib( "user32","kernel32","gdi32" ) //引用庫(kù)?
vm.output( "/bin.dll", code ) //編譯C源碼,生成DLL
vm.close(); //收工
//加載生成的DLL
var dll = raw.loadDll( "/bin.dll",, "cdecl" );//第三個(gè)參數(shù)指定C語(yǔ)言調(diào)用約定:cdecl
//聲明API函數(shù)
Msgbox = dll.api( "Msgbox","int(string str)");?
Msgbox( "C語(yǔ)言你好!" );?
//不聲明也可以直接調(diào)用API函數(shù),如下:
dll.Msgbox( "C語(yǔ)言你好!" );?
看上去是一段調(diào)用Win32 api的MessageBox的代碼;
運(yùn)行;提示安裝tcc擴(kuò)展庫(kù);
裝完之后,運(yùn)行代碼;沒(méi)有預(yù)期結(jié)果;看來(lái)此段代碼調(diào)用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();//打開(kāi)控制臺(tái)
messageBox := User32.api( "MessageBoxA", " void ( int hWnd, string lpText,string lpCaption ,INT uType )","stdcall");//最后一個(gè)參數(shù)可以省略
messageBox( 0, "這是一個(gè)測(cè)試對(duì)話(huà)框", "對(duì)話(huà)框標(biāo)題", 0x00001000 );
加入demo1;運(yùn)行;出現(xiàn)下圖;控制臺(tái)打開(kāi)了;消息框也出現(xiàn)了;看來(lái)確實(shí)可直接調(diào)用C的DLL和Win32 api; 不過(guò)可能文字編碼有點(diǎn)問(wèn)題;
到此為止看上去此工具確實(shí)還不錯(cuò);
再看此工具帶了很多標(biāo)準(zhǔn)庫(kù)可調(diào)用;看上去功能還是很強(qiáng);
以后有時(shí)間繼續(xù)研究;
總結(jié)
以上是生活随笔為你收集整理的使用aardio(快手)编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网站攻防学习总结
- 下一篇: 百度地图API开发概述