Trang 2 trên tổng số 2 Đầu tiênĐầu tiên 12
Từ 11 tới 18 trên tổng số 18 kết quả

Đề tài: [hỏi] - điều khiển control 1 chương trình khác được cài đặt trong win bằng c#

  1. #11
    Ngày gia nhập
    11 2013
    Bài viết
    512

    Mặc định [hỏi] - điều khiển control 1 chương trình khác được cài đặt trong win bằng c#

    Trích dẫn Nguyên bản được gửi bởi mmnol Xem bài viết
    e đã tìm hiểu cái nầy rất nhiều, cũng hiểu chút ít nhưng vẩn làm k được. a có bài hướng dẫn nào về cách dùng những hàm trên không? hoặc cho e xin link để xem cũng được. e tìm rất nhiều trên google nhưng vẩn k làm được. thằng sky++ rất hay nhưng e lại vẩn chưa vận dụng được nó.
    Để hiểu được cái này thì nó hơi rộng. Mình sẽ hướng dẫn bạn từng bước.
    1. Bạn phải khai báo 3 hàm API kia.
    Visual C# Code:
    1. [System.Runtime.InteropServices.DllImport("user32.dll")]
    2. private extern static IntPtr FindWindow(string className, string WindowName);
    3.  
    4. [System.Runtime.InteropServices.DllImport("user32.dll")]
    5. private extern static IntPtr FindWindowEx(IntPtr Parent, IntPtr ChildAfter, string className, string WindowName);
    6.  
    7. [System.Runtime.InteropServices.DllImport("user32.dll")]
    8. private extern static IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
    Mình sẽ ví dụ với Unikey, sẽ click vào nút [Thông tin] trên giao diện Unikey.
    B2. Tìm handle của cửa sổ UniKey.
    Visual C# Code:
    1. IntPtr UnikeyHandle = FindWindow(null, "UniKey 4.0 RC2");
    2. // Nếu UnikeyHandle = IntPtr.Zero là không tìm thấy, hãy kiểm tra lại đoạn string. Đây là tiêu đề cửa sổ.
    B3. Từ handle của cửa sổ chính, tìm handle của cửa sổ con. Ở đây ta tìm nút [Thông tin] dựa vào đoạn string là Thông tin".
    Visual C# Code:
    1. IntPtr NutThongTinHandle = FindWindowEx(UnikeyHandle, IntPtr.Zero, null, "Thông tin");
    2. // Nếu NutThongTinHandle = IntPtr.Zero là không tìm thấy, hãy kiểm tra lại đoạn string.
    B4. Tìm thấy nút [Thông tin] rồi ta gửi một tin nhắn tương ứng click đến nút đó thông qua handle của nó.
    Visual C# Code:
    1. SendMessage(NutThongTinHandle, 0x00F5, IntPtr.Zero, IntPtr.Zero);
    2. // 0x00F5 tương ứng với tin nhắn click

    Bây giờ bạn bật cửa sổ UniKey lên rồi chạy chương trình và kiểm tra xem nút Thông tin trên UniKey có được nhấn không. Nếu được nhấn thì Unikey sẽ show ra cái cửa sổ thông tin.
    Nếu vui vẻ. Bạn có thể them hàm SetWindowText để đổi chữ Thông tin thành chữ gì đó )
    Visual C# Code:
    1. [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    2. public static extern bool SetWindowText(IntPtr hwnd, String lpString);
    3. SetWindowText(NutThongTinHandle,"Hehe");
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Unikey.png
Lần xem:	1
Size:		11.0 KB
ID:		50003
    Đã được chỉnh sửa lần cuối bởi Duong_act : 15-10-2016 lúc 03:28 PM.

  2. #12
    Ngày gia nhập
    04 2016
    Bài viết
    27

    CẢM ƠN THẦY @Duong_act rất dễ hiểu.

  3. #13
    Ngày gia nhập
    09 2016
    Bài viết
    1,005

    Trích dẫn Nguyên bản được gửi bởi mmnol Xem bài viết
    CẢM ƠN THẦY @Duong_act rất dễ hiểu.
    Hiểu là đơn giản, mmnol và Duong_act có làm được không khi UniKey chui vô SysTray nằm đó.

  4. #14
    Ngày gia nhập
    04 2016
    Bài viết
    27

    @Duong_act
    @fms17

    chào 2 anh, về cơ bản là e đã hiểu và vận dụng được cách để tìm các handle theo ý muốn
    cho e hỏi:
    // 0x00F5 tương ứng với tin nhắn click
    cách tìm những thông số 0x00F5 nầy ở đâu vậy?

    e có làm thử và tìm 1 handle trong 1 chương trình khác và tìm thấy nút button và click được theo hướng dẫn của thầy @Duong_act
    e tiếp tục tìm 1handle nữa sau khi click button bên trên--> tìm thấy nhưng không click vào được.
    - do handle tìm được nó k phải là button nên k click được, e nghỉ vậy. nó là combobox
    2 anh có skype cho e xin để e add skype trao đổi học hỏi kinh nghiệm với. cảm ơn 2 anh

  5. #15
    Ngày gia nhập
    11 2013
    Bài viết
    512

    To @VanHien62
    Mình gà. Mình không làm được.

    - - - Nội dung đã được cập nhật ngày 16-10-2016 lúc 07:25 PM - - -
    To @mmnol
    0x00F5 là mã tin nhắn cho sự kiện click( button). Các mã khác, cho control khác bạn có thể tìm theo từ khoá WINDOWS MESSAGE, SendMessage

  6. #16
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    648

    Mặc định [hỏi] - điều khiển control 1 chương trình khác được cài đặt trong win bằng c#

    Trích dẫn Nguyên bản được gửi bởi fms17 Xem bài viết
    Hiểu là đơn giản, mmnol và Duong_act có làm được không khi UniKey chui vô SysTray nằm đó.
    Bạn có cao kiến gì chăng?

  7. #17
    Ngày gia nhập
    09 2016
    Bài viết
    1,005

    Trích dẫn Nguyên bản được gửi bởi khoaph Xem bài viết
    Bạn có cao kiến gì chăng?
    Tôi thấp, không cao : dưới 2m và trên 1m5
    Cái này bàn tới sáng mai

  8. #18
    Ngày gia nhập
    04 2016
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi Duong_act Xem bài viết
    To @VanHien62
    Mình gà. Mình không làm được.

    - - - Nội dung đã được cập nhật ngày 16-10-2016 lúc 07:25 PM - - -
    To @mmnol
    0x00F5 là mã tin nhắn cho sự kiện click( button). Các mã khác, cho control khác bạn có thể tìm theo từ khoá WINDOWS MESSAGE, SendMessage
    cho e hỏi mình có thể viết 1 function để get lấy message windows k a?
    để e cố gắn tìm kiếm google thử các từ khóa kia xem thế nào
    c# quá hay cho người mới học như e, ngày càng thích c#. cảm ơn các Anh Chị đã nhiệt tình giúp đỡ.

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