用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - javascript代码库

qq

2021-05-29 作者:云代码会员举报

[javascript]代码库

import com;

var oleaut = raw.loadDll("OleAut32.DLL"); 
var oleacc = raw.loadDll("OLEACC.DLL"); 
IID_IAccessible = '\xE0\x36\x87\x61\x3D\x3C\xCF\x11\x81\x0C\x00\xAA\x00\x38\x9B\x71';

var findAccessibleChildren;
findAccessibleChildren = function(accParent,name){ 
    var variants = { 
        struct item[] ={  //这里没有声明数组长度
            length = accParent.accChildCount; //使用length在运行时指定数组长度
            { 
                WORD vt; 
                WORD r1;
                WORD r2;
                WORD r3;
                ptr pdispVal;
                ptr r4;
            };//结构体数组至少要声明第一个结构体成员
        }
    }
    
    var obtained = {int size};//用结构体给API提供int指针
    var hr = oleacc.AccessibleChildren(accParent, 0,accParent.accChildCount, variants,obtained);
    if( hr < 0 ) return;//COM中小于0的都是错误码

    for(i=1;obtained.size;1){
        var variant = variants.item[ i ] 
        if( variant.vt != 9/*_VT_DISPATCH*/ ) {
            oleaut.VariantClear(variant);
            continue;
        }
        
        var accChild = com.QueryObject( variant.pdispVal ); //转换为COM对象(COM.IDispatch)

        oleaut.VariantClear(variant);//释放Variant对象       

        if( accChild.accName(0/*CHILDID_SELF*/) == name ){  
            var v = accChild.accValue(0/*CHILDID_SELF*/);
            if(#v) return v;
        }

        
        var v = findAccessibleChildren(accChild,name);
        if(#v) return v;
    }
}

findAccessibleString = function(hwnd,name){
    var pvObject = {ptr p}
    if( 0 == oleacc.AccessibleObjectFromWindow(hwnd,0,IID_IAccessible,pvObject) ){ 
        var accParent = com.QueryObject( pvObject.p ); //转换为COM对象(COM.IDispatch)
        com.Release(pvObject.p);
        
        return findAccessibleChildren( com.QueryObject( pvObject.p ),name );
    }   
}

import winex;
import console;

console.setTitle("读取QQ消息")
console.open()
var msg; 
while(true){
	var old = msg;
	for hwnd in winex.each( "TXGuiFoundation") {      
		var qqMessage = findAccessibleString(hwnd,"test");
		if(#qqMessage ) msg = qqMessage;
	}
	if(old!=msg)console.log( msg)
	sleep(10000)
}
	

	win.loopMessage()


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。