[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
非常谢谢xinje [楼主] 的辛苦!非常成功的一点是不占用cpu。
用处:运行CMD.EXE 时,在cmd 窗口获得鼠标位置。(即cmd 窗口支持鼠标).
当cmd 窗口为80X25 时, 在窗口内获取鼠标坐标 X 应该是1~80(从左到右), Y 应该是1~25(从上到下). 返回值应该交给 errorlevel ,在使用中设置变量取出.(如:
  set /a sbs=%errorlevel%
  set  X=%sbs:~0,-3%
  set  Y=%sbs:~-2,2%)
即errorlevel=X0Y 的格式.
所以你的返回值无法使用.(也不要在窗口显示),另外,在黑色窗口外的任何位置都不要获取鼠标坐标.
谢谢再修改一下!
如果能做到 2KB 左右(16或32位汇编)就太好了.便于用debug-DW 装入BAT中了.

[ 本帖最后由 ZJHJ 于 2010-5-21 00:16 编辑 ]

TOP

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没解决。
程序体积越小越好。

TOP

经过验证,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

TOP

经过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 [楼主] 辛苦了!

TOP

xinje [楼主]写的 CMDMOUSE.exe 用起来很方便,不过发现一个问题,在启用中经常失灵,
要关闭CMD窗口重新启用。谢谢 楼主再检查修改一下。

TOP

返回列表