ljtnine 发表于 2012-11-9 13:11

AAuto编程语言简介

AAuto编程语言

  AAuto是专用于桌面软件快速开发的新一代混合型编程语言, 兼具动态、静态语言优势,语法更可兼容大部分流行语言,学习成本低,开发速度快,并永久免费。
  AAuto是一种动态语言,但是同时支持静态类型开发,下面的代码定义了一个结构体,在这个结构体中可以象静态语言一样使用静态类型,又可以象动态语言一样使用动态类型;

//定义类  
class POINT {  
    int x; int y; //静态类型  
    func = function(){  
      //动态类型  
    }  
}
  这种全新的混合编程语言开创了一种全新的编程方式,AAuto拥有动态语言轻便、灵活、快速开发的特性,同时又可以象静态语言一样强大,直接支持原生DLL,方便的声明API函数,并且可以将AAuto的函数对象转换为C语言兼容的函数指针,即使是外部EXE进程中的函数,也可以使用一句代码声明为普通的AAuto函数对象( 原生call支持 )。
  AAuto虽然小,但是支持的接口很丰富,可支持标准DLL的stdcall,cdecl,thiscall等调用约定,可以支持C++导出的类对象,可以支持com静态动态双接口,象VBS一样原生支持com对象。
  AAuto还可以直接嵌入汇编机器码,C语言,Java,PHP,C#,Python,Javascript,VBScript......等等数量众多的第三方编程语言,方便的互调函数,并且这些调用第三方语言的功能模块都是使用AAuto实现,并且开放源码。混合型语言让我们可以体验到激动人心的全新编程方式。
  AAuto可以将硬盘目录,硬盘文件一键嵌入EXE文件,将全部程序包含所有资源生成独立的绿色EXE文件,所有文件读写的相关函数自动支持,无需更改代码,AAuto制作的程序不需要安装程序,也不需要释放DLL运行库,AAuto制作的程序都是免安装绿色软件。
  AAuto语法优美,最大兼容流行的C系,Pascal语法,并且可以自定义一套自己的语法。有其他语言基础的可以轻松上手,学习AAuto以后学习其他编程语言更可事半功倍,AAuto不象其他的一些编程语言,在语法风格,函数命名上都保持了良好的兼容性、通用性。
  AAuto原生支持多线程开发,复杂的多线程开发在AAuto中变得非常简单,AAuto所有对象先天线程安全,自动解决所有并发问题,标准库提供大量简化多线程开发的辅助支持库。例如 thread.command 实现的线程命令订阅模式,为多线程软件开发带来很大的方便。
  AAuto的标准库基本使用纯AAuto源码实现,并且全部开源,标准库提供了大量的简化编程的常用函数,涉及到软件开发的方方面面,极大的简化了桌面软件开发过程。

软件界面快速开发

  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更简单)的通过拖拉控件创建程序。

快手 - AAuto集成开发环境

  快手是用于AAuto程序开发的可视化集成开发环境(IDE)。 面向个人或企业用户,商业或非商业应用,本软件永久免费。快手内置AAuto标准库,以及大量范例全部开源。AAuto用户可以自由使用无需付费,使用AAuto制作的软件产品不需要声明使用AAuto开发,免费使用AAuto无任何附加条件。


AAuto发布两年以来,
创建的EXE文件保持通过全世界37款主流杀毒软件的安全检测无病毒,无误报。




快手(AAuto) 是360软件宝库推荐的安全放心软件,
并且是编程开发类精选推荐软件中唯一入选的国产开发工具:




AAuto官方网站:http://www.aau.cn/


ljtnine 发表于 2012-11-9 13:12


部份用户评价供参考:

lujjh
说心里话,快手(AAuto)的确是一个我非常喜欢的编程语言。倒也并不仅仅是因为它出于国人之手,即便是同国外其他编程语言放在同一水平线上比,快手依然有它的优势,有它的闪光点。这让我想起了国内编程界的两类极端人物:一类拼命为国产编程语言说好话,把编程语言的选择硬是扯到了爱国层面;另一类人则背道而驰,有着“国外月亮圆”的思想,只要是国人的东西,骂了再说。
这两类人,当然是两个极端,显然不妥。另有人将快手与C、C++,甚至与汇编相比较,由诸如快手生成空白窗体的EXE文件比C++大而得出结论——快手不及C++。这样的比较是毫无意义的,这些编程语言的设计意图不同,面向的人群也不同,这样盲目比较就好比说,吃米饭比喝白开水更容易填饱肚子,所以米饭比白开水好。快手,为快速开发桌面软件而生,花费了作者很多年的心血。那么,是否如同它的名字一般,开发桌面软件非常快呢?至少,我用下来的感觉是肯定的,这也是我写这份教程的原因之一。
如果你是一名彻头彻尾的快手初学者,并且之前从来没有听说过快手,那么恭喜你,因为你今天发现了一个宝盒。如果你愿意花费几个月的时间打开这个宝盒,你将会收获无数的宝藏。快手,为快速开发桌面软件而生(我预计很少有人会认真对待前言,在此特地重复一下这句话)。换言之,用快手开发小型桌面软件的效率是绝对一流的,不信就跟着我一起学下去,你会体验到快手的魅力所在。快手,追求简洁。不知大家是否听说过KISS(Keep It Simple, Stupid) 这个理念,就目前而言,快手的发行包在压缩后不到7M,并且是不折不扣的免安装绿色软件。
笑问天
十多年来,我不曾写出有用的小程序,悲哀我今生无用、与编程无缘;仅几个月,快手让我写出几个好应用,感叹快手的强大、我也有能耐;我也有成就了,谁会与我一同享受这份喜悦与快乐?我感谢一鹤,感谢他无私的奉献、不懈的追求!我感谢快手,感谢它灵活而强大、强悍而精炼!我感谢群里、论坛里的兄弟姐妹们,我从你们的帖子吸收了营养,我从你们的帮助学到了许多东西。我爱你们,爱这里的一切!
漂泊的心
努力学习!体积小巧,纯绿色,全免费的快手的出世是电脑爱好者的福音!      我现在学会了2种(完全理解,并能熟练运用)1:找图2:web登陆在此得瑟一下,并借此机会向老大报喜,向老大致敬!      学会的知识以个人日志的形式记录下来!
我是老废
是快手帮助我在30多岁的时候终于赚到一点钱不说别的,只要快手需要,我什么都愿意做但是,本人比较懒,学习方面真的很差只是做些简单的应用,惭愧啊
zero
以前的时候我对编程其实并没有什么自己的心得,甚至觉得也许自己并不太适合编程而最近,接触快手到今天刚好3周,第一周学习,这两周写程序,我发现原来感觉很复杂的东西,在这两周的编写中变得非常顺畅,脑子里面的思路也似乎一下子就拓宽了很多,我是一个快手新手,这两周总会在论坛里面求助,真的非常感谢look,笑问天,xauto对我的问题的解答,对我帮助很大。实现想要的功能所带给我的成就感让我非常享受,感谢快手,感谢一鹤老大
赜氏
快手让我解决了10几年来一直没能解决的问题。高效!易懂易学。谢谢老大
cbtan
2010年8月份的时候在QQ 邮件中,看到一封标题是“有了VB,VC,我为什么要选择AAuto语言” 的文章,很认真的看完之后,埋葬在自己心底多年的编程梦,一口气的蹦了过去!其实我很好奇,感觉那些程序员很神秘,写的代码很英文,而我又喜欢电脑知识............玩快手都到现在 7月份都快有 10个月了,时间过的真快!现在白天还是上班,晚上网络上的朋友有单做的话,我就做呗!我也就是从5月份才开始在网络做点事,这几个月每月平均除了工资也有网络的收入,我也只是晚上做几小时,感觉真好!想当年,我学 “快手” 纯粹是自己的兴趣而学,我还真没想到半年后能帮助到我的生活!突然想起那句话--------快手,只有想不到,没有做不到!
qhxn1231
我看过其他的语言一直看不懂,若干年。今年我又看有什么语言能学习,AAUTO让我很快入门。至少知道,每天在进步。
qq__147
初识快手,是两年前的事了。当时正在找一个自动按鼠标的工具,偶然接触到了快手,即为它的永久免费和开源所折服。两年过去了,自己用来做了几个小工具自已用,能减轻自己的工作量。本人非软件专业出身,只能用点简单的功能,未及快手强大功能的万分之一。经过快手作者及快手支持者们的努力,快手也本升级到现在的V2.3.4,功能更加强大了。需快速开发桌面软件者选择它绝不会后悔!
jyb21
这是一门唯一让我能够静下心来学习的语言,也愿意潜心学习的语言,而且完全是自学,我从来没想到自学也可以学会一门编程语言,毕竟大学毕业都10来年了,学的又不是计算机专业。我已经通过自学写了不少小软件了,这是其中一

ljtnine 发表于 2012-11-9 13:13

AAuto 自绘 listbox,三下五除二
http://www.aau.cn/data/attachment/forum/201101/09/223523xzm2c8754zpmxp91.gif

import win.ui;
import win.graphics;
/*DSG{{*/
var winform = win.form(parent=...; bottom=344;text="AAuto Form";border="resizable";right=472 )
winform.add(
listbox={ dr=1;dl=1;bgcolor=16777215;vscroll=1;right=458;left=12;dt=1;db=1;cls="listbox";bottom=332;text="listbox";
items={};font=LOGFONT( name="宋体";h=-12 );style=0x20/*_LBS_OWNERDRAWVARIABLE*/|0x40/*_LBS_HASSTRINGS*/;z=1;top=11 }
)
/*}}*/

winform.wndproc = function (hwnd,message,wparam,lparam){
    select(message) {
      case 0x2C/*_WM_MEASUREITEM*/ {
            var m = ::MEASUREITEMSTRUCT();
            raw.convert(topointer(lparam), m);
            m.itemHeight = 51; // 每个 Item 高 51 个像素
            ::CopyMemoryByStruct(topointer(lparam), m, raw.sizeof(m));
      }
      case 0x2B/*_WM_DRAWITEM*/ {
            var ds = ::DRAWITEMSTRUCT();
            raw.convert(topointer(lparam), ds);
            if (ds.hwndItem == winform.listbox.hwnd) {
                var cvs = win.graphics.canvas(); // 创建一个画布
                cvs.fromHDC(ds.hDC); // 传入 hDC
                cvs.brush.color = 0xffffff; // 定义刷子颜色
                cvs.fillRect(ds.rcItem);
                if (ds.itemID > 0) { // 除了第一个 Item,其他的都画线
                  cvs.pen.color = 0xebebeb; // 定义画笔的颜色
                  cvs.moveTo(ds.rcItem.left, ds.rcItem.top); // 想像画画的过程,落笔
                  cvs.lineTo(ds.rcItem.right, ds.rcItem.top); // 提笔
                }
                if (ds.itemState & 0x1/*_ODS_SELECTED*/) { // 选中 Item 的绘制
                  cvs.brush.color = 0xaeebff;
                  cvs.frameRect(ds.rcItem); // 边框
                  var rect = ::RECT(ds.rcItem.left + 1, ds.rcItem.top + 1, ds.rcItem.right - 1, ds.rcItem.bottom - 1);
                  // 结构体在 AAuto 中传递的是内存地址,所以重新构造一个 ::RECT
                  cvs.brush.color = 0xedfcff;
                  cvs.frameRect(rect); // 内边框
                  rect.left++; rect.top++; rect.right--; rect.bottom--;
                  cvs.gradientFill(rect, 0xddf8fe, 0xb7edff, 0x1/*_GRADIENT_FILL_RECT_V*/);
                }
                var data = string.split(winform.listbox.getItemText(ds.itemID + 1), "|");
                if (#data == 2) {
                  cvs.font.bold = true; // 粗体
                  cvs.font.color = 0x000000; // 颜色
                  cvs.textOut(ds.rcItem.left + 18, ds.rcItem.top + 10, data);
                  cvs.font.bold = false;
                  cvs.font.color = 0x666666;
                  cvs.textOut(ds.rcItem.left + 18, ds.rcItem.top + 26, data);
                }
                cvs.destroy();
            }
            return 1;
      }
    }
}

winform.listbox.add("腾讯QQ|一款及时聊天软件");
winform.listbox.add("Microsoft Office|一款办公套装");

winform.show();
win.loopMessage();

ljtnine 发表于 2012-11-9 13:14


示例:快盘API AAuto支持库

import console;
import kpan;

//创建快盘客户端
var kpClient = kpan.client(
    appKey = "请在这里输入快盘开放平台申请的 consumer_key ";
    appSecret = "请在这里输入快盘开放平台申请的 consumer_Secret "
);

//oAuth登录快盘
var token,err,err2 = kpClient.oAuth.authorise(

    function( authoriseUrl ){
         
      //使用Web窗体打开 authoriseUrl 让用户登录即可
      import win.ui;
      import web.form;
         
      var winform = ..win.form( bottom=541;scroll=1;text="快盘账号登录";right=843 )
      var wb = web.form( winform);
         
      wb.go( authoriseUrl )
      winform.show()
         
      var ele = wb.waitQueryEles(innerHTML="授权码";tagName="DIV");
      if( ele ){ };
         
      winform.close();
      win.loopMessage();
   }
)

if( !token ){
    console.log("登录失败",err,err2 )
    return;
}

//显示用户信息
var accountInfo = kpClient.oAuth.getAccountInfo();
console.varDump( kpClient.oAuth.getAccountInfo() )

//定义上传函数
upload = function(localPath,remotePath){
    var uploadUrl = kpClient.getUploadUrl(remotePath);
    if( uploadUrl ){
      var formdata = ..web.uploadData("","file",localPath);
      return kpClient.session.post(uploadUrl, formdata.data ,formdata.header )
    }   
}

//定义下载函数
download = function(remotePath,localPath){
   var downloadUrl = kpClient.getDownloadUrl(remotePath);
   if( downloadUrl ){
         var data = kpClient.session.get(downloadUrl);
         if( data ){
             string.save( localPath,data )
             return true;
         }
   }
}

//创建目录
var ret = kpClient.createFolder("test/abc")

//创建一个测试文件
string.save("/test.txt","测试文件" )

//测试上传
var ret = upload("/test.txt","/test/test123.txt");

//测试下载
download( "/test/test123.txt","/download.txt" )

ljtnine 发表于 2012-11-9 13:15


AAuto + FastCGI 开发web服务端程序
http://www.aau.cn/thread-8213-1-1.html

http://www.aau.cn/data/attachment/forum/201209/25/231257z7e3x4avvgei0z03.png

精仿360界面
http://www.aau.cn/thread-8528-1-1.html

http://www.aau.cn/data/attachment/forum/201211/05/143847c00d8tca0e6teew0.jpg

ljtnine 发表于 2012-11-9 13:16


桌面宠物虎鲸
http://www.aau.cn/thread-8485-1-1.html

/**
桌面虎鲸
Author: hai321
参考资料:
[源码分享] HTMLayout 使用APNG制作桌面透明动画窗口<a >http://www.aau.cn/thread-7922-1-1.html</a>
**/

import win.ui;
import winex;
/*DSG{{*/
winform = ..win.form( text="虎鲸";bottom=170;parent=...;right=297;border="none";topmost=1;exmode="toolwindow";mode="popup";cls="hujing" )
winform.add()
/*}}*/

//启用分层窗口
winform.modifyStyleEx(,0x80000/*_WS_EX_LAYERED*/)
import web.layout;
wbLayout = web.layout(winform);


wbLayout.html =/***
<div id="myTab"><img src="/res/daddy-left.png"/></div>
<menu.context id="menuId">
<li>桌面图标
   <menu>
      <li id="i1">隐藏图标</li>
      <li id="i2">显示图标</li>
   </menu>
</li>
<li>选择鲸鱼
   <menu>
   <li id="i5">鲸鱼爸爸</li>
   <li id="i6">鲸鱼妈妈</li>
   <li id="i6">鲸鱼宝宝</li>
   </menu>
</li>
   <li id="i7">关于虎鲸</li>
   <li id="i8">退出</li>
</menu>
***/


