跟别人用了一样的头像英文怎么说,他说我偷他头像英文怎么说,该怎么回敬一下对方?

下次自动登录
现在的位置:
& 综合 & 正文
通过全局鼠标键盘事件实现应用程序的自动锁定
我们在进行信息系统开发的时候,有时为了系统数据保密性、安全性得到提升。需要考虑到如果在用户长时间内没有对鼠标及键盘进行操作时,让应用自动锁定。并将当前用户所操作的界面隐藏。那么,为了实现该功能,我们需要对整个计算机内部的鼠标及键盘的操作进行记录。如果长时间内记录没有发生变化,则可以对系统进行锁定。
一、关键类的实现
在.NET现有的类库中,并没有实现对全局(可能是我没有发现)鼠标、键盘操作的相关事件及类的定义。为此,我们需要调用到API来辅助我们这个功能的实现。
那么,我们现在来定义一个API相关的类。并对鼠标、键盘的Hook进行定义及处理。现对这个类暂命名为:MouseKeyHook。
下面是MouseKeyHook的:
public class MouseKeyHook...{
[StructLayout(LayoutKind.Sequential)]
private class POINT
public int
public int
[StructLayout(LayoutKind.Sequential)]
private class MouseHookStruct
public POINT
public int
public int wHitTestC
public int dwExtraI
[StructLayout(LayoutKind.Sequential)]
private class MouseLLHookStruct
public POINT
public int mouseD
public int
public int
public int dwExtraI
[StructLayout(LayoutKind.Sequential)]
private class KeyboardHookStruct
public int vkC
public int scanC
public int
public int
public int dwExtraI
[DllImport("user32.dll", CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall, SetLastError = true)]
private static extern int SetWindowsHookEx(
int idHook,
HookProc lpfn,
IntPtr hMod,
int dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall, SetLastError = true)]
private static extern int UnhookWindowsHookEx(int idHook);
[DllImport("user32.dll", CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]
private static extern int CallNextHookEx(
int idHook,
int nCode,
int wParam,
IntPtr lParam);
private delegate int HookProc(int nCode, int wParam, IntPtr lParam);
[DllImport("user32")]
private static extern int ToAscii(
int uVirtKey,
int uScanCode,
byte[] lpbKeyState,
byte[] lpwTransKey,
int fuState);
[DllImport("user32")]
private static extern int GetKeyboardState(byte[] pbKeyState);
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
private static extern short GetKeyState(int vKey);
private const int WH_MOUSE_LL = <span style="COLOR: #;
private const int WH_KEYBOARD_LL = <span style="COLOR: #;
private const int WH_MOUSE = <span style="COLOR: #;
private const int WH_KEYBOARD = <span style="COLOR: #;
private const int WM_MOUSEMOVE = <span style="COLOR: #x200;
private const int WM_LBUTTONDOWN = <span style="COLOR: #x201;
private const int WM_RBUTTONDOWN = <span style="COLOR: #x204;
private const int WM_MBUTTONDOWN = <span style="COLOR: #x207;
private const int WM_LBUTTONUP = <span style="COLOR: #x202;
private const int WM_RBUTTONUP = <span style="COLOR: #x205;
private const int WM_MBUTTONUP = <span style="COLOR: #x208;
private const int WM_LBUTTONDBLCLK = <span style="COLOR: #x203;
private const int WM_RBUTTONDBLCLK = <span style="COLOR: #x206;
private const int WM_MBUTTONDBLCLK = <span style="COLOR: #x209;
private const int WM_MOUSEWHEEL = <span style="COLOR: #x020A;
private const int WM_KEYDOWN = <span style="COLOR: #x100;
private const int WM_KEYUP = <span style="COLOR: #x101;
private const int WM_SYSKEYDOWN = <span style="COLOR: #x104;
private const int WM_SYSKEYUP = <span style="COLOR: #x105;
private const byte VK_SHIFT = <span style="COLOR: #x10;
private const byte VK_CAPITAL = <span style="COLOR: #x14;
private const byte VK_NUMLOCK = <span style="COLOR: #x90;
public MouseKeyHook()
public MouseKeyHook(bool InstallMouseHook, bool InstallKeyboardHook)
Start(InstallMouseHook, InstallKeyboardHook);
~MouseKeyHook()
Stop(true, true, false);
public event MouseEventHandler OnMouseA
public event KeyEventHandler KeyD
public event KeyPressEventHandler KeyP
public event KeyEventHandler KeyUp;
private int hMouseHook = <span style="COLOR: #;
private int hKeyboardHook = <span style="COLOR: #;
private static HookProc MouseHookP
private static HookProc KeyboardHookP
public void Start()
this.Start(true, true);
public void Start(bool InstallMouseHook, bool InstallKeyboardHook)
if (hMouseHook == <span style="COLOR: # && InstallMouseHook)
MouseHookProcedure = new HookProc(MouseHookProc);
hMouseHook = SetWindowsHookEx(
WH_MOUSE_LL,
MouseHookProcedure,
Marshal.GetHINSTANCE(
Assembly.GetExecutingAssembly().GetModules()[<span style="COLOR: #]),
<span style="COLOR: #);
if (hMouseHook == <span style="COLOR: #)
int errorCode = Marshal.GetLastWin32Error();
Stop(true, false, false);
throw new Win32Exception(errorCode);
if (hKeyboardHook == <span style="COLOR: # && InstallKeyboardHook)
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
hKeyboardHook = SetWindowsHookEx(
WH_KEYBOARD_LL,
KeyboardHookProcedure,
Marshal.GetHINSTANCE(
Assembly.GetExecutingAssembly().GetModules()[<span style="COLOR: #]),
<span style="COLOR: #);
if (hKeyboardHook == <span style="COLOR: #)
int errorCode = Marshal.GetLastWin32Error();
Stop(false, true, false);
throw new Win32Exception(errorCode);
public void Stop()
this.Stop(true, true, true);
public void Stop(bool UninstallMouseHook, bool UninstallKeyboardHook, bool ThrowExceptions)<img id="__Open_Image" onclick="this.style.display='none'; document.getElementById('__Open_Text').style.display='none'; document.getElementById('__Closed_Image').style.display='inline'; document.getElementById('__Closed_Text').style.display='inline';" align="top"
&&&&推荐文章:
【上篇】【下篇】一个按键要做多个事件源时怎么办? - LabVIEW论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
一个按键要做多个事件源时怎么办?
11:45:52  
如图,只是举个例子,类似这样的“确定” 键用在两个事件结构里时,第一次可以成功触发,为什么之后就没有反应了,就进入死循环了?应该怎么改?
(36.59 KB, 下载次数: 1)
11:43 上传
(44.61 KB, 下载次数: 0)
11:43 上传
Labview程序里面就是这样规定的,按照顺序来执行,当第一个条件框进入了之后,里面的那个while循环和事件结构都是不会执行的,从而出现了楼主以上说的死循环。
11:45:53  
Labview程序里面就是这样规定的,按照顺序来执行,当第一个条件框进入了之后,里面的那个while循环和事件结构都是不会执行的,从而出现了楼主以上说的死循环。
12:24:09  
我来回答你这个问题:
你按了确定按钮后进入事件结构中执行对应内容,你在事件结构中再用确定按钮结束内循环是没有意义的,这就类似于你把银行卡插入取款机,你在进行取款的过程中,还能再次插卡吗?
12:26:26  
我不知道你为何要用嵌套while循环,第一次成功触发事件结构,内部while循环已停止,第二次再次按下确定按钮,内部while循环没有运行,所以不会获取到你的按下事件。
12:32:05  
正如楼主所说,你这是一个思路上的错误
13:09:28  
我不知道你为何要用嵌套while循环,第一次成功触发事件结构,内部while循环已停止,第二次再次按下确定按钮 ...
第一次触发后还是进入了内循环的,就好像一直是死循环。我只要把其中一个事件结构删除掉就可以正常触发了,为什么两个不行
20:34:49  
同一个循环内有两个事件结构同时响应一个控件,
LV会轮流执行!这样会导致事件结构锁死!
就如楼上说法这是错误的编程思想。
13:39:48  
了解了,非常感谢!
13:40:43  
同一个循环内有两个事件结构同时响应一个控件,
LV会轮流执行!这样会导致事件结构锁死!
就如楼上说法这是错 ...
了解了,非常感谢!
15:24:34  
Labview程序里面就是这样规定的,按照顺序来执行,当第一个条件框进入了之后,里面的那个while循环和事件结 ...
好的我知道了,谢谢
等待验证会员
17:02:53  
1L&&正解& &你这个问题就得运用&&多见设置ok
助理工程师
01:04:49  
兄弟切记,用事件结构,一定是外面是WHILE,里面是事件,而事件里面最好不要用循环。
等待验证会员
09:43:14  
学习了~~~~~~~~~~~~~~~~~~~
除了亲人欢聚的喜悦
让人头痛的就是来自亲朋好友的过度关怀
“做什么工作啊?”
“工资多少啊?”
“有没有女朋友?”
“什么时候结婚?”
“买房了吗?”
面对让人崩溃的问题,如何自救呢?快来支支招吧!
春节回家,除了见到亲人,儿时的玩伴
那一顿一顿的美食
带了家乡独有的味道
光是想想,都就能让人,垂涎三尺。
快拿起你手中的相机,拍下美食
一起分享你的幸福,还有机会中大奖喔
Powered by

我要回帖

更多关于 炉石传说头像 的文章

 

随机推荐