[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);
如果我在主线程中运行块输入,那么它可以毫无问题地执行。如果我把它放在一个线程中然后执行它,那么它会返回 true 但不会阻塞输入。更有趣的是,如果我从线程内部(不是从一开始)调试代码也是可行的。
知道为什么吗?不应该每个线程都拥有主线程的特权。顺便说一句,我在管理权限下运行它。