wbLayout.css = /**
html {   
    background-color:transparent; /*网页背景透明*/
    context-menu:selector(menu#menuId);
}
menu{
    width: max-intrinsic; /*内容的最大宽度,可以超出屏幕*/      
    background: url(/res/menu-back-office.png) expand;
    background-position: 0 0 0 24;
    text-align:left;
}
**/

//修改节点代码
xghtml=function(){
    if( thread.get("我是") = "爸爸"){
      var myTab = wbLayout.getEle("myTab")//获取节点
      if(myTab){
            if(向左游动 = false){
                myTab.child(1).innerHTML = '<img src="/res/daddy-right.png" />'
            }else {
                myTab.child(1).innerHTML = '<img src="/res/daddy-left.png" />'
            }   
      }
    }   
    elseif( thread.get("我是") = "妈妈"){
      var myTab = wbLayout.getEle("myTab")//获取节点
      if(myTab){
            if(向左游动 = false){
                myTab.child(1).innerHTML = '<img src="/res/mummy-right.png" />'
            }else {
                myTab.child(1).innerHTML = '<img src="/res/mummy-left.png" />'
            }   
      }
    }
    elseif( thread.get("我是") = "宝宝"){
      var myTab = wbLayout.getEle("myTab")//获取节点
      if(myTab){
            if(向左游动 = false){
                myTab.child(1).innerHTML = '<img src="/res/son-right.png" />'
            }else {
                myTab.child(1).innerHTML = '<img src="/res/son-left.png" />'
            }   
      }
    }
    是否游动 = true;
    winform.settimer(tmid,15);//修改定时器
}

wbLayout.documentElement.attachEventHandler(
    //鼠标按下拖动触发下面的函数
    onMouseMove = function (ltTarget,ltEle,x,y,ltMouseParams) {
      if( ltMouseParams.button_state == 1/*_HL_MAIN_MOUSE_BUTTON*/ ){
            是否游动 = false;
            winform.settimer(tmid,5000)
            var wx,wy = winform.getPos();
            wx = wx + (x - winform.downPos.x)
            wy = wy + (y - winform.downPos.y)
            ltTarget.getForm().setPos( wx,wy)
            return true;
      }
    }   
    //鼠标按下触发下面的函数
    onMouseDown = function (ltTarget,ltEle,x,y,ltMouseParams) {
      if( ltMouseParams.button_state == 1/*_HL_MAIN_MOUSE_BUTTON*/ ){
            是否游动 = false      
            winform.settimer(tmid,1000000)//定时器暂停3秒等待退出等命令
            winform.capture = true;
            winform.downPos = { x = x ;y = y}      
      }
      elseif(ltMouseParams.button_state==2){
            是否游动 = false            
            winform.settimer(tmid,1000000)//定时器暂停3秒等待退出等命令
            winform.capture = true;
            winform.downPos = { x = x ;y = y}         
      }         
    }
    //鼠标弹起触发下面的函数
    onMouseUp = function (ltTarget,ltEle,x,y,ltMouseParams) {      
      if( ltMouseParams.button_state == 1/*_HL_MAIN_MOUSE_BUTTON*/ ){
            winform.settimer(tmid,15);//修改定时器
             是否游动 = true;            
      }
    }
)

//桌面句柄
var hDskManager,hShellView = winex.findExists("Program Manager",,"Progman","SHELLDLL_DefView")

