Używam SendInput() do wysyłania względnych pozycji myszy. Po pierwsze źle rozumiem, co robisz.Ekran jest czarny, gdy używam SendInput do wysyłania pozycji kursora myszy
Używam palca do poruszania myszą. Najpierw śledzę palec w obrazie 640x480 i uzyskuję absolutną pozycję w pikselach na obrazie.
Następnie wysyłam tę pozycję do poniższej metody, aby wygenerować względne polecenia pozycji myszy za pomocą wysyłania danych wejściowych.
Po przesunięciu palca na lewą granicę (xlim1) lub prawą krawędź (xlim2) kursor przewija się poziomo w lewo lub w prawo w zależności od tego, który limit. Problem polega na tym, że uruchomię kod, a gdy tylko zacznie się poruszać kursor, ekran zmieni kolor na czarny.
kiedy skomentować część else if (cx> = PrevX & & cx> xlim2) {....} odcinek, to działa .. (Więc gdy punkt palec idzie do prawej granicy obrazu to kursora przewija poziomo w prawo, skomentowana część włącza przewijanie w lewo).
pierwsza zmienna bool będzie prawdą, jeśli po raz pierwszy przechwycimy palec. W przeciwnym razie jest to fałsz.
void movMouse(int cx, int cy, bool first){
static int prevX = 0;
static int prevY = 0;
static int leftPrevX;
static int rightPrevX;
int mx,my;
if(first == true){
prevX = cx;
prevY = cy;
}
else{
mx = (cx - prevX);
my = (cy - prevY);
if(cx <= prevX && cx < xlim1){
mx = -20;
INPUT input;
input.type = INPUT_MOUSE;
input.mi.mouseData = 0;
input.mi.dx = -(mx);
input.mi.dy = (my);
input.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &input, sizeof(input));
}
else if(cx >= prevX && cx > xlim2){
mx = 20;
INPUT input;
input.type = INPUT_MOUSE;
input.mi.mouseData = 0;
input.mi.dx = -(mx);
input.mi.dy = (my);
input.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &input, sizeof(input));
}
else {
INPUT input;
input.type = INPUT_MOUSE;
input.mi.mouseData = 0;
input.mi.dx = -(mx);
input.mi.dy = (my);
input.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &input, sizeof(input));
}
prevX = cx;
prevY = cy;
}
}
Nie ma oczywistego związku między generowaniem sygnału myszy a "ekranem idzie na czarno". W Twoim kodzie jest błąd, nie zainicjalizujesz całej struktury INPUT, generując fałszywe dane dla MOUSEINPUT.time i .dwExtraInfo. Użyj 'wejścia wejściowego = {};" Upewnij się, że po wywołaniu tego kodu wystąpiło uzasadnione opóźnienie. –
Zadziałało !!!!!!!!!! ..... Wow, uratowałeś mi życie ... Nie mogę ci podziękować wystarczy !!!!!! ......... – user2389323