WORD2003电子签名插件(支持手写、签章)

1.引言
  WORD电子签名插件,支持手写、本地电子图章、以及网络图章功能。软件使用VC6,以ATL方式编写,软件小巧精致。
  这是我学习ATL的成果,学习过程及程序的编写,前前后后共用了一个多月的时间,花了不少的心血。其间遇到了不少困难,终于都一一解决了。这要感谢www.csdn.net 上的热心朋友,从他们的BLOG文章中,我获得了不少灵感。现在这个软件基本完成了,全部实现了我自己定的设计需求,自己觉得这个软件还有一定的用处,就把它的测试版发布一下,希望使用者多提宝贵意见。
  注:测试版没有任何的功能限制,只是“关于”对话框中显示测试版字样。
  
2.功能
  可以完成手写签名及插入签章的功能。插入签名或签章后,可以监控WORD文档是否被修改。软件的使用界面很简单,只是在WORD里插入了一个工具栏,上面有三个按钮。其它的功能在插入的签名或签章上按右键根据弹出菜单选择执行。
  印章支持多种格式图片,如BMP,JPG,GIF(静止的)等,使用时用印章管理工具把这些导入到印章库即可。
  印章库管理密码:12345
  几个内置的印章使用密码:111111
  
3.软件的使用:
  使用windows系统带的控件注册工具regsvr32.exe,注册一下XXHSignature.dll即可;或者直接运行当前目录下的Register.exe,也可完成注册。这样打开word就可以看到签名工具栏。
 软件包含以下几个文件:
steal.mdb       印章库。
xxhsignature.ini   配制文件,如果没有会自动生成。
XXHSignature.dll   WORD2003的COM加载项。程序的主体。
Register.exe    注册/卸载XXHSignature.dll用,可以不使用,直接使用regsvr32。
register.bat    注册的快捷方式,调用register.exe。纯属辅助,方便使用。
unregister.bat    卸载的快捷方式,带命令行参数调用register.exe。纯属辅助,方便使用。
StealManager.exe   印章管理工具。
说明文档.txt    说明文档。
  
  软件使用VC6、ATL开发,没有使用MFC,所以每个软件都很小巧。
  我在开发时使用的环境为XP、WORD2003,对软件在其它环境下没有进行过测试,不知道存不存在兼容问题。期待大家的反馈,可以给我发EMAIL,或者到我的博客留言。
  如果程序运行有问题,可以使用Unregister.bat或regsvr32 /u将其卸载即可。也可以使用WORD的加载项管理菜单(该菜单默认时不显示,可以点击工具->自定义中找到使之显示),禁止插插件启动时运行。
  另外:软件编译为UNICODE,对WIN98肯定是不支持。
  
  欢迎转载,转载时请不要删除这些信息。谢谢。


         2006-04-25
         作者:wallimn
         email:[email protected]
         QQ:54871876
         博客:http://blog.csdn.net/wallimn

 

1.1版更新
  新版的进行了以下几项改进:
    a.签名及签字对文档内容、文档字体颜色以及文档字体大小敏感,也就是说:修改文档内容、文档中任意字的字体颜色或大小,都会导致文档签名失效。这是个很重要的功能,不知大家有没有意识到。试想一下,如果对合同签字,合同金额为100000,在WORD里将数字的后几个0改成白色,如果签名不对字体颜色敏感,那么签名仍然有效,而合同金额看起来就锐减了。所以说,对字体颜色及大小不敏感,是个很严重的漏洞。市场上的几款其它签名软件基本都有这个漏洞。
    b.修改了WORD中签名工具栏有时不显示的BUG。
    c.当文档签名失效时,重新打开文档的时候,会显示个红叉,直观的显示签名失效。


         2008-02-23

1.2版更新
  添加了读取网络图章功能,可以通过HTTP协议读取放在远程网络上的图章。不需要专门的图章服务器,可以使用任意的WEB服务提供程序,如IIS,tomcat等,将软件包中的web目录部署(白话:拷贝)到WEB的某个目录(tomcat中,考到某个上下文)就可以了。
  然后在“网络图章”对话框中,输入对应的地址,如:http://127.0.0.1/web ,点刷新就可以了。


         2008-10-17

 

  联系:[email protected]

  软件下载:http://wallimn.ys168.com

 

附:

Word手写签名插件(COM加载项、VC6.0ATL)开发思路

  写这个东东,其实就是写一个COM加载项。用VC开发,可以使用MFC、也可以使用ATL;用VB也是个不错的选择。我最终选用了ATL。主要是VC我用得比较多,而ATL通过模板库会给开发带来极大的便利,因此选用了VC使用ATL方式开发。事实证明我的选择是正确的。
  使用VB调用COM接口要相对要方便一些,VB可以很方便地对COM进行编程,编程中也可以直接使用Word的宏代码,基本不用做代码转换。VB不好的地方:发布的时候要带它的运行时库(有点大),还有就是VB的运行效率比不上VC(不过小工程不明显)。
  开始编程,使用VC向导,可以很快的生成COM的框架,然后向工程里插入一个simple object(在菜单插入->插入ATL对象里面)。通过这个对象来改变WORD的菜单、TOOLBAR,这方面的文章很多,我的开发就是借鉴了徐景周的一篇文章,到网上找一下,很多转载(我发现网上原创的东西实在不多呀)。这样一个简单的COM加载项的框架就建好了。
  手写签名部分的实现,这部分都是一些相对编程者容易的问题。简单说一下,首选插入一个对话框(在菜单插入->插入ATL对象里面),加入几个按钮,写一个单向链表用来存签名的笔画,用兼容DC、兼容位图、OleCreatePictureIndirect,把图片创建成一个IPictureDisp对象,以供下面的使用。
  再插入一个Full Control对象,方法同上。把上面一步生成的IPictureDisp写进Full Control对象,再调用WORD的AddOleCtrol方法将这个东东插入就可以了。
  这就是一个简单的流程。说的很粗略,因为不知道感兴趣的人多不多。
  在开发的过程中我遇到了以下这样一些问题,后来慢慢解决了,如果大家有兴趣可以来交流一下。
   1. 如何在插入对象中取到WORD的ActiveDocument的指针(这个不能通过保存的方法来)。
    取Container的指针,再查IDispatch的接口。
   2. 如果在程序里控制控件的删除,如在控件内点击,通过上下文菜单文菜单删除控件。
    可以给控件设置一下标志,然后通过Word的方法遍历对象组,检查对应的标志,然后删除。
   3. 如何保存。
   可以重载框架的Save和Load方法,把对象的相关属性保存。这两个方法会由WORD自动调用。
   4. 如何使用TOOLTIP。
    这个在MSDN里有详细的帮助,可以参照解决。
   5. 如何移动控件。
    处理控件的OnLButtonDown/OnMouseMove/OnLButtonUp消息,然后通过Word的方法移动控件。
     简单写了一下思路,欢迎交流。
 
  软件下载: http://wallimn.ys168.com

你可能感兴趣的:(编程,软件测试,vb,vc++,VB.NET)