没有合适的资源?快使用搜索试试~ 我知道了~
首页[原创]实现用VB.Net(C#)开发K3 BOS 插件的真正可行方法
金蝶K3 BOS的插件官方是用VB6编写的,如果 能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用VB.NET 或C# C++.Net来开发BOS的插件(DLL),如果哪位还有比这方法更早的请联系作者,修改首创的宣称 花10分绝对值得 如果有二十分我都选上,可惜没有
资源详情
资源评论
资源推荐

永不言弃 QQ105670118 Email:chzjxgd@21cn.com
[原创]实现用 VB.Net/(C#)开发 K/3 BOS 插件的真正可行方法
------------(网上流传的 C Sharp 写插件实是不可行的)
金蝶 K3 BOS 的插件官方是用 VB6 编写的,如果
能用.Net 下的语言工具开发 BOS 插件是一件很愉快的事情,其中缘由不言而喻,而本文
则是个人首创,实现在了用 VB.NET 或 C# C++.Net 来开发 BOS 的插件(DLL),如果哪
位还有比这方法更早的请联系作者,修改首创的宣称
在此先讲几个概念性的问题:
1、 Net 类组件与 COM 组件:VB6 开发的 ActiveX.dll 可以用 regsvr32.exe 注册,它是适合 COM 规范的东
西,.NET 开发的类后缀也是 dll,可是它们俩不是相同的东西,.NET(VB、C#)开发的 DLL 是跑
在.netCLR 上的中间二进制字节码以及其他一些有自描述功能的元数据组成的 ,它不符合 COM+规
范,金蝶 K/3 及 BOS 都是用 VB6 开发而来的,EAS 那就另当别论了,所以 BOS 插件说白了也是
VB6 调用符合 COM 规范的 DLL,它的原理就是在原程序里(宿主)先导入放在 BOS 插件上的 dll 然
后直接 Byref 调用 Public Sub Show(Byval XXX as Object) 来把需要编程的对象传递过来,所以
我们要 VB6 能调用.Net 的 dll,那怎么办呢?Visual Studio 提供了一个命令行工具,里面有一个叫
regasm.exe 的工具帮我们实现这个互通 命令有点汇编的那个 masm!
2、 .NET 中的强名 strong name 说白了就是为了保护你的组件不被破坏,.Net 开发的 dll 想给
像 com 那样被调用那就必须加个强名(数字签名)
’-----------------------------------------------------------------------------------------------------------------------------------------
-
废话少说,照着我详细的步骤来依葫芦画瓢吧
1,打开 VS 创建一个类 看图 1.1
图 1.1
说明:注意图上的红线方框,类、类名、所使用的.Net Frame 版本为 3.5 2.0 的也可以,此
测试语言我选 VB,当然 C#也可以,本人是 basic 的忠实者!
金蝶 K3 经验 3 号分群 38119522

永不言弃 QQ105670118 Email:chzjxgd@21cn.com
2,进去后在菜单 [项目]>>[添加引用] 处添加 K3ClassEvents.dll 组件(和 VB6 一样要添加
它)如:图 2.1
图 2.1
3,以 net 的方式和规范编写代码,具体可参考 BOS 资料和 VB6 的工具栏插件生成的代码稍作修改作为骨架
码
图 3.1
详细代码贴出 附件也带原测试工程文件,不包括实际应用功能只作示例
Imports K3ClassEvents
金蝶 K3 经验 3 号分群 38119522

永不言弃 QQ105670118 Email:chzjxgd@21cn.com
Public Class MenuBar
'定义 ListEvents 接口. 必须具有的声明, 以此来获得事件
Private WithEvents m_ListInterface As ListEvents
Public Sub Show(ByVal oListInterface As Object)
'ListEvents 接口实现
'注意: 此方法必须存在, 请勿修改
m_ListInterface = oListInterface
End Sub
Private Sub Class_Terminate()
'释放接口对象
'注意: 此方法必须存在, 请勿修改
m_ListInterface = Nothing
End Sub
Private Sub m_ListInterface_MenuBarClick(ByVal BOSTool As K3ClassEvents.BOSTool,
ByRef Cancel As Boolean) Handles m_ListInterface.MenuBarClick
'TODO: 请在此处添加代码响应事件
On Error Resume Next
Select Case BOSTool.ToolName
Case "shangla"
'此处添加处理shangla 菜单对象的 Click 事件
Dim form As New Form
form.Show()
Case "dizhu"
'此处添加处理dizhu 菜单对象的 Click 事件
Case "con>g"
MsgBox("此处添加处理con>g 菜单对象的 Click 事件 con>g")
Case "Info"
'此处添加处理Info 菜单对象的 Click 事件
Dim strID As String
strID = m_ListInterface.DataSrv.ClassType("FNAME")
金蝶 K3 经验 3 号分群 38119522
剩余10页未读,继续阅读











安全验证
文档复制为VIP权益,开通VIP直接复制

评论30