标题: [工具合集] 我也发一个控制台鼠标支持程序, 让控制台变得更强大~ :-) [打印本页]
作者: 女孩不哭 时间: 2012-6-8 13:52 标题: 我也发一个控制台鼠标支持程序, 让控制台变得更强大~ :-)
今天发布的控制台程序是一个控制台鼠标支持的小程序~~~
记得Defaniv曾经发布过一个.....
我今天也查找相关资料模拟了一个~~~
程序简单, 采用 VC++6.0 + WinXPSP3 + C语言写成, 提供源代码下载, 欢迎下载共同学习~~~共同进步 :-)
使用方法:
/? 查看帮助
不带参数或其它参数 进入工作模式.
返回值处理:
%ERRORLEVEL% 高 16 位包含鼠标 X 坐标
%ERRORLEVEL% 低 16 位包含鼠标 Y 坐标
比如:返回 65537, 可以用如下方式取得 X,Y
set /a ret=%errorlevel%
set /a "x=%ret%>>16"
set /a "y=%ret%&65535"
附件说明:
mouse.7z,程序
mouse_src.7z,源代码
mouse_test.bat 测试程序
http://bcn.bathome.net/s/tool/index.html?key=mouse
作者: garyng 时间: 2012-6-8 14:32
以高16位和底16位来储存坐标这个方法不错 学习了!
作者: 女孩不哭 时间: 2012-6-8 14:37
回复 2# garyng
呃, x,y 是两个 2个字节长度的数据, 控制台程序返回值是 一个 4 个字节的数据, 所以刚刚合适........ :-)
作者: defanive 时间: 2012-6-8 14:40
写批处理第三方的人越来越多了,开心
作者: 喃喃努努 时间: 2012-6-8 14:45
请楼主解释一下,我还是看不懂。
作者: 女孩不哭 时间: 2012-6-8 14:47
请楼主解释一下,我还是看不懂。
喃喃努努 发表于 2012-6-8 14:45
解释什么, 使用?
作者: 喃喃努努 时间: 2012-6-8 14:48
回复 6# 女孩不哭
这个程序的作用是什么,我太菜了。
作者: 女孩不哭 时间: 2012-6-8 14:50
回复 女孩不哭
这个程序的作用是什么,我太菜了。
喃喃努努 发表于 2012-6-8 14:48
在CMD中, 使用cd命令切换到程序所在的目录, 然后输入程序名即可运行.. 此时就可以移动鼠标, 然后单击鼠标 程序结束, 使用我上面的示例程序可以取得鼠标单击时的坐标信息
作者: 喃喃努努 时间: 2012-6-8 14:55
回复 8# 女孩不哭
直接点击那个程序没有反应啊,然后任意键就退出了,用你的方法打开后还是不动,点击鼠标也是没有反应,没有显示鼠标的坐标啊。
作者: 女孩不哭 时间: 2012-6-8 15:02
回复 7# 喃喃努努
我上传了一个示例程序, 你把 mouse.exe 和 mouse.bat 放在一起, 然后运行 mouse.bat, 单击鼠标左键试试
作者: 喃喃努努 时间: 2012-6-8 15:08
这个有反应了,但是单点一个没反应,把exe拖到bat上就有反应了,坐标无论怎么点都是输出的0,9009
作者: 女孩不哭 时间: 2012-6-8 15:13
回复 11# 喃喃努努
呃, 可能是程序BUG, 不过我测试一切正常, 我的邮箱:191035066#qq.com,你把截图发我看看.
作者: 喃喃努努 时间: 2012-6-8 15:24
回复 12# 女孩不哭
单独点开bat没反应,
拖进去后就这一个坐标。
作者: 女孩不哭 时间: 2012-6-8 15:26
回复 13# 喃喃努努
我更新了下程序, 出了点小错, 你重新下载试试., 谢谢测试....
作者: plp626 时间: 2012-6-8 15:30
回复 13# 喃喃努努
你把楼主的mouse.bat代码中mouse改为mouse.exe,把mouse.exe 放在mouse.bat文件所在路径下试试;
最好把bat文件和exe文件的文件名区分开来, 否则跟上后缀名比较保险;- @echo off|| mouse.exe (编写者:女孩不哭) 演示程序
- :lp
- call mouse.exe
- set/a "ret=%errorlevel%,x=ret>>16,y=ret&65535"
-
- title 演示程序,坐标=(%x%,%y%)
- goto:lp
复制代码
作者: plp626 时间: 2012-6-8 15:41
windows API陌生,
以前使用过defin。。。的mouse.exe 但体积太大200多K(太夸张了), 想自己给他瘦身但不开源,无奈作罢。
楼主这个2KB+的很实用, 比如可以用鼠标点击选项, bat交互功能会人性化很多。。。
作者: 女孩不哭 时间: 2012-6-8 15:42
回复 喃喃努努
你把楼主的mouse.bat代码中mouse改为mouse.exe,把mouse.exe 放在mouse.bat文件所 ...
plp626 发表于 2012-6-8 15:30
, 很好, 谢谢 plp626 的测试代码, thx!
作者: cjiabing 时间: 2012-6-8 15:51
本帖最后由 cjiabing 于 2012-6-8 16:05 编辑
十分不错,通俗易懂!~
来个演示!~- @echo off
-
- :Start
- cls
- echo;
- echo;十一月的肖邦 - 周杰伦 【播放】[点击开始播放]
- echo;
-
- call :Mouse
- for /l %%a in (28,1,31) do if "%x%,%y%"=="%%a,1" goto Player
-
- pause&exit
-
-
- :Player
- echo 正在联网播放……
- start /min "" wmplayer.exe "http://news.bjsjs.gov.cn/jxbbs/images/upload/2005/11/25/100905.mp3"
- echo;
- echo 【停止】[点击停止播放]
- call :Mouse
- for /l %%a in (3,1,5) do if "%x%,%y%"=="%%a,6" taskkill /f /t /im wmplayer.exe&goto Start
- taskkill /f /t /im wmplayer.exe
- exit
-
-
- :Mouse
- mouse
- set /a ret=%errorlevel%
- set /a x="%ret%>>16"
- set /a y="%ret%&65535"
- echo;
- echo 单击时鼠标位于坐标:%x%,%y%
- echo;
- goto :eof
复制代码
作者: garyng 时间: 2012-6-8 15:58
回复 16# plp626
如果用汇编的话
似乎会更小
可惜 我不太会处理汇编的命令行参数。。
作者: 喃喃努努 时间: 2012-6-8 16:02
回复 15# plp626
还是没搞好,总觉得差点东西。
作者: 女孩不哭 时间: 2012-6-8 16:15
十分不错,通俗易懂!~
来个演示!~
cjiabing 发表于 2012-6-8 15:51
感谢~~~
作者: plp626 时间: 2012-6-8 16:17
回复 19# garyng
我很感兴趣用32位汇编怎么写,
会用 x86的16位汇编 写; 32位的不会;
devcpp提供as.exe ld.exe编译汇编代码, 我不会用, 希望继续交流。。。
作者: 女孩不哭 时间: 2012-6-8 16:24
其实不用那个, 直接用 MASM32 来编译比较好, 这是宏汇编, 宏汇编要简单很多.
比如 masm32, RadAsm
可惜, 汇编我也不太会...
正在学....
作者: 女孩不哭 时间: 2012-6-8 16:26
回复 22# plp626
如果你安装了 VC++6.0的话, 可以直接用 CL.exe 生成汇编, 可以看下,
命令为 : cl -Fa mouse.c
代码不长.
作者: plp626 时间: 2012-6-8 16:58
这个mouse.exe 退出后改变了cmd光标样式, 不知何故。。。
作者: plp626 时间: 2012-6-8 16:58
这个mouse.exe 退出后改变了cmd光标样式, 不知何故。。。
作者: 女孩不哭 时间: 2012-6-8 17:21
回复 25# plp626
什么样式? 我在程序退出后设置为了原来的样式, 难道.... plp626 截张图看看,
作者: plp626 时间: 2012-6-8 17:39
是光标大小中选择“大”的模式, 我点击属性又改回“小”了
再次运行那个现象又消失了;
另外还有一个奇怪的现象, 我偶尔一次运行mouse.exe 没有相应, 我多是运行又推出, 忽然又相应了;
有时间好还研究下源代码;学学api;
----------------
这个mouse可以增强bat很多用途;
顶下。。。
作者: 女孩不哭 时间: 2012-6-8 18:09
回复 28# plp626
程序在运行时, 会保存先前的光标设置, 程序结束后会还原运行该程序之前的相关设置, 但是, 如果你是在 mouse.exe 运行的过程中修改了设置, 那么, 在mouse.exe退出后就会把光标还原为最先的样式, 所以导致修改设置失败.
对于无响应那个,,我不是很清楚, 可能是我没有错误检测, 我修改了下源代码, 简单地检测了错误....
msdn 上说对于菜单消息, 应该交给系统处理, 所以 我没有处理菜单消息....但如果频繁地调用光标状态检测, 又可能开销太大.
修改后的程序和源代码都马上上传
作者: garyng 时间: 2012-6-8 21:54
回复 22# plp626
用Masm32来编呗 include和includelib 来假如几个文件头 win32api就能用了阿
Ps:再加上看罗云彬的«windows 环境下的32汇编语言程序设计»
作者: garyng 时间: 2012-6-8 21:58
回复 28# plp626
也许楼主的程序在用SetConsoleMode 之前没用GetConsoleMode 保存原来的设置
在退出前没把旧设置设置回去
作者: 女孩不哭 时间: 2012-6-8 23:25
回复 31# garyng
既先调用了 GetConsoleMode, 退出之前也调用了 SetConsoleMode...
鼠标信息也是事先保存好了的.
作者: garyng 时间: 2012-6-9 10:17
回复 32# 女孩不哭
哦 那就很难说 了 plp626大大贴个截图呗
作者: defanive 时间: 2012-6-9 11:27
回复 16# plp626
我的博客里面有写鼠标API的相关文章,自己写一个都可以了。。
最近都没时间搞编程,其实源码在电脑上,重新编译一次就可以到5KB了
不过嘛,人懒了。。混论坛进入只看帖不回帖状态。。
作者: neorobin 时间: 2012-6-9 11:41
这里有一段获取鼠标点击坐标的 debug 代码
Index » Windows CMD Shell » Using Mouse in a Batch Script
http://ss64.org/viewtopic.php?id=741- @echo off
- REM BX 按键, 0001: 左键; 0002: 右键.
- REM 坐标: 字符界面区域左上角为 (0列, 0行) (横向分列, 纵向分行)
- REM CX 点击的列坐标
- REM DX 点击的行坐标
-
- >~Zmouse (
- echo e100 B8 1 0'3'DB CD'3'B0 3'C'CD'3'B DB't'FA 91 D3 EA D3 E8 91 C3
- echo g116
- echo q
- )
- <~Zmouse Debug
- pause
- exit
复制代码
作者: sl543001 时间: 2014-3-31 10:26
顶一个,收下了
作者: zhangzsky 时间: 2018-4-23 20:08
终于找到出处了,话说amos又是哪里来的?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |