找图&模拟键盘鼠标MKAssistant(VC++ WINAPI 源代码)

时间:2022-01-12 00:34:13

代码下载

https://github.com/SoDa-GitHub/MKAssistant/releases

API

不同函数中的参数只要名字相同,则用处也相同

UINT ClickPic(…)

从屏幕/指定窗口中找到指定图片,并在延迟指定时间后用鼠标点击指定位置

LPCWSTR lpWindowName
//指定窗口的标题
HWND hWindow
//指定窗口的句柄
HBITMAP hbmSmall
//需要被找到的图片的句柄
INT nAddX = 0
//找到图片后,需要点击的坐标与左上角坐标(0,0)的x坐标偏移量
INT nAddY = 0
//找到图片后,需要点击的坐标与左上角坐标(0,0)的y坐标偏移量
UINT nStep = 1
//搜索图片的步长(步长越长,速度越快,误差越大)
UINT nErrorLimit = 0
//设定点击的误差范围,在点击时生成随机误差,使点击时不会总是精确地点在同一点上,防止被反外挂机制关注
BOOL bDoubleClick = FALSE
//是否双击
UINT nL0M1R2Button = 0
//鼠标左键(Left):0,中键(Middle):1,右键(Right):2
DWORD dwSpan = 0
//延迟指定毫秒后点击

POSITION FindPic(…)

以指定步长从指定大图中搜索指定小图,并返回小图在大图中的坐标

HBITMAP hbmSmall
//小图句柄
HBITMAP hbmLarge
//大图句柄
UINT nStep = 1

HBITMAP GetPic(…)

获取全屏/指定窗口的图像,并返回所获取图像的句柄

LPCWSTR lpWindowName
HWND hWindow

UINT PressKeyboard(…)

根据参数按键盘

LPCWSTR lpWindowName
HWND hWindow
WORD wKey
//键盘按键,按键值由<WinUser.h>设定
UINT nC0D1U2 = 0
//按下并抬起(Click):0,仅按下(Down):1,仅抬起(Up):2

UINT PressMouse(…)

根据参数按鼠标

LPCWSTR lpWindowName
HWND hWindow
INT nX
//点击的x坐标
INT nY
//点击的y坐标
UINT nErrorLimit = 0
BOOL bDoubleClick = FALSE
UINT nL0M1R2Button = 0
DWORD dwSpan = 0

UINT SavePic(…)

获取全屏/指定窗口的图像,并按参数保存

LPCWSTR lpWindowName
//保存文件的位置/名称
HWND hWindow
LPCWSTR lpFileName

使用方法

在Visual Studio中点击“Show All Files”
找图&模拟键盘鼠标MKAssistant(VC++ WINAPI 源代码)
将压缩包中的MKAssistant文件夹拖入到工程目录中,然后右击“Include In Project”
找图&模拟键盘鼠标MKAssistant(VC++ WINAPI 源代码)
include头文件即可调用API

#include "MKAssistant\MKAssistant.h"

如果屏幕DPI不为100%,在调用MKAssistant API前应先设置DPI敏感

#include <ShellScalingAPI.h>
#pragma comment(lib,"Shcore.lib")

SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);

测试代码(Win32 Project)

#include <ShellScalingAPI.h>
#include <tchar.h>
#include <Windows.h>
#include "MKAssistant\MKAssistant.h"
#pragma comment(lib,"Shcore.lib")

INT WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpszCmdLine, INT iCmdShow) {
SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
SavePic(L"a.jpg");
return 0;
}

更新日志

v1.0
初步整理完成,发布

一些废话

旧版是一年前匆匆忙忙写的,叫“PictureMouseKeyboard”,挺长挺蛋疼的名字,而且还有一个无法适配DPI的致命伤,一年后终于有时间认真重新整理一下这个项目了。一年后再来搞这个项目时水平已经提升了不少,解决了适配DPI的问题,并且解决了一些BUG。当初写的是dll,但是发现debug和调用的时候都太麻烦了,本来就一开源的轻巧的小东西,没必要做成dll隐藏实现过程吧,于是就改成发布代码了。还有很多要完善的地方,正在慢慢修补,一年前水平太菜导致写了很多很烂的代码,造了很多乱七八糟的BUG,构架也很糟糕,嘛,是该彻底洗刷一遍了。注释有点杂乱,以后有空就会多补一些注释。因为参数太多,而且以后还会有更多的函数和功能加进来,感觉有必要写个wiki查询页面,像MSDN那样,不过我好像想多了,应该也没什么人会来看。