分享

TSVN源码编译及使用心得

 quasiceo 2012-12-13

TSVN源码编译及使用心得。

单位要求做二次开发,看了一段时间源码。把心得写一下。后来人可以参考。快2点了写点就睡了。

有疑问大家可以交流下。41426423

第一:关于编译的问题,按照readme中的内容下载那些tools需要的东西 还需要安装nant。具体nant的语法可以狗一下。比较繁琐。         
           运行 nant setup 这样可以从头到位编译一遍。当然一般不是不会到生成msi这步的,总归有点错误会发生。但是基本的库文件都会编译出来了。
          因为tsvn源码中只有源码没有生成库,估计是为了节省空间,缩短下载时间吧。注意 hunspell  下面有三个文件有乱码会导致编译出错。
第二:生成完毕后就可以打开tortoisesvn.sln来编译了。可以从头编译到尾巴。

第三:来讲一下整个从shell extern到 tortoiseproc.exe的流程。内部实现还未完全搞明白。
    1 软件基于 windows shell extension运行 所以涉及到shell菜单的编写。具体可以网上找下 vc shell com 编程。有篇到处被转载的不错。看一下如何通过接口控制菜单。如果响应菜单。
    2 看一下整个过程
       1 当鼠标右键文件夹的时候  windows 从HKEY_CLASSES_ROOT\*(文件类型)\shellex\ContextMenuHandlers\TortoiseSVN (guid号) 找到关联com组建 然后调用接口 分析源码
          得知如下:
         2  shell 先是找到{30351349-7B7D-4FCC-81B4-1E394CA267EB}这个clsid 对应为tortorisestub.dll,这样做是为了判断机器上的其他组件是否完成。
         3 tortorisestub中的DllGetClassObject 调用 TortioiseSVN.dl(由TortoiseShell.vcproj生成的)l中的DllGetClassObject。
         4  TortoiseShell:llGetClassObject ->通过参数state判断当前右键的状态。根据不同情况做不同的操作。 然后调用CShellExtClassFactory() 对象。
         5  CShellExtClassFactory  在CreateInstance中调用CShellExt。因为继承了IShellExtInit 所以调用到标准 Initiallize的接口 。然后windows shell通过事件接口传递给这个函数当前文件的类型。
         6   windows shell 然后再次调用这个继承了IContaceMenu的CShellExt。在QueryMenu()中插入右键菜单。
        7  点击右键菜单的时候  根据InvokCommand() 接口函数响应消息 调用 TortoiseProc.exe

hunspell.rar (31.98 KB)

售价: 金币 5  [记录]  [购买]

修正后的hunspell内的三个文件,直接copy就可以了

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多