Zmiana z virutal key na inne.
Ostatnio zmodyfikowano 2014-03-19 13:52
jendriii Temat założony przez niniejszego użytkownika |
Zmiana z virutal key na inne. » 2014-03-15 14:36:59 Cześć. Gadałem ostatnio z kolegą, który mi powiedział o innym rodzaju naciskania klawiszy jak virtual keyboard. Mówił coś o MSDN -> input i mam gdzieś wejść w KEBOARDINPUT i "znajdź który obiekt w klasie odpowiadał za scancode. Scancodes są w internecie, google grafika".
Tutaj wam zapodaje kod napisany w c++.
#include <Windows.h>
int main(); DWORD WINAPI bot(LPVOID lpParameter); void changework(void); bool work = false;
/* PRZYKŁAD:
INPUT kbd; kbd.type = INPUT_KEYBOARD; kbd.ki.wVk = 0x30; kbd.ki.wScan = 0; kbd.ki.dwFlags = KEYEVENTF_EXTENDEDKEY; SendInput(1, &kbd, sizeof(INPUT)); */
/* Algorytm: 1 sleep 5 lclick 2 sleep 5 lclick ... 5 sleep 5 lclick */ int main() { ShowWindow(GetConsoleWindow(), SW_HIDE);
CreateThread(NULL, NULL, bot, NULL, NULL, NULL);
while (true) { if(GetAsyncKeyState(0x39)) { changework(); } else if (GetAsyncKeyState(0x75)) { return 0; }
} return 0; }
void changework(void) { work = !work; }
DWORD WINAPI bot(LPVOID lpParameter) { INPUT kbdin; INPUT msin;
kbdin.type = INPUT_KEYBOARD; kbdin.ki.wScan = 0; kbdin.ki.dwFlags = KEYEVENTF_EXTENDEDKEY;
msin.type = INPUT_MOUSE; msin.mi.dx = 0; msin.mi.dy = 0;
while (true) { if (work) { for (int i = 0x31; i <= 0x35; i += 0x1) { kbdin.ki.wVk = i; SendInput(1, &kbdin, sizeof(INPUT)); Sleep(50); msin.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; SendInput(1, &msin, sizeof(INPUT)); msin.mi.dwFlags = MOUSEEVENTF_LEFTUP; SendInput(1, &msin, sizeof(INPUT)); //Sleep(500); } } else { //MessageBox(NULL, "loop2", "ok2", MB_OK); Sleep(100); } } return 0; }
Co mam zrobić aby zmienić rodzaj wciskanych klawiszy na te drugie? Btw, z tym kodem miałem mały problem. Mianowicie miał działać następująco: 1. Odpalasz program 2. Naciskasz klawisz włączający pętle(bodajże 9) 3. Pętla działa 4. Naciskasz jeszcze raz klawisz włączający to pętla się stopuje
A tu sie zrobił problem że raz się stopuje a nieraz muszę klikać ten przycisk z 5 razy zanim się zatrzyma Proszę o pomoc |
|
lukmas3 |
» 2014-03-19 13:52:09 Wg mnie problem tkwi w tym, że jak wciskasz klawisz 9 to trzymasz go za długo, i zmienna blokująca pętle (work) zostaje zmieniona kilkakrotnie do czasu aż puścisz ten klawisz "9". Proponuje dodać jakąś zmienną (bool), która będzie blokować zmiane zmiennej work w funkcji changework, lub poprostu blokowac kolejne wywołania funkcji changework do momentu aż klawisz 9 nie zostanie puszczony |
|
« 1 » |