[寻资源] 取图比图点击左键程序C/VB/C#等源代码,非按键精灵一类的。

[寻资源] 取图比图点击左键程序C/VB/C#等源代码,非按键精灵一类的。目前用过的工具存在的问题:

  1. 按键精灵9版本:只需要编译出的小程序,整套软件移动会太大。生成的小精灵在Win10系统兼容性差且界面不简洁。
  2. 按键精灵2014版本:问题同上,且免费版现在已经无法生成小精灵。
  3. Automatic Mouse and Keyboard v6.3.3.6,比图比色点击功能非常强大,使用便捷且能导出为EXE,但是在Win7运行一段时间系统卡死。推测底层技术就是AutoHotkey,可能整合上存在缺陷。
  4. 唰唰v3.2.22:只能比色点击,由于不同电脑分辨率不同故移植性不高;不能比图点击。

问题:

  1. 希望有个源代码能直接编辑修改,再编译为exe可执行文件,这样或许程序更健壮可移植性更好。
  2. 按键精灵目前软件自带的只有免费版模板,如何下载小精灵模版?

所以ahk不行吗?

我需要增加界面,只是ahk界面不容易入门。

ahk有个成熟的热门工具叫findtext,你可以试试。
“findtext”的搜索结果 – AutoAHK

现在有很多强大的免费开源组件,
例如 aardio 调用 Chineseocr-lite 屏幕找字点击就只要几句代码:

import mouse;
import string.ocrLite;
import string.ocrLite.defaultModels;

var ocr = string.ocrLite();
var ocrResult = ocr.detectScreen();
var x,y = ocrResult.findPoint("要查找的按钮文本",0.1);
mouse.moveTo(x,y,true);

其实 Windows 自带一个强大的 OCR 组件,用 aardio 调用一下试试:

import mouse;
import dotNet.ocr;
var ocr = dotNet.ocr();

var ocrResult = ocr.detectScreen()
var x,y = ocrResult.findPoint("把鼠标移动到这里",0.1);
mouse.moveTo(x,y,true)

用 aardio 实现屏幕找图的例子:

import win.ui;
/*DSG{{*/
var winform = win.form(text="请稍候正在打开网页......";right=759;bottom=469) 
/*}}*/

import web.form; 
var wb = web.form( winform  ); 
wb.noScriptErr = true;

wb.go("http://bbs.aardio.com/forum-image-1.html");
winform.show();   

//等待指定HTML节点(匹配tagName,src等节点属性)
wb.waitQueryEles( tagName="img"; src="aardio\.png" )
win.delay(1000);//给点时间让图像显示出来

import soImage;//导入搜图扩展库
import inet.http;//导入HTTP支持库

winform.text = "请稍候,下在下载样本数据"
var imgBytes = inet.http().get("http://bbs.aardio.com/static/image/common/aardio.png");

//创建查找图像
var imgFind = soImage();
imgFind.setBytes( imgBytes,"*.png"); //解析下载的图像数据,注意要指定图像文件后缀名
imgFind.crop(29,33,193,55);//裁剪图像,尽可能去掉背景,保留特征最强的部分

var sm,x,y = imgFind.findImageInWindow(winform);
winform.text = "已找到图片,相似度:" + sm;

//移动鼠标
import mouse;
var wx,wy = win.getPos(winform.hwnd);//获取目标窗口坐标 
mouse.moveTo(wx+x-50,wy+y-50,true);//保留鼠标轨迹模仿真实的鼠标移动
mouse.click();//点击鼠标

//启动消息循环
win.loopMessage();

屏幕找色:

import gdi;
import win;
import mouse;
import soImage;

//抓屏
var imgScreen = soImage();
imgScreen.capture(); 

//在图像上搜索指定颜色的点,
//第一个参数是一个表示查找颜色的数值,更多参数用法请查看智能提示
var x,y = imgScreen.findColor( gdi.RGB(48,171,53) );

//返回该坐标所在显示器左上角位置
var scrX,scrY = win.getScreenPos(x=x,y=y); 

//快速移动鼠标(相对移动)
mouse.move(scrX,scrY,true);

//获取虚拟屏幕位置,双屏幕时可能起始坐标可能返回负数
var scrX,scrY = win.getScreenPos(); 

//慢速移动鼠标,显示移动轨迹
mouse.moveTo(x+scrX,y+scrY,true);
1 个赞