Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zmiana z virutal key na inne.

Ostatnio zmodyfikowano 2014-03-19 13:52
Autor Wiadomość
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
P-106421
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
P-106779
« 1 »
  Strona 1 z 1