2009-02-25 22 views
10

Szukam kodu (najlepiej C#), który uniemożliwi wejście klawiatury i myszy.Jak mogę zablokować wejście klawiatury i myszy w C#?

+0

Czy możesz podać nieco więcej kontekstu, dlaczego chcesz to zrobić? – JaredPar

+0

Masz na myśli tylko w swojej aplikacji lub globalnie w całym systemie? –

+0

I do czego; w końcu mógłbyś odwoływać się do pola tekstowego, który ustawiłby właściwość readonly. –

Odpowiedz

7

patrzeć w funkcji BlockInput Win32

Brzmi jak jakiś testów zabawy :)

+0

Czy mogę zablokować tylko określony typ wejść? Jak tylko klawiatura i mysz. – Kishori

19

rozwinięcia on (poprawnej) odpowiedzi Josha. Oto podpis PInvoke dla tej metody.

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

Dodane niektóre kodu do wykazania sposobu blokowania dla interwału

+1

Wielkie dzięki za to. Czy masz jakiś kod, który korzysta z tego podpisu? Na przykład wejście bloku, odczekaj 30 sekund, ponownie włączyć wejście. Dzięki –

+0

Zobacz zarządzany interfejs API systemu Windows, może on mieć coś, co już zawodzi tę funkcjonalność. http://mwinapi.sourceforge.net/ –

+0

@Matt, zwykle po prostu łapię sig od asystenta PInvoke Interop http://www.codeplex.com/clrinterop – JaredPar

Powiązane problemy