Я использую SendInput() для отправки относительных положений мыши. Сначала заболел, что делаю.Экран становится черным, когда я использую SendInput для отправки координат курсора мыши
Я использую палец для перемещения мыши. Поэтому сначала я отслеживаю свой палец в изображении 640x480 и получаю абсолютное положение в пикселях с изображением.
Затем я отправляю эту позицию следующему методу для генерации относительных команд положения мыши с использованием ввода отправки.
Когда указатель пальца идет на левую границу (xlim1) или курсор правой границы (xlim2), продолжайте прокручивать по горизонтали влево или вправо в зависимости от того, какой предел. Проблема в том, когда я запускаю код и только когда курсор начинает двигаться, экран переходит в черный цвет.
когда я закомментировать часть еще если (се> = PrevX & & ого> xlim2) {....} раздел, то он работает .. (Так что, когда точка пальца идет к правой границе изображений он курсор держит прокрутку по горизонтали вправо. Прокомментированная часть позволяет левую горизонтальную прокрутку).
bool first variable будет true, если это первый раз, мы фиксируем палец. В противном случае это неверно.
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;
}
}
Нет никакой очевидной связи между генерацией ввода мыши и «экраном становится черным». В вашем коде есть недостаток, вы полностью не инициализируете структуру INPUT, генерируя фиктивные данные для MOUSEINPUT.time и .dwExtraInfo. Используйте 'INPUT input = {};« Убедитесь, что после вызова этого кода существует разумная задержка. –
Это сработало !!!!!!!!!! ..... Вау и спас мою жизнь ... Я не могу поблагодарить вас достаточно !!!!!! ......... – user2389323