Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Method SendMessage của thư viện user32.dll?

Go down

Method SendMessage của thư viện user32.dll? Empty Method SendMessage của thư viện user32.dll?

Bài gửi  NguyenThuyPhuong_I12A 27/3/2012, 23:43

Mình có đoạn code:

[DllImport("user32.dll", CharSet=CharSet.Auto)]

private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

public static int MakeParam(int loWord, int hiWord)
{
return ((hiWord << 0x10) | (loWord & 0xffff));
}

public void click(IntPtr hwnd, Point pos)
{
SendMessage(hwnd, 0x200, IntPtr.Zero, (IntPtr) MakeParam(pos.X, pos.Y));
Thread.Sleep(300);
SendMessage(hwnd, 0x201, IntPtr.Zero, (IntPtr) MakeParam(pos.X, pos.Y));
Thread.Sleep(200);
SendMessage(hwnd, 0x202, IntPtr.Zero, (IntPtr) MakeParam(pos.X, pos.Y));
}

IntPtr hwnd = IntPtr.Zero;
public Point toa_do = new Point(0xf5, 0x106);
this.click(this.hwnd, toa_do);



Mình có 1 số thắc mắc : Muốn hỏi may bạn.
- IntPtr.Zero có nghĩa là gì ?
- Hàm MakeParam có tác dụng gì ? 2 tham số của hàm này có tác dụng gì ?
- Hàm SendMessage có tác dụng gì ? 4 thám số của hàm này có tác dụng gì ?

Nếu mình gọi hàm click như trên thì kết quả sẽ là gì ?

Admin
- Lấy code ở đâu thì phải đọc kỹ chức năng của nó ! (dù đọc tiếng Anh khó)
- Có thể thấy: Các SendMessage trên thay ta "Click" vào điểm với toạ độ cho trước trong cửa sổ cần.
Cụ thể:
+ SendMessage(hwnd, 0x200, IntPtr.Zero, (IntPtr) MakeParam(pos.X, pos.Y)) với hằng 0x200 (WM_MOUSEMOVE) : "Hơ" con trỏ chuột tới vị trí (X,Y)
+ SendMessage(hwnd, 0x201, IntPtr.Zero, (IntPtr) MakeParam(pos.X, pos.Y)) với hằng 0x201 (WM_LBUTTONDOWN) : "Ấn" phím trái chuột xuống tại vị trí (X,Y)
+ SendMessage(hwnd, 0x202, IntPtr.Zero, (IntPtr) MakeParam(pos.X, pos.Y)) với hằng 0x202 (WM_LBUTTONUP) : "Nhả" phím trái chuột ra từ vị trí (X,Y)
- IntPtr.Zero đã được giải thích trên lớp.
- Hàm tự chế MakeParam dùng để trả về số nguyên duy nhất với 2 thành phần X, Y (toạ độ) trong đó (giá trị Y nằm tại 2 byte đầu, giá trị X tại 2 byte cuối)
NguyenThuyPhuong_I12A
NguyenThuyPhuong_I12A

Tổng số bài gửi : 35
Join date : 24/02/2012
Age : 38
Đến từ : TP_ Quảng Ngãi

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết