Project1

标题: 贴一个原创的不掉FPS的鼠标和键盘(For VX) [打印本页]

作者: yangff    时间: 2011-2-27 22:02
标题: 贴一个原创的不掉FPS的鼠标和键盘(For VX)
本帖最后由 yangff 于 2011-3-5 08:03 编辑

http://rpg.blue/thread-168748-1-1.html
这个版本无Dll,夏娜真是好人
作者: 一瞬间的幻觉    时间: 2011-2-28 02:56
怎么用啊,杨大哥
作者: IamI    时间: 2011-2-28 06:35
挂全局钩子真的大丈夫么......既然动手恶心了主函数就顺便弄个滚轮吧
作者: 无心孤云    时间: 2011-2-28 09:14
为什么不是XP的呢.....XP的我一直在找这个东西啊...
作者: san9    时间: 2011-2-28 11:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: 匿名    时间: 2011-2-28 17:50
本帖最后由 匿名 于 2011-2-28 17:50 编辑
IamI 发表于 2011-2-28 06:35
挂全局钩子真的大丈夫么......既然动手恶心了主函数就顺便弄个滚轮吧


大丈夫,萌大奶。
虽然可能会有脑残杀软跑出来要杀毒 囧
顺手捏熊猫~\(≧▽≦)/~
作者: yangff    时间: 2011-2-28 18:50
IamI 发表于 2011-2-28 06:35
挂全局钩子真的大丈夫么......既然动手恶心了主函数就顺便弄个滚轮吧

滚轮只能识别滚动,拦截不到方向 = =
作者: 匿名    时间: 2011-2-28 18:51
偶忽然想起来偶曾经告诉过熊猫某邪恶的API可以获得鼠标滚轮神马的……
作者: summer92    时间: 2011-2-28 22:21
- -鼠标和键盘两样东西都不会用到咱制作的游戏中
作者: 里昂sir    时间: 2011-2-28 22:36
好喂,考虑下用键盘喵
作者: 苏小脉    时间: 2011-3-4 03:42
yangff 发表于 2011-2-28 18:50
滚轮只能识别滚动,拦截不到方向 = =

谁说的,处理 WM_MOUSEWHEEL 消息的时候,wParam 就包含了方向的信息。
滚轮的功能也不是没人写过,

沉影的鼠标脚本就有这个功能,当时我和她深入讨论过如何处理这个消息:
http://rpg.blue/forum.php?mod=viewthread&tid=147594
这里还有一个之前写的实例:
http://rpg.blue/forum.php?mod=viewthread&tid=154918
作者: yangff    时间: 2011-3-4 18:11
本帖最后由 yangff 于 2011-3-4 18:13 编辑
苏小脉 发表于 2011-3-4 03:42
谁说的,处理 WM_MOUSEWHEEL 消息的时候,wParam 就包含了方向的信息。
滚轮的功能也不是没人写过,


首先WinHook里面wParam==WM_MOUSEWHEEL
其次本应该包含滚轮方向的lParam每次都会恒等一个固定的值
另外不知道为什么,游戏主进程进去之后就取不到winproc了= =[RPWT???]
作者: 苏小脉    时间: 2011-3-5 02:48
本帖最后由 苏小脉 于 2011-3-5 03:18 编辑
yangff 发表于 2011-3-4 18:11
首先WinHook里面wParam==WM_MOUSEWHEEL
其次本应该包含滚轮方向的lParam每次都会恒等一个固定的值
另外不 ...


替换窗口过程的实例也不少了,沉影的鼠标脚本算一个,真·后台运行的工程也算一个,都可以参考嘛。直接在窗口过程中处理消息,窃以为比装钩子方便。
至于钩子,你是用的 WH_MOUSE 类型的钩子?那如果使用一般的 MOUSEHOOKSTRUCT 是不带 delta 信息的,必须用 MOUSEHOOKSTRUCTEX
作者: yangff    时间: 2011-3-5 08:01
苏小脉 发表于 2011-3-5 02:48
替换窗口过程的实例也不少了,沉影的鼠标脚本算一个,真·后台运行的工程也算一个,都可以参考嘛。直接在 ...

好了,解决了……
其实很简单,WinHook是拦截不到MOUSEHOOKSTRUCTEX的[需要DLL,提权代码导致250抽风]
但是RGSSMain会替换默认的Windows消息机制[也就是所谓的SetWindowsLong]
最后不得在HookWindowsMouse里面夹带了一段SetWindowslong[保证在RGSSMain之后执行XE]
作者: 苏小脉    时间: 2011-3-5 09:29
yangff 发表于 2011-3-5 08:01
好了,解决了……
其实很简单,WinHook是拦截不到MOUSEHOOKSTRUCTEX的[需要DLL,提权代码导致250抽风]
但 ...

夏娜最早就是通过 SetWindowLong 来替换窗口过程函数的,直接在 RM 脚本获得执行权后调用,根本没必要走钩子这一关。我后来实现后台运行也是受了他启发
作者: yangff    时间: 2011-3-5 10:30
苏小脉 发表于 2011-3-5 09:29
夏娜最早就是通过 SetWindowLong 来替换窗口过程函数的,直接在 RM 脚本获得执行权后调用,根本没必要走 ...

那样会多出来一个Dll
作者: 苏小脉    时间: 2011-3-6 10:29
yangff 发表于 2011-3-5 10:30
那样会多出来一个Dll

为啥?你不是自己写 Game.exe 么,在里面可以导出需要的函数,就可以像 DLL 一样动态调用。EXE 和 DLL 都可以看作动态连接库,只不过 EXE 有可执行的入口点,能直接被 OS 装载器装载执行
作者: yangff    时间: 2011-3-6 11:21
本帖最后由 yangff 于 2011-3-6 11:21 编辑
苏小脉 发表于 2011-3-6 10:29
为啥?你不是自己写 Game.exe 么,在里面可以导出需要的函数,就可以像 DLL 一样动态调用。EXE 和 DLL 都 ...


= =那样太蛋疼了……我只是蛋疼的想一个API都看不到……




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1