自行开发WORD中的电子签名控件,大家讨论,源码公开(200分)

  • 主题发起人 主题发起人 晓风月
  • 开始时间 开始时间

晓风月

Unregistered / Unconfirmed
GUEST, unregistred user!
这是开源讨论问题,本人正准备为单位开发WORD中的电子签名控件,请各路英雄发表高见。
讨论的问题主要集中在:
1、电子签名的具体实现的思路、方法;
2、OFFICE插件的实现原理、方法;
 
OFFICE插件的实现原理与方法本人已经基本收集完资料,到时一并发上。请大家发表高见!
到时一定开源!!!!!!!!!!!!!!!!!!!
 
可以伪造签名吗?希望你们能做的很好啊。期待中。。。。
 
[:)]帮你UP一下。我也学习一下。到时把资料和源码也发一份给我。我的email是:ddmlove@126.com
先谢过。
 
我也想学习一下这方面的知识,版主有没有QQ,我们交流交流
我的QQ:99130936
 
TO:QqMe
  有技术方面的问题大家可以相互帮忙沟通思路,谢谢你和大家的支持。我的QQ是24046202。
 
坚决支持你的正义之举
支持你,帮你up
 
支持你,如果需要我们效劳的尽管提出来!QQ42048035
 
你不会骗人吧
 
先贴上部分已经实现的WORD插件代码。数字签名部分正在封装。希望大家帮助!!!
unit AddInMain;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
ComObj, ActiveX, Dialogs, SignaturePro_TLB, StdVcl, AddinDesignerObjects_TLB, Word_TLB, Office_TLB, Variants
,BtnSvr//BtnSvr是对Office公开的CommandBarButton对象的Delphi封装,自己手工创建该封装
,Word2000, Office2000//要引用该两个单元
,Signature;
type
TAddIn = class(TAutoObject, IAddIn, IDTExtensibility2)
private
FWordApp : TWordApplication; //TWordApplication是在Word2000中封装
FSignatureObj: TSignature;

DICommandBar : CommandBar; //CommandBar是OFFICE2000中封装
WriteBtn : TButtonServer; //TButtonServer是BtnSvr中封装
DIBtn2 : TButtonServer; //TButtonServer是BtnSvr中封装
DIBtn3 : TButtonServer; //TButtonServer是BtnSvr中封装
DIMenu : TButtonServer; //TButtonServer是BtnSvr中封装
protected
{ Protected declarations }
//IDTExtensibility2 methods
procedure OnConnection(const Application: IDispatch; ConnectMode: ext_ConnectMode;
const AddInInst: IDispatch; var custom: PSafeArray); safecall;
procedure OnDisconnection(RemoveMode: ext_DisconnectMode; var custom: PSafeArray); safecall;
procedure OnAddInsUpdate(var custom: PSafeArray); safecall;
procedure OnStartupComplete(var custom: PSafeArray); safecall;
procedure OnBeginShutdown(var custom: PSafeArray); safecall;
public
property WordApp : TWordApplication read FWordApp;

end;

implementation

uses ComServ;

{ TAddIn }

procedure TAddIn.OnAddInsUpdate(var custom: PSafeArray);
begin

end;

procedure TAddIn.OnBeginShutdown(var custom: PSafeArray);
begin

end;

procedure TAddIn.OnConnection(const Application: IDispatch;
ConnectMode: ext_ConnectMode; const AddInInst: IDispatch;
var custom: PSafeArray);
var
WA : word2000._Application;
begin
FWordApp := TWordApplication.Create(nil);
FSignatureObj := TSignature.Create();
WA := Application as word2000._Application;
WordApp.ConnectTo(WA);//创建WordApp连接到WORD,后面要释放
//ShowMessage('FGB数字签名插件连接到' + WordApp.Name);
end;

procedure TAddIn.OnDisconnection(RemoveMode: ext_DisconnectMode;
var custom: PSafeArray);
begin
//ShowMessage('FGB数字签名插件从Word释放');
WriteBtn.Free;
DIBtn2.Free;
DIBtn3.Free;

FSignatureObj.Free;
FWordApp.Free;
WordApp.Free;//释放对象
end;

procedure TAddIn.OnStartupComplete(var custom: PSafeArray);
var
MenuIntf, BtnIntf, BtnIntf2, BtnIntf3 : CommandBarControl;
i : integer;
ToolsBar : CommandBar;

begin

DICommandBar := nil;
for i := 1 to WordApp.CommandBars.Count do
begin
if (WordApp.CommandBars.Item.Name = '数子签名插件') then
DICommandBar := WordApp.CommandBars.Item;
end; // see if we alreadt registered the command bar with Word

if (Not Assigned(DICommandBar)) then begin
DICommandBar := WordApp.CommandBars.Add('数子签名插件', EmptyParam, EmptyParam, EmptyParam);
DICommandBar.Set_Protection(msoBarNoCustomize);
end;
//ShowMessage(VarToStr(DICommandBar.Controls.Count));

if (DICommandBar.Controls.Count > 0) then
begin
BtnIntf := DICommandBar.Controls.Item[1];
BtnIntf2 := DICommandBar.Controls.Item[2];
BtnIntf2 := DICommandBar.Controls.Item[3];
end
else
begin
BtnIntf := DICommandBar.Controls.Add(msoControlButton,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);
BtnIntf2 := DICommandBar.Controls.Add(msoControlButton,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);
BtnIntf3 := DICommandBar.Controls.Add(msoControlButton,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;

WriteBtn := TButtonServer.Create(nil);
WriteBtn.ConnectTo(BtnIntf as _CommandBarButton);
WriteBtn.Caption := '手写签名';
WriteBtn.Style := msoButtonCaption;
WriteBtn.Visible := true;

WriteBtn.OnClick := FSignatureObj.WriteBtnClick;

DIBtn2 := TButtonServer.Create(nil);
DIBtn2.ConnectTo(BtnIntf2 as _CommandBarButton);
DIBtn2.Caption := '电子印章';
DIBtn2.Style := msoButtonCaption;
DIBtn2.Visible := true;

DIBtn3 := TButtonServer.Create(nil);
DIBtn3.ConnectTo(BtnIntf3 as _CommandBarButton);
DIBtn3.Caption := '盖章设定';
DIBtn3.Style := msoButtonCaption;
DIBtn3.Visible := true;

DICommandBar.Set_Visible(true);



end;

initialization
TAutoObjectFactory.Create(ComServer, TAddIn, Class_AddIn,
ciMultiInstance, tmApartment);
end.
 
学习中^^^
 
楼主,再次帮你UP,我的QQ是:7961719欢迎交流。同时对你公布源码的壮举,很是值得各位同仁学习。
 
去年有个类似的东西赚了好多亿..
 
好东东,期待哦.......
 
TO:duhai_lee
  赚好多亿的事是知你是开玩笑的,这里只讨论技术问题。谢谢你的参入!

希望大家参入讨论,现在遇到的问题是:WORD中怎样实现手写签名和手写批注,并透明显示在WORD中。
 
不是玩笑, 是人家针对律师等行业开发的word , 具体东西忘了, 因为ms 的word 太庞大了,他们针对专门行业的应用开发的, 程序员上有. 好像是今年第二期吧.
收藏你的代码.hoho..
 
做个记号
 
后退
顶部