Tôi đang sử dụng SendInput() để gửi các vị trí tương đối của con chuột. Đầu tiên bị bệnh điện thoại cho bạn những gì đang làm.Màn hình chuyển sang màu đen khi tôi sử dụng SendInput để gửi các vị trí con trỏ chuột
tôi sử dụng ngón tay để di chuyển chuột. Vì vậy, đầu tiên tôi theo dõi ngón tay của tôi trong một hình ảnh 640x480 và có được vị trí tuyệt đối bằng pixel với hình ảnh.
sau đó tôi gửi vị trí đó đến phương pháp sau để tạo các lệnh vị trí chuột tương đối bằng cách sử dụng đầu vào gửi.
Khi ngón tay đi đến ranh giới bên trái (xlim1) hoặc con trỏ bên phải (xlim2) tiếp tục cuộn theo chiều ngang sang trái hoặc phải tùy thuộc vào giới hạn nào. Vấn đề là khi tôi chạy mã và chỉ khi con trỏ bắt đầu di chuyển, màn hình chuyển sang màu đen.
khi tôi nhận xét phần khác nếu (cx> = prevX & & cx> xlim2) {....} phần, sau đó nó hoạt động .. (Vì vậy, khi ngón tay trỏ đến giới hạn bên phải của hình ảnh con trỏ tiếp tục cuộn theo chiều ngang sang bên phải phần nhận xét cho phép cuộn ngang bên trái).
Biến đầu tiên bool sẽ là true nếu đây là lần đầu tiên, chúng tôi nắm bắt được ngón tay. Nếu không thì nó là sai.
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;
}
}
Không có kết nối rõ ràng giữa việc tạo đầu vào chuột và "màn hình chuyển sang màu đen". Có một lỗ hổng trong mã của bạn, bạn không khởi tạo cấu trúc INPUT hoàn toàn, tạo ra dữ liệu không có thật cho MOUSEINPUT.time và .dwExtraInfo. Sử dụng 'INPUT input = {};" Đảm bảo có sự chậm trễ hợp lý sau khi bạn gọi mã này –
Nó hoạt động !!!!!!!!!! ..... Wow u đã cứu mạng tôi ... Tôi không thể cảm ơn bạn đủ !!!!!! ......... – user2389323