当前位置:编程学习 > C#/ASP.NET >>

怎样对指定的窗口注册快捷键?

private void RegKey(IntPtr hwnd, int hotKey_id, int fsModifiers, int vk)

IntPtr hwnd = FindWindow(null, "xxx"); //查找计算器的句柄

RegKey(hwnd, 49, 0 , 49);

试了下这样注册不行.
RegKey(HANDLE, 49, 0 , 49);这样是注册全局.我不要注册全局的.
只要在指定窗口(xxx窗口)生效.
不影响其他应用程序使用 --------------------编程问答-------------------- 如果是我,就看看IMessageFilter接口,注册全局消息,过滤WM_KEYDOWN消息。 --------------------编程问答--------------------  [DllImport("user32")]
        public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);
        [DllImport("user32")]
        public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case 0x0312:
                    break;
            }
            base.WndProc(ref m);
        }
--------------------编程问答-------------------- 真不懂 --------------------编程问答-------------------- 没注意看啊。原来不是自己程序啊。对别的程序要注册,莫非要
OpenProcess
SetWindowLong->自己的消息处理方法->过滤键盘消息?
这样可行么? --------------------编程问答--------------------
引用 2 楼 wuyq11 的回复:
 [DllImport("user32")]
        public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);
        [DllImport("user32")]
        public static extern bool UnregisterHotKe……


case 0x0312: //WM_HOTKEY
  break;
可是如果注册全局的,即使这里判断,按键也已经被屏蔽了.

引用 4 楼 wuyazhe 的回复:
没注意看啊。原来不是自己程序啊。对别的程序要注册,莫非要
OpenProcess
SetWindowLong->自己的消息处理方法->过滤键盘消息?
这样可行么?


这个过程不熟,贴个例子看看吧. --------------------编程问答-------------------- 快捷键就是 
某控件的Text 设置为 "(&A)全选"
该控件的快捷键就是 Alt + A

另一种是热键 如Ctrl + A --------------------编程问答-------------------- SetWindowsHookEx在自己程序里拦截WH_KEYBOARD消息

然后个根据按键判断  如果想打开计算器就FindWindows

然后ShowWindow --------------------编程问答-------------------- 进来学习的 --------------------编程问答-------------------- 有没有人士尝试过给其它程序的任务栏右键菜单添加特定菜单项并执行指定的程序
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,