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

Đề tài: Keystroke trong C# (ALT/CTRL + ....)

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    8

    Angry Keystroke trong C# (ALT/CTRL + ....)

    Các bạn cho mình hỏi làm thế nào để sendMesseage đc tổ hợp phím trong C# vậy?
    Mình có cái form,có 1 button,mình muốn khi click vào button thì nó send 1 đoạn text vào trong notepad rồi bấm Ctrl + S (Hoặc nó có thể bấm ALT + F cũng đc).Mình chỉ muốn xem cách thức truyền tổ hợp phím vào = cách nào thôi.

    Mình đã thử SendKey.Send(),sendMessage & keybd_event đều ko đc,có thể tại mình chưa hiểu các tham số truyền vào.

    Các bạn giải đáp giúp với nhé

  2. #2
    Ngày gia nhập
    10 2010
    Bài viết
    518

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    8

    Mình đã đọc đi đọc lại cái topic đó suốt hôm qua rồi nhưng vẫn chưa hiểu.Sợ đặt trùng câu hỏi nên đã tìm lại trên forum rồi mà,hôm nay mình bí quá phải leo lên đây,bạn giải thích giúp mình với.
    + Tại sao phải khai báo hằng như thế này ?
    Code:
    public const int WM_COPY = 0x0301;
            public const int WM_PASTE = 0x0302;
            public const int WM_COMMAND = 0x0111;
    ... Tại sao WM_COPY lại = 0x0301,WM_PASTE = 0x0302.Cái mã này tra ở đâu & mã để truyền các phím khác vào là gì (CTRL,SHIFT,ALT...)?
    + Mình biết rằng muốn sendMessage thì phải import cái này
    Code:
    [DllImport("user32.dll", CharSet=CharSet.Auto)]
            public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
    ...và lúc thực hiện sẽ như thế này
    Code:
    SendMessage(hwndNotepad, WM_PASTE, (IntPtr)0, (IntPtr)0);
    Nhưng mình ko hiểu mấy cái chỗ màu đỏ,bạn giải thích giúp mình với.Mình cám ơn bạn nhiều lắm

  4. #4
    Ngày gia nhập
    10 2010
    Bài viết
    518

    1: Bản thân tên nó cũng nói lên nó dùng làm gì rồi, cái đấy là hằng số cố định-mấy ông viết MS Window quy định thế, tham khảo trong msdn or api viewer để biết giá trị.
    2: hàm sendmessage có nhiều tác dụng lắm wParam, lParam thay đổi tùy theo mục đích gọi hàm. Trong trường hợp này nó k quan trọng lắm điền gì vào cũng dc. có thể này IntPtr bằng int thôi vẫn ngon. còn làm thế nào để biết thì google thôi-cái này chỉ là cú pháp.
    cách gửi ctrl+ 1 phím trong đấy m có nói rồi mà.

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    8

    Cảm ơn bạn rất nhiều,mình làm đc rồi,sử dụng SetForegoundWindow & Sendkey

  6. #6
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Mặc định Keystroke trong C# (ALT/CTRL + ....)

    thực ra cái bạn chủ thread cần là tìm hiểu cơ chế Message loop in Microsoft Windows, Messages and Message Queues,

    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

    tìm hiểu hàm SendMessage của windows api

    sau khi hiểu cơ chế này rồi thì bạn sẽ hiểu tại sao lại code thế kia

Các đề tài tương tự

  1. Cách bắt tổ hợp phím(ctrl-v, ctrl-c) dùng hook, mfc
    Gửi bởi tieulamtu trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 09-06-2012, 01:51 PM
  2. Vô hiệu hóa Alt+tab , Ctrl+esc trong C#?
    Gửi bởi trantrungthuong trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 19-06-2010, 06:33 PM
  3. Lập trình C Tác dụng của Ctrl + C trong môi trường C ???
    Gửi bởi vodanh01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 15-05-2010, 02:30 PM
  4. cho mình hỏi về lập trình windows + GDI + Keystroke (căn bản thôi)
    Gửi bởi tmblue trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 6
    Bài viết cuối: 24-09-2008, 12:34 AM
  5. Cho hỏi về tổ hợp phím Ctrl+z trong vc++
    Gửi bởi anhtung trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 15-02-2008, 08:27 PM

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