代码下载
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文件夹拖入到工程目录中,然后右击“Include In Project”
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那样,不过我好像想多了,应该也没什么人会来看。