日期:2014-05-17  浏览次数:20912 次

请问,我注册的全局热键成功了,但换一台电脑就不能使用
小弟用c#做了一个注册全局热键的程序,调用了api。为了方便,把用户每次注册的热键都用xml保存下来,下次启动时当用户登录后就自动从xml中读取之前注册的热键。

现在问题是,用户新建热键后,使用正常,如按ctrl+N 可以打开新窗口,但是当下次软件启动时,我程序中也是一样的注册热键,但却不能用。每次都得重新注册快捷键。
诡异的是,这个程序我在本地调试完全正常,就是我在本机上运行一切正常,但是在别的电脑就不能根据读取的xml信息注册热键。

主要代码如下:

public Form1()
        {
            InitializeComponent();
            handle = Handle;
            
            if (Login() == true)
            {
                LoadXML();
            }            
            //HotKey.RegisterHotKey(Handle, 102, HotKey.KeyModifiers.Ctrl, Keys.D);
        如果把这句放在这里就运行正常,但是放在下面函数中就无法注册成功
}


public void LoadXML()
        {
            XElement rootNode = XElement.Load("hotkey.xml");
            ....
            HotKey.RegisterHotKey(Form1.handle, id, DicKeys[id].Mod, DicKeys[id].Key);
//这里程序运行没报错,但在别的电脑上热键就是无法注册成功
//这个RegisterHotKey方法验证过是没有问题的


        }



请教各位高手~~

------解决方案--------------------
注意热键的key是全局唯一的,否则会出错。
------解决方案--------------------
你发布hotkey.xml这个文件有发布过去吗?
在工程里看这个文件的属性。
复制到输出目录选择“始终复制”
生成操作那里选择“内容”