|
|
本帖最后由 cutebe 于 2026-10-1 21:34 编辑
使用一些成熟的三方工具和插件,识别图片中的文字。然后移动鼠标指针到文字上,模拟操作鼠标。
三方CIdo.exe,窗口位置与置顶。
三方sleep.exe,延时。
三方sendkeys.exe,在文本框输入。
三方Cimt.exe,鼠标移动点击操作与键盘操作。
大漠插件v3.1233免费版,找字功能。
脚本WSF,调用插件功能。
链接:https://pan.baidu.com/s/1F20Mxlai-LPukNSYtyYi-Q?pwd=oqm9
提取码:oqm9
- ::找到文字鼠标移过去.bat
- @echo off
- cd/d %~dp0
- setLocal
- set "path=%~dp0三方工具;%~dp0子功能;%path%"
- title 查找字库文字 移动鼠标
- ::窗口大小、置顶、窗口位置
- mode con lines=8 cols=80 %_窗口行列数_%
- CIdo /swp 640 30 %_窗口位置_%
- CIdo /top %_置顶_%
- set "Cscript=%SystemRoot%\SysWOW64\CScript.exe"
- ::sleep 1000 %_暂停1秒_%
- ::sendkeys -s 13902345678 %_输入手机号_%
- ::cimt /key 40 %_下方向键_%
- ::cimt /key 13 %_回车键_%
- ::cimt /mm %横坐标x% %纵坐标y% %_移动鼠标_%
- ::Cimt /mc 0 %_点击_%
- sleep 500
- call :寻字 "0,0,800,500,1" "百度一下" "3c4043" b
- if %_bflag%==1 (
- echo 百度坐标:%_bx%,%_by%
- cimt /mm %_bx% %_by%
- )
- sleep 1000
- call :寻字 "0,0,800,500,1" "你就知道" "3c4043" d
- if %_dflag%==1 (
- echo 知道坐标:%_dx%,%_dy%
- cimt /mm %_dx% %_dy%
- )
- sleep 800
- Cimt /mc 1 %_鼠标右击_%
- endLocal
- pause
- goto :eof
- ::=====结束=====::
- ::-----函数开始-----::
- :寻字 ::范围与相似度1 文字2 颜色3 返回变量4
- for /f "tokens=1-3" %%w in ('%Cscript% //nologo ".\子程序\寻字.wsf" "%~1" "%~2" "%~3"')do (
- set _%4flag=%%w
- if %%w==1 (set _%4x=%%x&&set _%4y=%%y)
- )
- goto :eof
- :找彩 ::范围合度1 颜色2 返回变量3
- for /f "tokens=1-3" %%w in ('%Cscript% //nologo ".\子程序\找彩.wsf" "%~1" "%~2"')do (
- set _%3flag=%%w
- if %%w==1 (set _%3x=%%x&&set _%3y=%%y)
- )
- goto :eof
- ::=====函数结束=====::
复制代码
脚本WSF,合并JS/VBS编程
- //寻字.wsf
- <Job id="dm_FindStr">
- <Object id="dm" progid="dm.dmsoft" />
- <Script language="JScript">
- //参数:域度 文字 颜色 //如:"0,0,300,200,1","广东|福建","060000-060000"
- var 域度=WScript.Arguments(0).split(','); //范围与合度
- var rx1=域度[0]*1,ry1=域度[1]*1,rx2=域度[2]*1,ry2=域度[3]*1; //左上右下边界
- var sim=域度[4]*1.0; //契合度
- var Chars=WScript.Arguments(1); //文字
- var color=WScript.Arguments(2); //颜色
- //WScript.Echo('参数:"'+rx1+","+ry1+","+rx2+","+ry2+'","'+Chars+'","'+color+'","'+sim+'"');
- //注意:因VBS不支持汉字变量名与下划线开头的变量名,如:域度,_chr,_px。所以要被VBS使用的变量需使用字母组合。
- //字库
- dm_ret = dm.AddDict(0,"80124A4949292524A494929250000000000080140A89550AA9542A8512A04$百度$0.0.66$11");
- dm_ret = dm.AddDict(0,"0400801002004008010020040080000008010020040080100200400801000$一下$0.0.20$6");
- dm_ret = dm.AddDict(0,"80900200400800$你$0.0.6$9");
- dm_ret = dm.AddDict(0,"801512A054080000100200408810$就$0.0.18$9");
- dm_ret = dm.AddDict(0,"08090120240000002014028050080000010000800401AAB556AAD55AAB004$知道$0.0.51$11");
- //调用字库
- //dm_ret = dm.SetDict(1,".\\子程序\\字库.txt");
- //dm_ret = dm.UseDict(1);
- </Script>
- <Script language="VBScript">
- '//WScript.Echo "参数:" & rx1 &","& ry1 &","& rx2 &","& ry2 &","& Chars &","& color &","& sim
- '//查找文字 支持指针变量:intX,intY
- dm_ret = dm.FindStr(rx1,ry1,rx2,ry2,Chars,color,sim,intX,intY)
- </Script>
- <Script language="JScript">
- if(dm_ret==-1){
- WScript.Echo(0); //没找到0
- }else{
- if(intX>0 && intY>0){WScript.Echo("1 "+ intX +" "+ intY);} //找到1,并返回坐标
- }
- WScript.Quit(); //结束
- </Script>
- </Job>
复制代码
字库通过插件工具手工添加,需要较多时间。
当字库扩大时,可以放入单独文件调用。
测试方法:打开图片放在靠近屏幕左上角,运行批处理。效果是鼠标指针会移动到图片文字上,最后右击。
有了找字能力,加上键盘鼠标操作,以此为基础就能实际办公自动化了。缺点是脚本执行时,不能处理其他工作。 |
|