2009-02-25 64 views
10

Tôi đang tìm một số mã (tốt hơn là C#) để ngăn đầu vào bàn phím và chuột.Làm cách nào để chặn đầu vào bàn phím và chuột trong C#?

+0

Bạn có thể cung cấp thêm một số ngữ cảnh về lý do bạn muốn thực hiện điều này không? – JaredPar

+0

Bạn có nghĩa là chỉ trong ứng dụng của bạn hoặc trên toàn cầu trên toàn hệ thống? –

+0

Và với những gì; sau khi tất cả, bạn có thể được đề cập đến một hộp văn bản, trong đó thiết lập các tài sản chỉ đọc sẽ làm điều đó. –

Trả lời

7

Nhìn vào BlockInput Win32 chức năng

Âm thanh như một số thử nghiệm niềm vui :)

+0

Tôi có thể chỉ chặn loại đầu vào cụ thể không? Giống như bàn phím và chuột. – Kishori

19

Mở rộng trên (đúng) câu trả lời của Josh. Đây là chữ ký PInvoke cho phương thức đó.

public partial class NativeMethods { 

    /// Return Type: BOOL->int 
    ///fBlockIt: BOOL->int 
    [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint="BlockInput")] 
    [return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] 
public static extern bool BlockInput([System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] bool fBlockIt) ; 

} 

public static void BlockInput(TimeSpan span) { 
    try { 
    NativeMethods.BlockInput(true); 
    Thread.Sleep(span); 
    } finally { 
    NativeMethods.BlockInput(false); 
    } 
} 

EDIT

gia tăng một số mã để chứng minh làm thế nào để chặn cho một khoảng thời gian

+1

Rất cám ơn vì điều này. Bạn có mã nào sử dụng chữ ký này không? Ví dụ đầu vào khối, đợi 30 giây, kích hoạt lại đầu vào. Cảm ơn –

+0

Hãy xem API Managed Windows, nó có thể có thứ gì đó đã kết thúc tốt chức năng này. http://mwinapi.sourceforge.net/ –

+0

@Matt, tôi thường chỉ lấy sig từ Trợ lý liên lạc PInvoke http://www.codeplex.com/clrinterop – JaredPar

1

Hãy nhìn vào bài viết này Processing Global Mouse and Keyboard Hooks in C#. Người viết bài này đã thực hiện rất nhiều nghiên cứu xung quanh vấn đề.

Có thể có một số thứ trong đó bạn có thể sử dụng.

Các vấn đề liên quan