errorlevel=X0Y
0 是数字“零”,目的是保证5位数字,或者不要“零”,保证4位数字。只要保证位数,是很容易分割的,这个代码就是取出读取的坐标并进行X Y分割的。
set /a sbs=%errorlevel%
set X=%sbs:~0,-3%
set Y=%sbs:~-2,2%)
用什么语言文本都可以,只要目的。
第10楼上传的mouse.com http://www.bathome.net/thread-7933-1-1.html也很好,就是启用的ntvdm.exe 占用CPU没解决。
程序体积越小越好。作者: xinje 时间: 2010-5-21 19:19
%errorlevel% 写起来很麻烦,我需要加很多的代码。不知道别人如何实现的。
所以要调用这个的返回值,你用
for /F "delims=" %%a in ('CMDMOUSE.exe') do set 变量名=%%a
来取得。作者: ZJHJ 时间: 2010-5-21 21:14
经过验证,8Kb的 CMDMOUSE.exe有很大的进步。用
for /F "delims=" %%a in ('CMDMOUSE.exe') do set 变量名=%%a
来取得变量是可以的。
还需要修改的是: 1 窗口框边不能取值,只取CMD有效窗口内。
2 返回值不对:
如果是第一行,从左到右应该X是01~80(X 列),Y应该始终是 01(Y)。
...........
...........
如果是第25行,从左到右应该X是01~80(X 列),Y应该始终是 25(Y)。
如果是第5 列,从上到下X始终是05,Y应该是01~ 25(Y)。
1=01 2=02 9=09 这样取得的变量位数才是固定位数,才有可能进行X Y分割
下面是 netbenton写的108B 的mouse.com的演示批处理,我把108b 的mouse.com用DEBUG-dw格式装入bat中了。缺点:就是ntvdm.exe占用cpu太高没有得到解决。
@echo off
title 鼠标三方演示批处理
(chcp 437 &graftabl 936)>nul
SET SYB=A100;0AEB 3030 3020 2030 3030 2420 00B8 CD00;B833 0001 33CD 05B8 CD00 A933 0007 F674;E086 300D A330 0102 C889 08B3 18E8 A300;0105 D089 08B3 0EE8 A300 0108 09B4 02BA;CD01 B421 CD4C F621 08F3 74E4 FE02 FEC0;88C0 B1C4 D204 25E8 0F0F 300D 3C30 7639;0402 8007 39FC 0376 C480 C307 ;
SET V=;RCX;006C;N mouse.com;W;Q
(ECHO.%SYB:;=&ECHO.DW %&ECHO.%V:;=&ECHO.%)|DEBUG>NUL
:lp
cls
echo.
echo 鼠标点击窗口
echo. 点击这里关闭窗口
echo. 查看代码
echo.
echo X %X% Y %Y%
for /f "tokens=1-3" %%1 in ('mouse.com') do (set /a X=0x%%2,Y=0x%%3)
if %X% GTR 51 if %X% LSS 65 if %Y% EQU 03 goto we
if %X% GTR 29 if %X% LSS 36 if %Y% EQU 04 goto ck
goto :lp
:ck
start mrt.exe %0
goto :lp
:we
Exit作者: ZJHJ 时间: 2010-5-23 21:56
经过2010-5-21修改的CMDMOUSE.exe非常成功。返回值X,Y用逗号隔开完全可以。只不过要进行2次截取,X Y值还需要如下设置: 即
for /F "delims=" %%a in ('CMDMOUSE.exe') do echo %%a>temp.txt
for /f "tokens=2 delims=," %%i in (temp.txt) do set /a Y=%%i/16+1
for /f "tokens=1 delims=," %%i in (temp.txt) do set /a X=%%i/8+1
经过这样处理,完全符合要求。最大优点:不占CPU。使用时反映速度快。运行其他程序时就不会出现卡
谢谢xinje [楼主] 辛苦了!作者: xinje 时间: 2010-5-23 23:19