C++ #include <windows.h> static DWORD WINAPI MainThread(LPVOID lpParam) { while (true) { if (GetAsyncKeyState(VK_XBUTTON1) & 1) { keybd_event(VK_LBUTTON, 0, 0, 0); Sleep(100); keybd_event(VK_LBUTTON, 0, KEYEVENTF_KEYUP, 0); Sleep(50); keybd_event(VK_RBUTTON, 0, 0, 0); Sleep(126); keybd_event(0x43, 0, 0, 0); Sleep(44); keybd_event(0x43, 0, KEYEVENTF_KEYUP, 0); Sleep(5); keybd_event(VK_LBUTTON, 0, 0, 0); Sleep(50); keybd_event(VK_LBUTTON, 0, KEYEVENTF_KEYUP, 0); Sleep(20); keybd_event(VK_RBUTTON, 0, KEYEVENTF_KEYUP, 0); Sleep(50); keybd_event(0x43, 0, 0, 0); Sleep(50); keybd_event(0x43, 0, KEYEVENTF_KEYUP, 0); } Sleep(5); } return 0; } BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { if (ul_reason_for_call == DLL_PROCESS_ATTACH) { DisableThreadLibraryCalls(hModule); CreateThread(NULL, 0, MainThread, hModule, 0, NULL); } return TRUE; } C #include <windows.h> static DWORD WINAPI MainThread(LPVOID lpParam) { while (true) { if (GetAsyncKeyState(VK_XBUTTON1) & 1) { keybd_event(VK_LBUTTON, 0, 0, 0); Sleep(100); keybd_event(VK_LBUTTON, 0, KEYEVENTF_KEYUP, 0); Sleep(50); keybd_event(VK_RBUTTON, 0, 0, 0); Sleep(126); keybd_event(0x43, 0, 0, 0); Sleep(44); keybd_event(0x43, 0, KEYEVENTF_KEYUP, 0); Sleep(5); keybd_event(VK_LBUTTON, 0, 0, 0); Sleep(50); keybd_event(VK_LBUTTON, 0, KEYEVENTF_KEYUP, 0); Sleep(20); keybd_event(VK_RBUTTON, 0, KEYEVENTF_KEYUP, 0); Sleep(50); keybd_event(0x43, 0, 0, 0); Sleep(50); keybd_event(0x43, 0, KEYEVENTF_KEYUP, 0); } Sleep(5); } return 0; } BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { if (ul_reason_for_call == DLL_PROCESS_ATTACH) { DisableThreadLibraryCalls(hModule); CreateThread(NULL, 0, MainThread, hModule, 0, NULL); } return TRUE; } Можете пожалуйста или объяснить или скомпилировать в .asi/.dll
cmake_minimum_required(VERSION 3.31) project(DLL1 DESCRIPTION "Какая-то динамическая библиотека") set(CMAKE_CXX_STANDARD 20) # Создаем директорию, если её нет file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/build") set(CPP_FILES source/main.cpp) add_library(${PROJECT_NAME} SHARED ${CPP_FILES}) set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "DLL_1" PREFIX "" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build" ) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/headers) Код cmake_minimum_required(VERSION 3.31) project(DLL1 DESCRIPTION "Какая-то динамическая библиотека") set(CMAKE_CXX_STANDARD 20) # Создаем директорию, если её нет file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/build") set(CPP_FILES source/main.cpp) add_library(${PROJECT_NAME} SHARED ${CPP_FILES}) set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "DLL_1" PREFIX "" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build" ) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/headers) С помощью CMake собираешь makefile и компилируешь библиотеку