挡截API的问题?

2025-04-29 23:16:30
推荐回答(1个)
回答1:

挡截sock技术和挡截api技术
不知道这些原理可不可以教给玩家?不可以你们早说啊..别搞人来抓我
鼠标移动原理
模拟鼠标动作api函数mouse_event,它可以实现模拟鼠标按下和放开等动作。

void mouse_event(
dword dwflags, // 鼠标动作标识。
dword dx, // 鼠标水平方向位置。
dword dy, // 鼠标垂直方向位置。
dword dwdata, // 鼠标轮子转动的数量。
dword dwextrainfo // 一个关联鼠标动作辅加信息。
);

其中,dwflags表示了各种各样的鼠标动作和点击活动,它的常用取值如下:

mouseeventf_move 表示模拟鼠标移动事件。

mouseeventf_leftdown 表示模拟按下鼠标左键。

mouseeventf_leftup 表示模拟放开鼠标左键。

mouseeventf_rightdown 表示模拟按下鼠标右键。

mouseeventf_rightup 表示模拟放开鼠标右键。

mouseeventf_middledown 表示模拟按下鼠标中键。

mouseeventf_middleup 表示模拟放开鼠标中键。

(2)、设置和获取当前鼠标位置的api函数。获取当前鼠标位置使用getcursorpos()
函数,设置当前鼠标位置使用

setcursorpos()函数。

bool getcursorpos(
lppoint lppoint // 返回鼠标的当前位置。
);
bool setcursorpos(
int x, // 鼠标的水平方向位置。
int y //鼠标的垂直方向位置。
);

通常游戏角色的行走都是通过鼠标移动至目的地,然后按一下鼠标的按钮就搞定
了。**我们使用上面介绍的api

函数来模拟角色行走过程。

cpoint oldpoint,newpoint;
getcursorpos(&oldpoint); //保存当前鼠标位置。
newpoint.x = oldpoint.x+40;
newpoint.y = oldpoint.y+10;
setcursorpos(newpoint.x,newpoint.y); //设置目的地位置。
mouse_event(mouseeventf_rightdown,0,0,0,0);//模拟按下鼠标右键。
mouse_event(mouseeventf_rightup,0,0,0,0);//模拟放开鼠标右键。

键盘原理
一系列api函数来完成对键盘动作的模拟。

模拟键盘动作api函数keydb_event,它可以模拟对键盘上的某个或某些键进行按下
或放开的动作。

void keybd_event(
byte bvk, // 虚拟键值。
byte bscan, // 硬件扫描码。
dword dwflags, // 动作标识。
dword dwextrainfo // 与键盘动作关联的辅加信息。
);

其中,bvk表示虚拟键值,其实它是一个byte类型值的宏,其取值范围为1-254。有
关虚拟键值表请在msdn上使用

关键字“virtual-key codes”查找相关资料。bscan表示当键盘上某键被按下和放开
时,键盘**硬件产生的扫描码

,我们可以mapvirtualkey()函数在虚拟键值与扫描码之间进行转换。dwflags表示各种
各样的键盘动作,它有两种取

值:keyeventf_extendedkey和keyeventf_keyup。

**我们使用一段代码实现在游戏中按下shift+r快捷键对攻击对象进行攻击。

keybd_event(vk_control,mapvirtualkey(vk_control,0),0,0); //按下ctrl
键。
keybd_event(0x52,mapvirtualkey(0x52,0),0,0);//键下r键。
keybd_event(0x52,mapvirtualkey(0x52,0), keyeventf_keyup,0);//放开r键。
keybd_event(vk_control,mapvirtualkey(vk_control,0),
keyeventf_keyup,0);//放开ctrl键。