2010-12-27 32 views
5

Tôi muốn di chuyển theo chương trình và nhấp chuột bằng cách sử dụng API cửa sổ trong C. Tôi đã tìm kiếm google cao và thấp và không thể tìm thấy bất kỳ hướng dẫn sendInput cho đồng bằng C. Tất cả tôi có thể tìm thấy là C#/C++. Tôi có ít kinh nghiệm với API cửa sổ và rất thích một hướng dẫn tuyệt vời sẽ bao gồm sendInput! Cảm ơn!sử dụng chuột với sendInput trong C

+9

Phiên bản C++ sẽ phù hợp, điều này không khác với Winapi dựa trên C. –

+0

Bạn nên để điều đó như một câu trả lời để tôi có thể đánh dấu bạn là chính xác! : p –

+0

bạn chỉ có thể chấp nhận câu trả lời của bạn, tôi không nghĩ rằng Hans cần đại diện! –

Trả lời

18

Hans Passant phù hợp với mã C++ gần như giống hệt nhau. Đây là những gì tôi đã kết thúc với:

INPUT input; 
input.type = INPUT_MOUSE; 
input.mi.mouseData = 0; 
input.mi.dx = x * (65536/GetSystemMetrics(SM_CXSCREEN)); //x being coord in pixels 
input.mi.dy = y * (65536/GetSystemMetrics(SM_CYSCREEN)); //y being coord in pixels 
input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; 
SendInput(1, &input, sizeof(input)); 
+2

Một điều rất quan trọng cần lưu ý là bạn phải ép 65536 đến một phao nếu không, chuyển đổi kích thước màn hình của bạn sẽ bị tắt bởi một vài pixel. 65536.0f để có độ chính xác cao hơn. –

+0

@ Error454 Bạn có biết tại sao dx và dy phải có định dạng lạ cho chuyển động tuyệt đối không? Di chuyển tương đối mặt khác cần dx và dy là số điểm ảnh thuần túy. – Bitterblue

+1

@ mini-me Chỉ là cách mà msft quyết định làm mọi thứ. Hệ tọa độ của chúng là (0,0) ở trên cùng bên trái và (65535,65535) ở góc dưới cùng bên phải. –

Các vấn đề liên quan