【个人作品 -- aardio】win消息查询工具

贴主:admin 发贴:2024-07-16 13:39 浏量:44

源代码 aardio:

网上有人公布的一个小工具,但是在我的4K显示屏下显示的太小了,于是就重新写了一遍,方便自己使用。

import win.ui; 
import access;
/*DSG{{*/
mainForm = win.form(text="windows 消息查询工具-扣扣小妖 mail:liukuaizhuan@qq.com";right=809;bottom=511;bgcolor=16754508)
mainForm.add(
button={cls="button";text="开始搜索";left=704;top=50;right=775;bottom=74;dl=0.87;dr=0.04;dt=1;group=1;z=7};
combobox={cls="combobox";left=73;top=50;right=238;bottom=74;dl=0.09;dr=0.71;dt=1;edge=1;group=1;items={"所有消息";"按钮消息";"编辑框消息";"超级列表框消息";"列表框消息";"鼠标键盘消息";"树形框消息";"系统消息";"组合框消息"};mode="dropdown";z=2};
combobox_searchType={cls="combobox";left=529;top=51;right=685;bottom=75;dl=0.65;dr=0.15;dt=1;edge=1;group=1;items={"消息名称";"十进制值";"十六进制值";"说明"};mode="dropdown";z=6};
edit={cls="edit";left=310;top=50;right=469;bottom=72;dl=0.38;dr=0.42;dt=1;edge=1;group=1;z=5};
groupbox={cls="groupbox";left=10;top=28;right=797;bottom=90;aw=1;bgcolor=16754508;color=16777215;dl=1;dr=1;dt=1;edge=1;group=1;z=1};
listview={cls="vlistview";left=11;top=99;right=801;bottom=507;ah=1;aw=1;db=1;dl=1;dr=1;dt=1;edge=1;gridLines=1;vscroll=1;z=8};
static={cls="static";text="选择分类";left=16;top=50;right=70;bottom=74;dl=0.02;dr=0.91;dt=1;group=1;transparent=1;z=3};
static2={cls="static";text="搜索:";left=269;top=51;right=301;bottom=75;dl=0.33;dr=0.63;dt=1;group=1;transparent=1;z=4}
)
/*}}*/

// 初始化虚表界面 表头
mainForm.listview.insertColumn("消息名称",200);
mainForm.listview.insertColumn("十进制值",100);
mainForm.listview.insertColumn("十六进制值",100);
mainForm.listview.insertColumn("说明",-1); 

/* ================ 初始化 数据开始==================  */ 
var db = access("/WinConstant.mdb"); 
//打开数据库记录集
var rs = db.openRecordSet("SELECT 消息名称,十进制值,十六进制值,说明 FROM winconstant", db.adOpenStatic); 
//清除列表视图中的数据
mainForm.listview.clear();

//创建一个数据缓存表
var cacheTable = table.cache(
	function(row) {
  	rs.Move(row - 1, 1/*_adBookmarkFirst*/);
  	return rs.getRows(1, 0/*_adBookmarkCurrent*/);
	}
);

//设置列表视图的行数
mainForm.listview.count = rs.recordCount;

//定义列表视图的获取显示项的方法
mainForm.listview.onGetDispItem = function(item, row, col) {
	return { text: cacheTable[row][col][1] };
}; 
 
// 销毁时候关闭数据库连接 
mainForm.listview.onDestroy = function(){
	db.close();
}
/*================== 初始化 数据结束==================  */ 
  


/****************************************
 *下拉框被选中 根据分类类型查询数据显示
 ****************************************/
mainForm.combobox.onListChange = function(){
	 // 清空搜索项里面的输入值
	 mainForm.edit.text = null; 
	 // 获取选中的值
	 var selectedText  =  mainForm.combobox.selText;
	 // 根据值查询
	 var sql ; 
	 if(selectedText != "所有消息"){
	 	sql = "SELECT 消息名称,十进制值,十六进制值,说明 FROM winconstant WHERE 消息类别="""+selectedText+"""";
	 }else{
	 	sql = "SELECT 消息名称,十进制值,十六进制值,说明 FROM winconstant";
	 } 
	 // 查询数据并更新虚表
	 showmess(sql) 
}

 
/****************************************
 * 搜索按钮点击
 ****************************************/
mainForm.button.oncommand = function(id,event){
	//获取编辑框文本
	var searchKey = mainForm.edit.text;
	//获取下拉选项的选中的值
	var selectValue = mainForm.combobox_searchType.selText;
	// 拼接sql语句 
	var query;
	var whereQuery;
	if(string.len(searchKey) and selectValue){
		whereQuery = " WHERE "+ selectValue + " LIKE '%" + searchKey + "%'"; 
		query = "SELECT 消息名称,十进制值,十六进制值,说明 FROM winconstant " + whereQuery;
	}else{
		query = "SELECT 消息名称,十进制值,十六进制值,说明 FROM winconstant";
	}  
	// 查询数据并更新虚表
	showmess(query) ;
}


/*
* 根据sql语句查询数据,并将数据显示在虚表上
*  sql: 字符串类型 数据库查询语句
*/
function showmess(sql){
	 //清除列表视图中的数据
	 mainForm.listview.clear(); 
	 //mainForm.msgbox(sql);
	 var rs = db.openRecordSet(sql, db.adOpenStatic);
	 // 指定虚表行数
	mainForm.listview.count = rs.recordCount;
	 //数据库缓存表
	var cacheTable = table.cache(
		function(row) {
			rs.Move(row - 1, 1/*_adBookmarkFirst*/); 
			
			//注意返回的数组是先列后行
			return rs.getRows(1,0/*_adBookmarkCurrent*/) 
		}
	); 
	//获取虚表项
	mainForm.listview.onGetDispItem = function(item,row,col){
		return  {text=cacheTable[row][col][[1]]}; 
	}  
	// 更新虚表显示
	mainForm.listview.update();
}

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

附件下载:

高速下载

相关回复


    暂无评论!

发表回复