Ich verwende SendInput(), um relative Positionen der Maus zu senden. Zuerst krank tel, was ich tue.Der Bildschirm wird schwarz, wenn ich SendInput zum Senden von Mauszeigerpositionen verwende
Ich benutze meinen Finger, um die Maus zu bewegen. Also zuerst verfolge ich meinen Finger in einem 640x480 Bild und erhalte die absolute Position in Pixeln mit im Bild.
Dann sende ich diese Position an die folgende Methode, um relative Mauspositionsbefehle mittels Sendeeingabe zu erzeugen.
Wenn der Finger an den linken Rand (xlim1) oder den rechten Rand (xlim2) springt, scrollen Sie horizontal nach links oder rechts, je nachdem, welches Limit gilt. Das Problem ist, wenn ich den Code ausführen und nur wenn der Cursor beginnt zu bewegen, wird der Bildschirm zu schwarz.
, wenn ich einen kurzen Kommentar zum Teil else if (cx> = Prevx & & cx> xlim2) {....} Abschnitt, dann funktioniert es .. (also die, wenn Finger Punkt geht nach rechts Grenze des Bildes es Cursor Scrollen horizontal nach rechts. Der kommentierte Teil ermöglicht das horizontale Scrollen nach links.
bool erste Variable wird wahr, wenn dies das erste Mal ist, erfassen wir den Finger. Sonst ist es falsch.
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;
}
}
Es gibt keine offensichtliche Verbindung zwischen Mauseingabe und "Bildschirm wird schwarz". Es gibt einen Fehler in Ihrem Code, Sie initialisieren die INPUT-Struktur nicht vollständig und generieren falsche Daten für MOUSEINPUT.time und .dwExtraInfo. Verwenden Sie 'INPUT input = {};" Stellen Sie sicher, es gibt eine angemessene Verzögerung, nachdem Sie diesen Code aufrufen. –
Es hat funktioniert !!!!!!!!!! ..... Wow du mein Leben gerettet ... Ich kann Ihnen nicht danken genug !!!!!! ......... – user2389323