# aardio 范例: 注册系统全局热键



```aardio
//注册系统热键
import win.ui;
/*DSG{{*/
var winform = win.form(text="注册系统全局热键";right=759;bottom=469)
winform.add(
button={cls="button";text="设置为系统热键";left=281;top=32;right=517;bottom=63;z=2};
hotkey={cls="hotkey";left=49;top=35;right=268;bottom=55;edge=1;z=1};
static={cls="static";left=47;top=107;right=679;bottom=424;transparent=1;z=3}
)
/*}}*/

var hkId;
import key;
winform.button.oncommand = function(id,event){

	//删除之前注册的热键,hkId 如果是 null 空值，此函数忽略不做任何操作 
	winform.unreghotkey(hkId);
	
	/**
	注册系统全局热键函数：
	winform.reghotkey(callback,modifiers,vk) 
	
	参数：
	- callback 为热键回调函数
	- modifiers 为控制键选项,使用 _MOD_ 前缀的常量表示, 0 为不按下控制键,
	- vk 为虚拟键码，使用 _VK_ 前缀的常量表示，对于普通字符按键可以使用大写形式的字节码表示。
	
	例如注册 Ctrl+D 热键:
	hkid = winform.reghotkey(function(id,mod,vk){
		
	},2/*_MOD_CONTROL*/,'D'#);	
	**/
	hkId = winform.reghotkey(
	
		function(id,modifiers,vk){
			winform.msgbox("你按了刚才设置的那个啥！")
		},winform.hotkey.value // [modifiers,vk] 格式的数组也可以作为热键参数。
	);
}

winform.static.text = "系统热键全局有效，即使切换到桌面上的其他程序窗口，热键仍然有效"

winform.show();
win.loopMessage();
```

