原:看看短短几句 aardio 代码能做什么 (qq.com)
有的人说代码少你不就是库多么,你不就是库多么 …… 抱歉,aardio 开发环境加上所有的标准库体积只有几MB,你可以随便用什么编程语言可以先去找 1TB 的库再来试试。
aardio 几句代码就可以创建一个独立程序,可以发布为体积极小的独立EXE 文件(不需要依赖外部运行时), 因为 aardio 对操作系统的依赖极小( aardio 的功能主要由标准库独立实现 ),所以 aardio 生成的软件支持 WinXP,Win7,Win8,Vista,Win10,Win11 …… 你不需要担心会像 Python 那样不支持 XP,很快又不支持 Win7,将来还可能不支持 Win10 ……
在 aardio 中像下面这样的范例不计其数,几乎每个范例都是一个独立小程序,代码量都非常小,以下只是 aardio 范例中随意复制的几个小代码片段。
直接调用系统 API 函数:
import console;
//不需要声明,直接调用原生 API 函数,语法简洁可读性好。
var result = ::User32.PtInRect( ::RECT(2,3,300,500) , 12, 66 );
console.log( result );
console.pause(true);
将任何网络 API 甚至是任意普通网址声明为 aardio 对象:
import web.rest.jsonLiteClient;
var http = web.rest.jsonLiteClient();
//导入远程 API
var countApi = http.api("https://api.countapi.xyz/hit{/domain}{/key}")
//服务器 API 已经变成了 aardio 函数对象
var data = countApi["key"].get();
编译 C 语言代码生成 DLL 执行文件,再调用 DLL 中的 C 函数:
import tcc;
//编译 DLL
tcc.build( "/start.dll" ).code = /***
#include <windows.h>
__declspec(dllexport) int Add( int a,int b )
{
return a b;
}
***/
//加载 DLL
var dll = raw.loadDll( "/start.dll",,"cdecl" );
//调用 C函数
var result = dll.Add(12,3);
屏幕找字:
import mouse;
import string.ocrLite;
import string.ocrLite.defaultModels;
var ocr = string.ocrLite();
var ocrResult = ocr.detectScreen();
var x,y = ocrResult.findPoint("要查找的按钮文本",0.1);
mouse.moveTo(x,y,true);
在 aardio 中调用 Python,简单得就像在 Python 中使用 Python:
import console;
import py3;
//导入 Python 模块。
var itertools = py3.import("itertools")
//调用 Python 函数,支持纯 aardio 类型参数
var permutations = itertools.permutations({"a","b","c"});
//调用 Python 内置函数 list
var pyList = py3.list(permutations);
//遍历 Python 对象成员
for( item in pyList.each() ){
console.log(item); //像 aardio 对象一样使用 Python 对象
}
console.pause();
播放 Git 动画:
import win.ui;
/*DSG{{*/
var winform = win.form(text="GIF 动画";bgcolor=0xEDDDD8)
winform.add(
plus={cls="plus";left=0;top=0;right=760;bottom=470;repeat="scale";z=1}
)
/*}}*/
import inet.http;
winform.plus.background = "http://download.aardio.com/v10.files/demo/plus-demo.gif";
winform.show();
win.loopMessage();
调用微软 WebView2 控件截图:
import win.ui;
/*DSG{{*/
var winform = win.form(text="WebView2 网页截图";right=1108;bottom=759)
/*}}*/
import web.view;
var wb = web.view(winform,,0/*自动调试端口*/);
winform.show();
wb.go("http://www.baidu.com");
wb.wait("baidu");
import web.socket.chrome;
var ws = wb.openRemoteDebugging();
ws.Runtime.enable();//启用 Runtime.executionContextCreated
//截图
import crypt;
import process.imageView;
ws.Page.captureScreenshot().end = function(result,err){
if(result[["data"]]){
string.save("/screenshot.png",crypt.decodeBin(result[["data"]]) )
process.imageView("/screenshot.png");
}
}
win.loopMessage();
获取系统 TPM 版本信息:
import console;
import sys.tpmInfo;
var tpmInfo = sys.tpmInfo.get();
if(tpmInfo){
console.log("支持 TPM");
console.log("TPM 是否启用:",tpmInfo.enabled);
console.log("TPM 是否激活:",tpmInfo.activated);
console.log("TPM 支持版本:",tpmInfo.version)
}
else {
console.log("不支持 TPM");
}
console.pause();
查看系统安装序列号:
import com.wmi;
import win.reg;
var productKey = com.wmi.get("softwarelicensingservice","OA3xOriginalProductKey");
if(!productKey) {
productKey = win.reg.queryWow64( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform","BackupProductKeyDefault" )
}
import console;
console.log("安装序列号" ,productKey);
console.pause(true);
调用 .Net 创建 WebService:
import console;
import dotNet;
//创建应用程序域(无参数创建唯一实例,不必手动释放)
var appDomain = dotNet.appDomain();
//动态创建Web服务
var webService = appDomain.createWebService("http://fy.webxml.com.cn/webservices/EnglishChinese.asmx")
//调用WebService接口创建类
var englishChinese = webService.createInstance("EnglishChinese")
//调用WebService提供的函数
var ret = englishChinese.TranslatorString("hello" );
console.dump(ret);
console.pause();
其实不用调用 .Net ,纯 aardio 代码调用 WebService 更简单, 以前研究过 MSSOAP ,要依赖一堆 DLL 文件,不符合 aardio 的风格,所以我自己研究了一下 SOAP 协议写了个 web.soapClient , 几句代码搞定,不依赖任何外部组件:
import console;
//导入MSSOAP支持库
import web.soapClient;
//创建SOAP客户端
seviceClient = web.soapClient("http://fy.webxml.com.cn/webservices/EnglishChinese.asmx")
//调用远程Web服务提供的函数
var transArray,err = seviceClient.TranslatorString("hello");
//显示返回值
console.dump( string.join( transArray,'\r\n' ) ) ;
//按任意键继续
console.pause();
调用 PowerShell :
import console;
import process.popen;
console.showLoading(" 请稍候,正在调用 PowerShell");
var prcs = process.popen.ps(`-Command "& {Get-Command -Name *Process}"`);
var result = prcs.read(-1);
console.log(result);
console.pause();
也可以调用 .Net 然后调用 PowerShell :
import console;
import dotNet.ps;
console.showLoading(" 正在执行PowerShell命令");
console.log(dotNet.ps.command("Get-Command",{Name="*Process"}));
console.pause();
在 aardio 中嵌入并调用批处理:
import console
import process.batch;
//批处理 for 遍历并拆分字符串
var bat = process.batch(`
@echo off
for %%i in (abc,def,xyz) do echo %%i
`)
console.log(bat.read(-1))
console.pause()
调用命令行,并自动触发 Ctrl C
import console
import process.popen
var prcs = process.popen("ping 127.0.0.1 -n 10 ")
for( all,out,err in prcs.each() ){
console.log( out,err );
prcs.ctrlEvent(0);
}
console.pause();
调用 Rust 语言解析 TOML
import console;
import string.toml;
var str = string.toml.stringify({abc=123,d={1,2,3}});
console.log( str );
import process.code;
process.code("~\lib\string\toml\.res");
console.pause(true);
在 aardio 里嵌入 PHP,以下短短几句代码,包含了 HTTP 服务器,PHP服务端,嵌入的浏览器组件:
import win.ui;
/*DSG{{*/
var winform = win.form(text="Hello World / PHP_CGI 服务器")
/*}}*/
var code = /*
<html>
<head>
<meta charset="utf-8">
<title>PHP 测试</title>
</head>
<body>
<?php echo '<p>Hello World / PHP_CGI 服务器</p>'; ?>
</body>
</html>
*/
string.save("/test.php",code);
import php.simpleHttpServer;
var url = php.simpleHttpServer.startUrl("/test.php");
import web.form;
var wb = web.form(winform);
wb.go(url);
winform.show();
win.loopMessage();
执行 Ruby 语言代码:
import win.ui;
/*DSG{{*/
var winform = win.form(text="执行Ruby代码")
winform.add(
edit={cls="edit";left=26;top=16;right=737;bottom=435;multiline=1;z=1}
)
/*}}*/
import process.ruby;
var out = process.ruby.exec("puts '测试UTF-8'")
winform.edit.print(out);
var out = process.ruby.eval(`[1, 2, { name: "tanaka", age: 19 }]`)
winform.edit.print(out);
winform.show();
win.loopMessage();
主题数 170 | 今日评论 0 | 今日主题 0 |