教你自制連點器(C++)

不會用藍(lán)奏云,就寫筆記里吧(求三聯(lián)?。?/p>
#include <iostream>
#include <Windows.h>
#include <mmsystem.h> ?
// 播放提示音要的東西
#pragma comment(lib, "winmm.lib") ?
using namespace std;
int main() {
? ? HWND hwnd = NULL;// 窗口句柄
? ? POINT point;// 鼠標(biāo)坐標(biāo)
? ? bool isstart = false;// 開啟或關(guān)閉
? ? int ms = 0;// 按下或彈起的間隔
? ? // 使用說明
? ? cout << "使用說明:按F8獲取目標(biāo)窗口句柄(確定目標(biāo)窗口),按F9設(shè)置頻率單位為ms,推薦20ms(默認(rèn)為0),按鼠標(biāo)中鍵開啟或關(guān)閉,有提示音,開啟后按住鼠標(biāo)左鍵連點,按住鼠標(biāo)右鍵右連點。" << endl;
? ? while (true)
? ? {
? ? ? ? if (GetAsyncKeyState(VK_MBUTTON))// 設(shè)置開啟或關(guān)閉
? ? ? ? {
? ? ? ? ? ? isstart = !isstart;
? ? ? ? ? ? if (isstart)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "已打開" << endl;
? ? ? ? ? ? ? ? // 播放開啟提示音
? ? ? ? ? ? ? ? PlaySound(TEXT("C:\\Windows\\Media\\Windows Hardware Insert.wav"), NULL, SND_FILENAME);
? ? ? ? ? ? }
? ? ? ? ? ? else {
? ? ? ? ? ? ? ? cout << "未打開" << endl;
? ? ? ? ? ? ? ? // 播放關(guān)閉提示音
? ? ? ? ? ? ? ? PlaySound(TEXT("C:\\Windows\\Media\\Windows Hardware Remove.wav"), NULL, SND_FILENAME);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (GetAsyncKeyState(VK_F8)) {// 獲取窗口句柄
? ? ? ? ? ? hwnd = GetForegroundWindow();
? ? ? ? ? ? if (hwnd != NULL)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << hwnd << endl;
? ? ? ? ? ? ? ? char className[256];
? ? ? ? ? ? ? ? GetClassNameA(hwnd, className, sizeof(className)); // 獲取窗口類名(自己方便、確定獲取)
? ? ? ? ? ? ? ? cout << "窗口類名: " << className << endl;
? ? ? ? ? ? }
? ? ? ? ? ? // 防誤觸
? ? ? ? ? ? Sleep(200);
? ? ? ? }
? ? ? ? if (GetAsyncKeyState(VK_F9))// 獲取按下或彈起間隔
? ? ? ? {
? ? ? ? ? ? cout << "輸入延遲ms(按下和彈起都是這個延遲)" << endl;
? ? ? ? ? ? cin >> ms;
? ? ? ? }
? ? ? ? if (isstart&&hwnd!=NULL&&GetAsyncKeyState(VK_LBUTTON))
? ? ? ? {
? ? ? ? ? ? // 獲取鼠標(biāo)坐標(biāo)
? ? ? ? ? ? GetCursorPos(&point);
? ? ? ? ? ? // 轉(zhuǎn)化為窗口內(nèi)的相對坐標(biāo)
? ? ? ? ? ? ScreenToClient(hwnd,&point);
? ? ? ? ? ? // 模擬左鍵點擊按下事件
? ? ? ? ? ? PostMessageA(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(point.x, point.y));
? ? ? ? ? ? // 按下間隔
? ? ? ? ? ? Sleep(ms);
? ? ? ? ? ? // 模擬左鍵點擊釋放事件
? ? ? ? ? ? PostMessageA(hwnd, WM_LBUTTONUP, 0, MAKELPARAM(point.x, point.y));
? ? ? ? ? ? // 彈起間隔
? ? ? ? ? ? Sleep(ms);
? ? ? ? }
? ? ? ? else if (isstart && hwnd != NULL && GetAsyncKeyState(VK_RBUTTON))
? ? ? ? {
? ? ? ? ? ? // 獲取鼠標(biāo)坐標(biāo)
? ? ? ? ? ? GetCursorPos(&point);
? ? ? ? ? ? // 轉(zhuǎn)化為窗口內(nèi)的相對坐標(biāo)
? ? ? ? ? ? ScreenToClient(hwnd, &point);
? ? ? ? ? ? // 模擬左鍵點擊按下事件
? ? ? ? ? ? PostMessageA(hwnd, WM_RBUTTONDOWN, MK_RBUTTON, MAKELPARAM(point.x, point.y));
? ? ? ? ? ? // 按下間隔
? ? ? ? ? ? Sleep(ms);
? ? ? ? ? ? // 模擬左鍵點擊釋放事件
? ? ? ? ? ? PostMessageA(hwnd, WM_RBUTTONUP, 0, MAKELPARAM(point.x, point.y));
? ? ? ? ? ? // 彈起間隔
? ? ? ? ? ? Sleep(ms);
? ? ? ? }
? ? }
}