Napisałem sobie ostatnio dll wstrzykiwany do danego programu tworzący nowy wątek i robiący w funkcji wątku swoje, otóż mój problem polega na tym że wszystko za wolno chodzi jest tam funkcja GetPixel która czasami nie nadąża za szybkością zmieniania się piksela, i SendInput który naciska przycisk "mouse3", nie wiem co ale coś za wolno chodzi czy jest to wykrywanie piksela czy naciśnięcie pokrętła myszki. Czy jest jakiś sposób aby to wszystko przyśpieszyć? Kiedy usunę Sleep() program któremu wstrzyknąłem dll muli się.
#include <windows.h>
#include <gdiplus.h>
const int SX = GetSystemMetrics(SM_CXSCREEN);
const int SY = GetSystemMetrics(SM_CYSCREEN);
const int SCREEN_X = (SX/2);
const int SCREEN_Y = (SY/2);
DWORD WINAPI ThreadFunction(PVOID pvParam)
{
// pixel detect and shooting
register HDC hdc = GetDC(0);
register COLORREF lcolor;
register INPUT ip;
DWORD shotbot = 0;
ip.type = INPUT_MOUSE;
ip.mi.dx = 0;
ip.mi.dy = 0;
ip.mi.dwExtraInfo = 0;
ip.mi.dwFlags = MOUSEEVENTF_MIDDLEDOWN;
while(1)
{
if(shotbot == 1)
{
Sleep(1);
lcolor = GetPixel(hdc,SCREEN_X,SCREEN_Y);
if(lcolor == RGB(255, 0, 0))
{
Sleep(50);
ip.mi.dx = 0;
ip.mi.dy = 0;
ip.mi.dwFlags = MOUSEEVENTF_MIDDLEDOWN;
SendInput(1, &ip, sizeof(INPUT));
Sleep(50);
ip.mi.dx = 0;
ip.mi.dy = 0;
ip.mi.dwFlags = MOUSEEVENTF_MIDDLEUP;
SendInput(1, &ip, sizeof(INPUT));
}
}
Sleep(50);
if(GetAsyncKeyState(0xA4) && GetAsyncKeyState(0x53))
{
if(shotbot == 1)
{
Sleep(50);
shotbot = 0;
PlaySound((LPCSTR)SND_ALIAS_SYSTEMASTERISK, NULL, SND_ALIAS_ID);
}
else
{
Sleep(50);
shotbot = 1;
PlaySound((LPCSTR)SND_ALIAS_SYSTEMEXCLAMATION, NULL, SND_ALIAS_ID);
}
}
}
return 0;
}
BOOL WINAPI
DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
if(fdwReason==DLL_PROCESS_ATTACH)
{
//MessageBox(0,"oppkan.dll loaded.","Attention",0);
CreateThread(0, 0, ThreadFunction, 0, 0, NULL);
}
return TRUE;
}