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

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

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

Bài gửi  NguyenThuyPhuong_I12A on 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)
avatar
NguyenThuyPhuong_I12A

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

Xem lý lịch thành viên

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


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