//右键菜单触发下面的函数
wbLayout.onMenuItemClick = function (ltTarget,ltEle,reason,behaviorParams) {
    是否游动 = false;   
   if( ltTarget.innerText == "退出" ){   
      win.show(hShellView,true);//退出前显示桌面图标      
       winform.close();
   }
   elseif(ltTarget.innerText == "隐藏图标"){
      win.show(hShellView,false);//隐藏桌面图标
      winform.settimer(tmid,15);//修改定时器
         是否游动 = true;
   }
   elseif(ltTarget.innerText == "显示图标"){
      win.show(hShellView,true);//显示桌面图标
      winform.settimer(tmid,15);//修改定时器
         是否游动 = true;
   }
   elseif( ltTarget.innerText == "鲸鱼爸爸" ){
      thread.set("我是","爸爸" )
      xghtml();//修改代码         
   }
   elseif( ltTarget.innerText == "鲸鱼妈妈" ){
      thread.set("我是","妈妈" )
      xghtml();//修改代码         
   }
   elseif( ltTarget.innerText == "鲸鱼宝宝" ){
      thread.set("我是","宝宝" )
      xghtml();//修改代码
   }
   elseif( ltTarget.innerText == "关于虎鲸" ){
      import process
      process.execute("http://baike.baidu.com/view/9005.htm")
      winform.settimer(tmid,15);//修改定时器
      是否游动 = true;
   }   
}

//默认设置
横位置,纵位置 = win.getScreen();//取系统分辨率
var hwnd = winform.hwnd;
win.setPos(hwnd,横位置-200,200);//起始位置
winform.show()
math.randomize()
num = 1;
r = 0;
thread.set("我是","爸爸" )
向左游动 = true; //向左移动
是否游动 = true; //开始时游动

//随机向上向下平行游动
randmove=function(tmid,xnum){                                       
    if(num>200 and cy<纵位置 and cy>0 ){//在屏幕内游动200次后,随机改变方向
      r = math.random(-1,1);
      num = 1;
    }
    elseif(cy>纵位置+20){//游动超出屏幕下方时改为向上游动
      r=-1
    }
    elseif(cy<-20){//游动超出屏幕上方时改为向下游动
      r=1
    }
    num =num+ 1;                     
    if(r=0){//直线游动时减慢速度
      winform.settimer(tmid,25)                     
    }
    else{//加快速度
      winform.settimer(tmid,15)
    }                  
    win.setPos(hwnd,cx+xnum,cy+r)   
}

//向左移动
left=function(tmid){
    cx,cy = win.getPos(hwnd,true)      
    if(cx>-240){//未超出屏幕左边时,随机游动
      xnum=-1
      randmove(tmid,xnum)//随机游动
    }               
    else {         
      向左游动 = false;;//调用向右移动;
      xghtml();//修改代码
    }   
}

//向右移动
right=function(tmid){
    cx,cy = win.getPos(hwnd,true)               
    if(cx<横位置){//未超出屏幕右边时,随机游动
      xnum=1
      randmove(tmid2,xnum);//随机游动
    }
    else {      
      向左游动 = true; ;//向左移动                  
      xghtml();//修改代码
    }
}

//定时器控制游动
tmid = winform.addtimer(
    15/*毫秒*/,
    function(hwnd,msg,id,tick){   
      if(是否游动 = true){
            if(向左游动 = true){
                left(tmid)
            }
            else {
                right(tmid)
            }
      }
    }
);

win.loopMessage();

1354669803 发表于 2012-11-9 13:16

这个语言很简单学么

ljtnine 发表于 2012-11-9 13:16


自动玩扫雷,鼠标模拟+远程call

import process;
import winex;
import mouse;
import key;

//地址是在我的xp机器上找到的,不知道一不一样~~~~
/*
MOD:
    模式
    0:call模式
    1:鼠标模拟模式
*/
var MOD = 1
var CALLADDR = 0x010037E1   //call地址
var DATABASE = 0x1005340    //棋盘基址
var SETBASE = 0x01005330    //设置基址+0:雷点个数 +4:棋盘宽 +8:棋盘高
var XYBASE = 0x01005118   //call参数:XYBASE:x   XYBASE+4:y


var prc = process("winmine.exe") //创建扫雷进程

var act,hwnd;

if(MOD){//鼠标模式
    hwnd = winex.waitVisible("扫雷");//获取窗口句柄
    win.getActive(hwnd);                //激活窗口
    x,y,cx,cy=win.getPos(hwnd);         //获取窗口坐标
}else{//call模式
    act = prc.remoteApi("void()", CALLADDR);//获取远程call
}

var width = prc.readNumber(SETBASE+4,"INT")
var height = prc.readNumber(SETBASE+8,"INT")
for(j=1;height)
for(i=1;width)
{
    n = prc.readNumber(DATABASE+i+32*j,"byte")//棋盘基址+x+y*32=棋盘点的值
    /*
      n:棋盘点的值
      未点击时:无雷:0f;;;有雷,8f (有用)
      点击后:无雷:4x,x=周围雷的个数;;;有雷8x
    */
    if(n==0x0f)
    {
      if(MOD){
            mouse.move(x+4+16*i,y+96+16*j,true);//移动到坐标点
            mouse.click();                      //点击
            //sleep(500)
      }else{
            prc.writeNumber(XYBASE,i,"INT")//写X坐标
            prc.writeNumber(XYBASE+4,j,"INT")//写Y坐标
            act();                              //点击函数
      }
    }
}
prc.free();         //释放句柄

ljtnine 发表于 2012-11-9 13:17


//外部CALL读取命令行
//列出所有已运行进程的命令行参数
import winex;
io.open()

io.print("请关闭所有监控软件")
execute("pause") //按任意键继续

//遍历所有窗口
for hwnd,title,theadId,processId in winex.each(   ) {
    if(title != ""){ //如果标题不为空
   
      //在外部EXE进程创建函数   
      try{

            //一句代码创建CALL函数
            var getCommandLine_call = raw.remoteApi(processId,"string()"
               ,"Kernel32.dll","GetCommandLineA");

            //象API一样使用
            str = getCommandLine_call()
            io.print(processId,title,str)
      }
         
    }
}

ljtnine 发表于 2012-11-9 13:18

AAuto调用python演示

io.open()

import py;

pyCode = /**
def sign_request():
    from hashlib import sha1
    import hmac
    import binascii
    key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
    raw = "Hi There" # as specified by oauth
    hashed = hmac.new(key, raw, sha1)
    return binascii.b2a_base64(hashed.digest())[:-1]
**/
py.run( pyCode )

__main__ = py.addModule("__main__") //创建模块对象
sign_request = __main__.getPyAttr("sign_request")//返回函数对象
var ret = sign_request.callPyFunction().parseString()//调用函数并获取返回值

//上面的代码也可以简写为一句, io.print() 自动调用 tostring( ret )
io.print( __main__.sign_request())

execute("pause") //按任意键继续
io.close();//关闭控制台
AAuto调用JAVA演示

import java;
   
var jvm = java();

var jmain = jvm.getStaticClassMethod(
    "HelloworldApp", //类名
    "main", //函数名
    "string(string[])"//函数原型语法与API相同,不同的是可以使用[]表示数组参数
);

io.open()
//运行java静态函数,获取返回值.
var str = jmain( "测试","运行java")
io.print( str )

//创建java类实例
var jstring = jvm.newJavaObject(
    "java.lang.String",
    "void(WORD[])",
    string.fromto("测试",0,65001)
    );
   

//创建java类实例,并调用其成员方法
var helloworld = jvm.newJavaObject( "HelloworldApp","void()");

test = helloworld.getMethod("test","int(int)")
io.print( test(3) );

execute("pause") //按任意键继续
io.close();//关闭控制台
AAuto嵌入PHP演示

import php;

//打开控制台
io.open()
   
//PHP代码
phpcode =/*
    $a="我是PHP中的变量a";
    function main(){
      global $a;
      return $a." 这是main()函数的返回值";
    };
*/

//运行PHP代码
php.exec(phpcode)

//运行PHP代码,调用函数返回值,不要使用eval执行太长的代码,eval不能捕获PHP中的致命错误
var ret = php.eval("main()")
io.print( ret );

//运行php代码,返回表达式的值
var ret = php.eval("8899")
io.print( ret );

//再用eval函数访问PHP中的变量
var ret = php.eval("$a")
io.print( ret );

//更简单一些,直接读PHP中的变量
io.print("直接读取PHP中的变量", php.a )

//同上,也可以直接修改PHP中的变量
php.global_abc = 2011
页: [1] 2 3
查看完整版本: AAuto编程语言简介