51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7682|回复: 5
打印 上一主题 下一主题

解决 TD 与 DELPHI BOOKMARK 快捷键的冲突

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-7-7 19:17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现象:

    开着 td 时在 delphi ide 下无法使用 ctrl + shift + 1 - 9 设置、定位书签,这对开发人员在看 td 的同时开 delphi 却无法使用 bookmark 非常影响心情

分析:

    中午看了一下 TDClientUI80.ocx,原来是 td 启动时会向系统注册全局的快捷键:ctrl + shift + 1 - 9,当在 delphi 的 ide 下按下相应的快捷键时 td 会首先拦截下来,造成 delphi 中 bookmark 快捷键的失灵!

    用 w32Dasm 可以看到 TDClientUI80.ocx td 的具体实现细节其实非常简单:

    首先以 TdFrameX_HotKey_n(n:0-9)为名使用 GlobalAddAtom 向操作系统神情全局原子标识,利用这个标识向系统注册快捷键 RegisterHotKey。

解决办法:

知道缘由了,解决的方式非常多,比如:

    1、修改 ocx 中对 RegisterHotKey 的调用,nop 掉

    2、由于知道他 RegisterHotKey 的方式,利用他实现的原来调用 UnregisterHotKey 取消热键

    3、修改对 RegisterHotKey 的调用,让他即使调用 RegisterHotKey 也没有效果

比较:

    对 1,实现最简单,不过需要修改 TDClientUI80.ocx 文件,发布非常不方便

    对 2,编程比较简单,不过有点“出问题”后补救的感觉,难以自动化

    对 3,原理非常复杂,不过利用网上已有的代码包实现起来还是非常方便的,其中核心代码竟然不超过 10 行!

附件是编译好的 dll

    安装:解压到一个目录,运行 install.bat

    使用:连接 td,他会自动生效的

    卸载:运行 uninstall.bat

关于源码,欢迎来 mail 索取、讨论,或直接发表您的见解 ...

=^0^=

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-1-5 23:22:43 | 只看该作者
恩,不错。谢了。
你有没有关于TD文件系统结构的资料,和TD数据字典的资料共享???
谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-4-28 15:37:39 | 只看该作者
不错,好资料,谢谢了!!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-12-10 15:09:03 | 只看该作者
顶一下,给你发了一封短信息,麻烦查收一下.
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-4-23 13:24:02 | 只看该作者

谢谢

谢谢  顶一下
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-12-22 09:46:50 | 只看该作者
强大
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 12:47 , Processed in 0.072791 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表