吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11235|回复: 23
收起左侧

[其他转载] AAuto编程语言简介

 关闭 [复制链接]
ljtnine 发表于 2012-11-9 13:11
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款主流杀毒软件的安全检测无病毒,无误报。


virscan.jpg

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

baoku.jpg


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,三下五除二


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[1]);
                    cvs.font.bold =
false;
                    cvs.font.color = 0x666666;
                    cvs.textOut(ds.rcItem.left + 18, ds.rcItem.top + 26, data[2]);
                }
                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



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

 楼主| 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

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 14:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表