我想制作一个可以根据按键来执行某段代码的程序。怎样可以使程序无论焦点在哪个控件上都可以检测到按键。我想如果程序放进了系统盘也可以监测。

解决方案 »

  1.   

    你在开发商业应用吗?
    我正在做一个控件:系统键盘HOOK。
    功能:能够知道其他进程和铵键消息(例如NotePad,Word ,等等)如果你实现这一功能,需要设置使用HOOK技术。(如果只是得到你自己的进程,这样比较简单)
    如果要得到系统其他进程的键盘消息,需要C++DLL。'***********************************************************
    '*希望能够对你有所帮助!
    '***********************************************************'********************************************
    '对不起,放一点广告,对您带来的不便敬请原谅!
    广告:我的第一个Visual Basic 6.0作品,欢迎大家试用,注册用户得到全部源代码。         EasyDialog能够做什么?
    (为了增强Windows通用打开/保存对话框,能够快速的打开经常访问的文件夹或者文件)
    一、快速地在通用打开/保存对话框中打开你经常访问的文件夹/文件。
    二、快速地在Windows Explorer中打开经常访问的文件夹/文件。
    三、快速地在IE浏览器打开你经常访问的网站。
    四、快速地给你的朋友发Email
    五、能够使您方便地按照逻辑分类来组织和管理您的文件夹/文件,您经常访问的网址,您的Email地址。'********************************************
    '*下载EasyDialog:
    http://www.softboyzhou.com/download/EasyDialog.asp
    '***************
    '*购买EasyDialog:
    http://www.softreg.com.cn/shareware_view.asp?id=/7148D197-1C1D-4E84-B92A-EE2CC07D27C0/
    '***************
    '*给我写信:有什么问题请来信。
    [email protected]
      

  2.   

    用API函数
    RegisterHotKey 注册一个系统全局热键,即使程序不在前台也能收到系统消息
    UnregisterHotKey 注销一个系统全局热键
      

  3.   

    单纯对窗体而言,将form.KeyPreview设置为true,无论焦点在窗体的哪个控件上,只要有按键按下首先会触发 Form的键盘事件,接着才会触发相应的焦点控件的键盘事件。
    若要拦截系统按键,要用api了。
      

  4.   

    form.KeyPreview设置为true但只能为当前的应用程序为激活时才有效,如果楼主只想在当前应用程序激活的情况下按下“快捷键”的话,可以参考楼上的回答,但如果想做一个系统热键的话,,,非RegisterHotKey不可