马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 newer 于 2018-1-22 00:11 编辑
有时候想自己的程序不被ESC取消终止,可以临时屏蔽ESC键,下面代码演示了如何定义钩子(HOOK)
下面代码是个开关命令,屏蔽和解除ESC交替执行。你也可以修改VK_ESCAPE为别的键码,屏蔽其他键。
其中定义的钩子函数是:
拦截WM_KEYDOWN消息,如果是按下ESC键,对应的键盘码是 VK_ESCAPE (27),中断消息循环,让AUTOCAD不知道这个按键发生。
 - (defun _mask-esc (hwnd msg wparam lparam ti pos)
- (cond ((= msg WM_KEYDOWN)
- (setq code wparam)
- (if (= code VK_ESCAPE)
- (xdrx_hook_block_messageloop t)
- )
- )
- )
- )
 - (defun c:tt ()
- (defun _mask-esc (hwnd msg wparam lparam ti pos)
- (cond ((= msg WM_CHAR)
- (setq code wparam)
- (if (= code VK_ESCAPE)
- (xdrx_hook_block_messageloop t)
- )
- )
- )
- )
- (xdrx_begin)
- (xd::hook:register "_mask-esc" nil "屏蔽ESC")
- (if (not #xd_hook_mask_esc)
- (progn
- (xd::hook:enable "_mask-esc" t)
- (setq #xd_hook_mask_esc t)
- )
- (progn
- (xd::hook:enable "_mask-esc" nil)
- (setq #xd_hook_mask_esc nil)
- )
- )
- (xdrx_end)
- (princ)
- )
|