Szukam kodu (najlepiej C#), który uniemożliwi wejście klawiatury i myszy.Jak mogę zablokować wejście klawiatury i myszy w C#?
Odpowiedz
patrzeć w funkcji BlockInput Win32
Brzmi jak jakiś testów zabawy :)
Czy mogę zablokować tylko określony typ wejść? Jak tylko klawiatura i mysz. – Kishori
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
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 –
Zobacz zarządzany interfejs API systemu Windows, może on mieć coś, co już zawodzi tę funkcjonalność. http://mwinapi.sourceforge.net/ –
@Matt, zwykle po prostu łapię sig od asystenta PInvoke Interop http://www.codeplex.com/clrinterop – JaredPar
Wystarczy popatrzeć na ten artykuł Processing Global Mouse and Keyboard Hooks in C#. Facet, który napisał ten artykuł, wykonał wiele badań dotyczących problemu.
Być może jest w nim coś, z czego można korzystać.
Czy możesz podać nieco więcej kontekstu, dlaczego chcesz to zrobić? – JaredPar
Masz na myśli tylko w swojej aplikacji lub globalnie w całym systemie? –
I do czego; w końcu mógłbyś odwoływać się do pola tekstowego, który ustawiłby właściwość readonly. –