Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: SendMessage & PostMessage đến cửa sổ game nhưng không hoạt động.

  1. #1
    Ngày gia nhập
    01 2009
    Bài viết
    177

    Mặc định SendMessage & PostMessage đến cửa sổ game nhưng không hoạt động.

    Chào mọi người.
    Mình định post câu hỏi này vào box C++ nhưng nghĩ lại do mình code bằng ngôn ngữ C# nên đưa vào đây có lẽ hợp lý hơn.
    Gần đây mình có nghiên cứu về viết auto game (game thục sơn mobile https://thucson.vn/).
    Bỏ qua vấn đề viết auto bằng macro, mình muốn viết auto bằng cách sử dụng API SendMessage và PostMessage đến game. Mình có sử dụng Spy++ để theo dõi sự kiện khi click chuột vào game và đã số gắng để gửi lại tất cả những gì Spy++ đọc được.
    Tuy nhiên khi chạy code thì không được.
    Mình có tìm hiểu trên mạng rất nhiều trong khoảng 3-4 ngày và không thực sự tìm được một phương pháp có hiệu quả.
    Ở đây không biết ai đã từng viết auto game và gặp lỗi tương tự thì có thể nói cho mình phương pháp để mình tham khảo. Bất kỳ ý tưởng và một đoạn code sample với ngôn ngữ nào cũng được.
    Đây là những gì mình đã cố gắng làm.

    Spy++ khi click cửa sổ game bằng cách thao tác trực tiếp.
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		1.PNG
Lần xem:	8
Size:		48.0 KB
ID:		67672

    Spy++ khi chạy code của mình (cố gằng sử dụng API của "user32.dll" để gửi)
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		2.PNG
Lần xem:	9
Size:		76.6 KB
ID:		67673

    Khi nhìn vào những gì phản hồi của Spy++ có thể nhận thấy khi mình gửi SendMesssage SET_CURSOR bằng code có phản hồi là false. Nhưng điều gì đang cố gắng ngăn chặn điều này? Và dù mình có sửa lại đoạn code chạy để SET_CURSOR trả về true (tức khi đó chuột của máy tính đang nằm trong cửa sổ game). Nhưng việc PostMessage Click cũng không thực sự hoạt động. Nó chỉ click tại vị trí thật của chuột, chứ không click vào vị trí (x,y) mà mình gửi PostMessage.

    Bất kỳ một đoạn code nào (bất kỳ ngôn ngữ) có thể click được đến cửa sổ game (không chiếm chuột thực tế) mình sẽ có hậu tạ xứng đáng.
    ​anhnt2810@gmail.com

  2. #2
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    902

    Bạn có thể cho xem đoạn mã bạn muốn Click cửa sổ Game mà không chiếm chuột không. Có thể các bạn khác có ý kiến gì chăng...

  3. #3
    Ngày gia nhập
    08 2017
    Bài viết
    2,634

    Được, kéo nhau vào đây luận về thông điệp:

    http://diendan.congdongcviet.com/threads/t404677::thao-luan-ve-xu-ly-thong-diep-tren-windows.cpp

  4. #4
    Ngày gia nhập
    01 2009
    Bài viết
    177

    Đoạn code mà mình post tại #1 thì mình không còn giữ nữa. Đoạn code hiện tại của mình đã xóa đi khá nhiều dòng code mà mình nghĩ là không cần nữa.
    Đây là đoạn khai báo API
    Visual C# Code:
    1. public static UIntPtr MakeLParam(uint x, uint y)
    2. {
    3.         return new UIntPtr((y << 16) | (x & 0xFFFF));
    4. }
    5.  
    6. [return: MarshalAs(UnmanagedType.Bool)]
    7. [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    8. public static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, UIntPtr lParam);
    9.  
    10. [DllImport("user32.dll", CharSet = CharSet.Auto)]
    11. public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, UIntPtr lParam);
    12.  
    13. [DllImport("user32.dll")]
    14. [return: MarshalAs(UnmanagedType.Bool)]
    15. public static extern bool SetCursorPos(int x, int y);
    Đây là code mình chạy:
    Visual C# Code:
    1. Process processThucSon = Process.GetProcessesByName("ThucSonPlay")[0];
    2. hanlde = processThucSon.MainWindowHandle;
    3. SetCursorPos(dx, dy);
    4. PostMessage(hanlde, (uint)WM.LBUTTONDOWN, new IntPtr(MK_LBUTTON), MakeLParam(dy, dx));
    5. PostMessage(hanlde, (uint)WM.LBUTTONUP, IntPtr.Zero, MakeLParam(dy, dx));
    6. System.Threading.Thread.Sleep(50);
    Đoạn code này click đến ứng dụng đúng với ý đồ của mình (nó click đến đúng bị trí chuột hiện tại) ngay cả khi cửa sổ windows đang active không phải là cửa sổ game.
    Theo mình tìm hiểu nguyên nhân có thể do Message mà Spy++ bắt được CAPTURECHANGED đã ngăn việc mình cố gắng PostMessage có tọa độ khác với tọa độ thực tế của chuột.
    Đã được chỉnh sửa lần cuối bởi family2806 : 29-04-2019 lúc 11:15 PM.
    ​anhnt2810@gmail.com

  5. #5
    Ngày gia nhập
    08 2017
    Bài viết
    2,634

    Mày khóa chứng tỏ mày sợ

    http://diendan.congdongcviet.com/threads/t404677::thao-luan-ve-xu-ly-thong-diep-tren-windows.cpp/page2/

    mày vẫn chưa làm ac min c# mà, đúng không Hoang

  6. #6
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    902

    Mặc định SendMessage & PostMessage đến cửa sổ game nhưng không hoạt động.

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Mày khóa chứng tỏ mày sợ

    http://diendan.congdongcviet.com/threads/t404677::thao-luan-ve-xu-ly-thong-diep-tren-windows.cpp/page2/

    mày vẫn chưa làm ac min c# mà, đúng không Hoang
    Ồ nóng thế, Monre giờ hết lịch sự rồi sao, cứ từ từ bạn hiền, bài vẫn chưa thuộc mà !!!

  7. #7
    Ngày gia nhập
    08 2017
    Bài viết
    2,634

    Hoang chỉ khè mấy đứa xin viên cấp 4 thôi

    mày không so với tao được đâu

  8. #8
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    902

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Hoang chỉ khè mấy đứa xin viên cấp 4 thôi

    mày không so với tao được đâu
    Đừng nóng, đừng nóng, đầu bạn hiền 2 thứ tóc rồi, đừng để trẻ trâu nó cười vào mũi. Để dành sức mà cóp kiếc đi nếu sợ mất, xin phép bạn hiền mình đi ngủ đây, mai lại kiếm vài đề tài / bài viết của bạn làm mồi nhậu. Khà khà...

  9. #9
    Ngày gia nhập
    08 2017
    Bài viết
    2,634

    Trâu bò bạng nhau, ruồi muỗi chết

    Việt Nam nguy cơ bị ‘vạ lây’ từ cuộc chiến thương mại Mỹ - Trung

    Hoang là cái đinh gì mà phải nóng

    https://thanhnien.vn/tai-chinh-kinh-doanh/viet-nam-co-nguy-co-bi-va-lay-tu-cuoc-chien-thuong-mai-my-trung-1080954.html

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn