Thinkai's Blog

Autohotkey|Python|php|aardio|VOIP|IT 爱好者

正在浏览分类 AAuto快手

总共找到 8 篇

WM_COPYDATA发送 进程间通信 AAuto 2827

作者为 发表

AAuto快手

import console;
import winex; 
SendMessage = ::User32.api("SendMessageA","int(int hwnd,int wMsg,int wParam,struct & lParam)")
COPYDATASTRUCT = class{
int dwData;
int cbData;
str lpData;
}

var hwnd = winex.find("AutoHotkeyGUI","AHK_Monitor");
var a = "ab为cd"
console.log(a,#a);
var msg = COPYDATASTRUCT()
msg.dwData = 3353;
msg.cbData = #a;
msg.lpData =  a;
SendMessage(hwnd,0x4a,0x0,msg)


console.pause(true);


子窗口不退出 AAuto 3748

作者为 发表

AAuto快手

import win.ui;
..ShowWindow = ::User32.api("ShowWindow","int(int hwnd,int nCmdShow)")
/*DSG{{*/
var winform = ..win.form(text="MainForm";right=269;bottom=133)
winform.add(
button={cls="button";text="子窗口";left=61;top=39;right=200;bottom=86;z=1}
)
/*}}*/

var subform = ..win.form(text="SubForm";right=200;bottom=100)
subform.add(
)

subform.onClose = function(hwnd,message,wParam,lParam){
ShowWindow(subform.hwnd,0x0) //显示
return 0
}

winform.button.oncommand = function(id,event){
	//winform.msgbox( winform.button.text );
	ShowWindow(subform.hwnd,0x5) //隐藏
	return 0
}

winform.show()
win.loopMessage();


改console.varDump为字符串输出 AAuto 2517

作者为 发表

AAuto快手

varDump = function(...){
    var args = {...};
    var str = '';
    var b,e = ..table.range(args);
    for(i=b;e){
    	var arg = args[i];
    	var t = type(arg);
    	str = string.concat(str,"参数位置:",i,'
',"数据类型:",t,'
');
    	if( t != type.table ){
    		str = string.concat(str,"变量值:",tostring(arg),'
');
    	}
    	else { 
    		str = string.concat(str,"变量值: {",'
');	
    		var logged = { _struct = 1 };
    		for k,v in ..table.eachName(arg){
    			logged[k] = true;
    			str = string.concat(str,'    ', k,' = ',tostring(v) ,'
');   
    		}
    		for(i=1;#arg;1){
    			logged[i] = true; 
    			str = string.concat(str,'    [', i,'] = ',tostring(arg[i]) ,'
');
    		}
    		for(k,v in arg){
    			if( !logged[k] ){
    				str = string.concat(str,'    [', tostring(k),'] = ',tostring(v) ,'
');
    			} 
    		}
            str = string.concat(str,'}','
');
            if(#arg){
            	str = string.concat(str,"序列数组长度:",#arg,'
');
            }
            if(arg._struct){
            	try{
            		str = string.concat(str,L("结构体大小:"),..raw.sizeof(arg),'
');
            	}
            	catch(e){
            		str = string.concat(str,"结构体大小:未知(包含动态数组)",'
');
            	}
            }
    	}  
    } 
return str
}


文本转语音(百度在线tts) 转自Q群70517368 AAuto 3414

作者为 发表

AAuto快手

import win.ui;
import win.mm
/*DSG{{*/
mainForm = ..win.form(text="AAuto Form";right=233;bottom=323)
mainForm.add(
button={cls="button";text="转语音";left=35;top=278;right=97;bottom=310;z=2};
button2={cls="button";text="朗读";left=119;top=278;right=181;bottom=310;z=3};
edit={cls="edit";left=5;top=8;right=227;bottom=268;autohscroll=false;edge=1;multiline=1;vscroll=1;z=1}
)
/*}}*/

mainForm.button2.oncommand = function(id,event){
	win.mm.playMp3("/temp.mp3")
}

mainForm.button.oncommand = function(id,event){
	if(mainForm.edit.text = "") return ; 
	mainForm.button.disabled = true
	var bdmp3 = win.invoke(text2audio,mainForm.edit.text)
	if(bdmp3){
		string.save("/temp.mp3",bdmp3 )
		win.msgbox("转语音成功")
	}else {
		win.msgbox("转语音失败")
	}
	mainForm.button.disabled = false
}
text2audio = function(ctext){
	import inet.whttp;
	import inet.url
	var whttp = inet.whttp()
	ctext = inet.url.encode(inet.url.encode(ctext,true),true)
	whttp.beginRequest("http://tts.baidu.com/text2audio?idx=1&tex="+ctext+"&cuid=baidu_speech_demo&cod=2&lan=zh&ctp=1&pdt=1&spd=5&per=0&vol=5&pit=5")
	whttp.send()
	var ctype = whttp.readHeader("Content-type")
	var bdmp3 = whttp.readAll()
	whttp.endRequest()
	if(!string.indexOf(ctype,"mp3")) return null;
	return bdmp3;  
}


mainForm.show() 
return win.loopMessage();


ZeroMQ pub和sub模式示例 广播和订阅 AAuto 4863

作者为 发表

AAuto快手

Pub端(服务器):

import zeromq;

//准备上下文和PUB套接字
var context = zeromq.context()
var publisher = context.zmq_socket_pub()
publisher.bind("tcp://*:5556")
//publisher.bind("ipc://weather.ipc")

//初始化随机数生成器
math.randomize(time.tick())
while(1){
    //获取数据,忽悠下老板
    var zipcode = math.random(10000, 11000)
    var temperature = math.random(-80, 135)
    var relhumidity = math.random(10, 60)
    
    //向所有订阅者发送消息
    publisher.sendMsg( string.format("%05d %d %d", zipcode, temperature, relhumidity) )
}

publisher.close()
context.term()

Sub端:

import zeromq;

io.open()
start = function(filter,tcp){
        var context = zeromq.context()
        
        //用于和服务端通信的套接字
        io.print("Collecting updates from weather server...")
        var subscriber = context.zmq_socket_sub()
        subscriber.connect( tcp : "tcp://localhost:5556" )
        
        //设置订阅信息,默认为纽约,邮编10001
        filter := {byte value[] = "10001 "}
        subscriber.setsockopt(6/*_ZMQ_SUBSCRIBE*/,filter)
//        var ret = subscriber.setsockopt(0x11/*_ZMQ_LINGER*/,{int value = 0})
        io.print(ret);
        
        //处理100条更新信息
        var updateNum = 100;
        var totalTemp = 0;
        for(i=1;updateNum){
                var msg = zeromq.message()
                var ret = subscriber.recvMsg(msg,1/*_ZMQ_NOBLOCK*/);
                if(ret){
                        var str = ..raw.tostring( msg.getData(),1,msg.getSize())
                        msg.close();
                        var zipcode, temperature, relhumidity = string.match(str,"(\d*) ([\d-]*) (\d*)")
                        io.print(i,temperature)
                        totalTemp += temperature;
                }
                sleep(1000)//加点延迟
        }
        io.print(string.format("Average temperature for zipcode '%s' was %dF, total = %d",
            filter.value, (totalTemp / updateNum), totalTemp))
        
        subscriber.close();
        context.term();
}

start()

以下是一个监听AMI socket消息并广播的Pub端实例代码:

import win.ui;
import zeromq;
import thread.command;
/*DSG{{*/
mainForm = ..win.form(cls="ChannelMon";text="ChannelMon";right=0;bottom=0;border="none";exmode="none";max=false;min=false;mode="popup";sysmenu=false;title=false)
mainForm.add()
/*}}*/



//准备上下文和PUB套接字
var context = zeromq.context()
var publisher = context.zmq_socket_pub()
publisher.bind("tcp://*:5556")
var listener = thread.command();
listener.amierror = function(msg){
    mainForm.msgbox("致命错误:"++msg)
}
listener.callin = function(obj){
msg = string.concat(obj.exten," ",obj.phone," ",obj.channel," ",obj.uniqid);
//console.log(msg);
publisher.sendMsg(msg);
}

//AMI桥接通道监控
listener.invoke(

    function(hwnd){ 
        import thread.command;
        import wsock.tcp.client;
		//开启AMI连接
		var tcp = wsock.tcp.client();
		tcp.connect("192.168.1.2",5038);
		//传递句柄
		thread.command.post("posthandle",tcp._handle)
		
		//登陆
		tcp.write('Action:login\r\nUsername:user\r\nSecret:passwd\r\n\r\n')
		//等待回复
		tcp.recv()
		
		//监听消息
		var ok = true
		while(ok = true){
			var pkg = tcp.recv()
			if(pkg!=null){
				var msg = string.split(pkg,'<\r\n\r\n>') //按双回车分割消息单元
				for k,v in msg {
					var line = string.split(v,'<\r\n>')  //按回车分割消息行
					if(table.range(line)>0){
						var msgobj = {};
						for m,n in line {
							var part = string.split(n,":")  //按冒号分割key和value
							if(part[1]!=null && part[2]!=null){ 
								msgobj[part[1]] = tostring(string.trimleft(part[2],space))
								//msgobj[part[1]] = string.trimleft(part[2],space)	
							} //if part
						} //for line
						//msgobj生成完毕
						
						if(msgobj["Event"]="Bridge" and msgobj["Bridgestate"]="Link" and msgobj["Channel1"]!=null){ //通道桥接
							if(string.find(msgobj["Channel1"],"DAHDI/.*")){
								var obj = {};
								obj.exten = msgobj["CallerID2"];
								obj.phone = msgobj["CallerID1"];
								obj.channel = msgobj["Channel1"];
								obj.uniqid = msgobj["Uniqueid2"];
								thread.command.post("callin",obj);
							}
						}
					} //if line
				}// for msg
			}else{
				ok = false
			} //if pkg
		} //while
		
		tcp.close();
		thread.command.post("amierror","到呼叫系统的AMI连接已断开!")
		return
    }
);

mainForm.onClose = function(hwnd,message,wParam,lParam){
	publisher.close()
}

win.loopMessage(); 
context.term()


Autohotkey示例:

Gui Add, ActiveX, xm w700 h100 vwmp, {6BF52A52-394A-11D3-B153-00C04F79FAA6}
Gui Show
;wmp.Settings.AutoStart := 0
wmp.Settings.Volume := 100
wmp.Url := "D:\我的文档\My Music\brave.mp3"

AAuto示例:

import win.ui;
import fsys.dlg;
/*DSG{{*/
var winform = ..win.form(text="AAuto Form";right=322;bottom=157)
winform.add(
static={cls="static";left=5;top=5;right=314;bottom=153;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1}
)
/*}}*/

//创建控件
var wmplay = winform.static.createEmbed("{6BF52A52-394A-11d3-B153-00C04F79FAA6}");
var filepath=fsys.dlg.open("mp3音乐|*.mp3","打开");
wmplay._object.Url  = filepath;
winform.show() 
win.loopMessage();


简单的cmd ftp上传工具 AAuto 3283

作者为 发表

AAuto快手

import console;
import inet.ftp;
var p = string.split(_CMDLINE," ");
if(p[1]!=null and p[2]!=null and p[3]!=null and p[4]!=null and p[5]!=null){
ftp = inet.ftp(p[1],p[2],p[3]);
if(!ftp){
	console.log("请输入正确的服务器参数");
	return;
}
file = ftp.upload(p[4],p[5],2) 
ftp.close()
}else{
console.log('参数:服务器 用户名 密码 源文件 目标ftp路径\n所有参数不能包含空格');
}
console.close();


import console;
import mysql.client;

//本地数据库
console.log("正在连接本地数据库服务器...");
var localdb,err = mysql.client(
	server = "localhost";
	uid = "root";
	pwd = "123456";
);

if(!localdb){
	console.log("连接数据库失败",err)
	return;
}
localdb.selectDb("blog");
console.log("本地数据库连接成功");

//远端数据库
console.log("正在连接远端数据库服务器...");
var remotedb,err = mysql.client(
	server = "8.8.8.8"; 
	uid = "xxxxx";
	pwd = "xxxxx";
);

if(!remotedb){
	console.log("连接数据库失败",err)
	return;
}
remotedb.selectDb("blog");
console.log("远端数据库连接成功");

//同步本地日志到远端
console.log("同步本地日志到远端");
//查询最大ID
var result = remotedb.query("SELECT max(ID) as MAXID FROM wp_posts");
var remote_post_max_id = result.fetchObject()["MAXID"];
//console.log("远端最大ID:"++remote_post_max_id)
result.free();
//查询本地
var result = localdb.query("SELECT ID FROM wp_posts where ID>"++tostring(remote_post_max_id));
var local_post_sync_count = result.numRows();
console.log("需同步"++local_post_sync_count)
result.free();
//执行同步

if(local_post_sync_count>0){
//首先替换网址
localdb.exec("update wp_posts set post_content=replace(post_content,'thinkai.net','thinkai.net') where ID>"++tostring(remote_post_max_id));

var result = localdb.query("SELECT * FROM wp_posts where ID>"++tostring(remote_post_max_id));
for(i=1;local_post_sync_count){
var row = result.fetchObject();
	console.log(string.concat("同步ID:",row['ID']," 标题:",row['post_title']));
	remotedb.exec("insert into wp_posts values (@ID, @post_author, @post_date, @post_date_gmt, @post_content, @post_title, @post_excerpt, @post_status, @comment_status, @ping_status, @post_password, @post_name, @to_ping, @pinged, @post_modified, @post_modified_gmt, @post_content_filtered, @post_parent, @guid, @menu_order, @post_type, @post_mime_type, @comment_count)",row)
}
}

//同步本地日志分类到远端
console.log("同步本地日志分类到远端");
//查询最大ID
var result = remotedb.query("SELECT max(object_id) as MAXID FROM wp_term_relationships");
var remote_term_max_id = result.fetchObject()["MAXID"];
result.free();
//查询本地
var result = localdb.query("SELECT object_id FROM wp_term_relationships where object_id>"++tostring(remote_term_max_id));
var local_term_sync_count = result.numRows();
console.log("需同步"++local_term_sync_count)
result.free();
//执行同步

if(local_term_sync_count>0){
var result = localdb.query("SELECT * FROM wp_term_relationships where object_id>"++tostring(remote_term_max_id));
for(i=1;local_term_sync_count){
var row = result.fetchObject();
	console.log(string.concat("同步ID:",row['object_id']));
	remotedb.exec("insert into wp_term_relationships values (@object_id, @term_taxonomy_id, @term_order)",row)
}
}

//同步本地分类项目到远端
console.log("同步本地分类项目到远端");
//查询最大ID
var result = remotedb.query("SELECT max(term_taxonomy_id) as MAXID FROM wp_term_taxonomy");
var remote_termt_max_id = result.fetchObject()["MAXID"];
result.free();
//查询本地
var result = localdb.query("SELECT term_taxonomy_id FROM wp_term_taxonomy where term_taxonomy_id>"++tostring(remote_termt_max_id));
var local_termt_sync_count = result.numRows();
console.log("需同步"++local_termt_sync_count)
result.free();
//执行同步

if(local_termt_sync_count>0){
var result = localdb.query("SELECT * FROM wp_term_taxonomy where term_taxonomy_id>"++tostring(remote_termt_max_id));
for(i=1;local_termt_sync_count){
var row = result.fetchObject();
	console.log(string.concat("同步ID:",row['term_taxonomy_id']));
	remotedb.exec("insert into wp_term_taxonomy values (@term_taxonomy_id, @term_id, @taxonomy, @description, @parent, @count)",row)
}
}
//查询最大ID
var result = remotedb.query("SELECT max(term_id) as MAXID FROM wp_terms");
var remote_term_max_id = result.fetchObject()["MAXID"];
result.free();
//查询本地
var result = localdb.query("SELECT term_id FROM wp_terms where term_id>"++tostring(remote_term_max_id));
var local_term_sync_count = result.numRows();
console.log("需同步"++local_term_sync_count)
result.free();
//执行同步

if(local_term_sync_count>0){
var result = localdb.query("SELECT * FROM wp_terms where term_id>"++tostring(remote_term_max_id));
for(i=1;local_term_sync_count){
var row = result.fetchObject();
	console.log(string.concat("同步ID:",row['term_id']));
	remotedb.exec("insert into wp_terms values (@term_id, @name, @slug, @term_group)",row)
}
}
localdb.close();
remotedb.close();
console.pause();



友情链接:Autohotkey中文帮助Autohotkey官网Autohotkey中文网联系作者免GooglePlay APK下载

 主题设计 • skyfrit.com  Thinkai's Blog | 保留所有权利

50 queries in 2.852 seconds |