Как может я блокировать вход клавиатуры и мыши в C#?

Ваши ограничения в отношении того, какие функции / заголовки вы можете использовать, создают сильное впечатление, что вы должны непосредственно анализировать и манипулировать представлениями float. Это также предполагает допущение о конкретном представлении float, но формат двоичного32 IEEE-754 с прямым порядком байтов является довольно хорошей ставкой. Я полагаю, вы уже изучали это.

Вы можете получить доступ к представлению значения с плавающей запятой через указатель unsigned char:

_Bool my_isnan(float f) {
    unsigned char *bytes = (unsigned char *) &f;
    // analyze bytes[0], bytes[1], etc. ...
}

Вы можете манипулировать float представлениями аналогичными способами.

Я оставляю вам подробности анализов / манипуляций, так как это кажется ключевым моментом упражнения, и я не собираюсь делать вашу домашнюю работу за вас.

12
задан GEOCHET 25 February 2009 в 15:46
поделиться

3 ответа

Взгляните на эту статью Processing Global Mouse и Keyboard Hooks в C#. Парень, который написал эту статью, провел большое исследование вокруг проблемы.

Возможно, существует что-то в нем, можно использовать.

1
ответ дан 2 December 2019 в 05:16
поделиться

Подробно останавливаясь на (корректном) ответе Josh's. Вот подпись PInvoke для того метода.

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);
  }
}

Править

Добавленный некоторый код, чтобы продемонстрировать, как заблокироваться для интервала

21
ответ дан 2 December 2019 в 05:16
поделиться

Изучите функцию BlockInput Win32

Походит на некоторое забавное тестирование :)

7
ответ дан 2 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: