欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 关于VB.NET的公开COM编写和注册--可以在金字塔下调用

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2805人关注过本帖树形打印复制链接

主题:关于VB.NET的公开COM编写和注册--可以在金字塔下调用

帅哥哟,离线,有人找我吗?
zyyh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
关于VB.NET的公开COM编写和注册--可以在金字塔下调用  发帖心情 Post By:2016/11/25 16:20:08 [只看该作者]

编写过程:
 图片点击可在新窗口打开查看

打开VS2010,选择 VB语言-选择类库-输入名称 zyyh (备注:此处绝对不允许输入中文,下面会说到这个)--点击确定
图片点击可在新窗口打开查看
在class1上面点击右键,选择重命名,重命名为 tianxiasan(备注:
此处也不允许输入中文,下面会说到这个) 
复制粘贴以下代码。功能仅仅是用于测试,作用是传递进来两个参数,传出一个相加结果
Public Class tianxiasan
    Public Function ceshi(ByVal 参数1 As Decimal, ByVal 参数2 As Decimal) As Decimal
        Return 参数1 + 参数2
    End Function
End Class
 图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看
此处已经设置完毕了,点击主菜单上保存-然后生成项目,生成的zyyh.dll 在保存项目下的
bin\Debug的文件夹下


下面部分是注册
1:使用安装进行注册

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

完毕后  在计算机的 保存项目的文件夹下 会有个 安装包  我的是在 C:\Users\Administrator\Desktop\测试\zyyh\注册安装包\Debug
打开安装包,一直安装到底  会在 C:\Program Files (x86)\Microsoft\注册安装包 这个文件夹下 有两个文件 zyyh.dll  zyyh.tlb

此处查看是否已经注册成功了的方法是  在开始菜单下 的搜索或者运行 输入 regedit  打开注册表

注意  如果前面的 不是zyyh和tianxiasan  而是中文  那么就会导致这里会出现乱码,导致调用失败
图片点击可在新窗口打开查看
 


底下是测试部分

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看图片点击可在新窗口打开查看




 然后运行测试 点击button  出现一个结果 
‘睇下是代码段 是 意思是引用 已经注册的 zyyh.tianxiasan  传递进去 1,2   在以前编译的zyyh.dll 处理完毕后  返回结果 3

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim yinyong '创建一个变量
        yinyong = CreateObject("zyyh.tianxiasan")
        MsgBox(yinyong.ceshi(1, 2))
    End Sub
End Class
图片点击可在新窗口打开查看


下面一部分 是手动注册不是安装注册,会理解windows 运行原理
1:首先 net编译的 com 必须要有 net支持  因为选择net 4.0首先要查看 net4.0安装位置
 C:\Windows\Microsoft.NET\Framework\v4.0.30319   这个是我的 安装位置,我的系统是 win7 64位:
2:说明 net 编写的com必须要使用 这个环境底下的 RegAsm.exe 注册 
注册步骤如下
 2.1:在开始菜单下 打开系统的cmd ,输入  
   C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm  C:\Users\Administrator\Desktop\测试\zyyh\zyyh\bin\Debug\zyyh.dll /tlb:C:\Users\Administrator\Desktop\测试\zyyh\zyyh\bin\Debug\zyyh.tlb 

此命令 意思是 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\下的RegAsm.exe  注册 C:\Users\Administrator\Desktop\测试\zyyh\zyyh\bin\Debug\zyyh.dll  并且生成库 C:\Users\Administrator\Desktop\测试\zyyh\zyyh\bin\Debug\zyyh.tlb
 2:.2:在开始菜单下 打开系统的regedit 在 相应位置 会看到 zyyh.tianxiasan  已经注册成功了(不会的 请看上面的 regedit 图片)

注册成功了,不代表能运行,此时运行不会报错,但是也不会出

现结果,原因是因为没有加入到系统缓存

 下面步骤是将zyyh.dll加入系统缓存
 此方法必须安装 VS2010 使用VS2010的命令行加入缓存 打开方法如下
图片点击可在新窗口打开查看
输入 gacutil /i C:\Users\Administrator\Desktop\测试\zyyh\zyyh\bin\Debug\zyyh.dll
意思是 将  
C:\Users\Administrator\Desktop\测试\zyyh\zyyh\bin\Debug\zyyh.dll 加载到缓存
此处 会在 C:\Windows\Microsoft.NET\assembly\GAC_MSIL 底下 生成一个zyyh文件夹 里面放置了 一个4.0的文件夹(重命名会导致调用失败),这个文件夹下 就是zyyh.dll文件
注意  如果没有前面的签名,会导致 加入缓存失败
图片点击可在新窗口打开查看

再次测试就会成功啦 

 
我用了四个小时才搞定,一个人学习太痛苦了,高手带领的话 只要1分钟搞定的事情,我自己一个人搞用了4个小时 

 特别说明的是:千万不要开放两个入口,就是不要写两个公开

类在里面  publice class 只允许有一个,如果非得要使用class

请标志这个类为 友元  Friend Class,否则哪里都不会出错,就

是运行不起来

我现在做的项目 就是使用这个做的,一点一滴 累的要死

 回到顶部
帅哥哟,离线,有人找我吗?
zyyh
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By:2016/11/25 16:25:33 [只看该作者]

在金字塔里面调用就是在VBA底下输入
Sub Test()
        Dim yinyong '创建一个变量
        yinyong = CreateObject("zyyh.tianxiasan")
        MsgBox(yinyong.ceshi(1, 2))
End Sub
在调用宏里面输入 Test,就好了

这里 如果申明的是一个对象,那么既可以放入 界面 又可以放入线程,还可以放入结构
如果是多个对象,就不用放入线程,但是同时也不可以放入界面,可以设置界面为共享 那样就不再为金字塔内部创建 窗口麻烦了。所有管理手段全部在自己编写的界面下操作,包括开平的操作

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2016/11/25 16:31:22 [只看该作者]

楼主的图论坛没法看



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
onlyflyttn
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:20 积分:0 威望:0 精华:0 注册:2013/1/8 19:42:27
  发帖心情 Post By:2016/11/28 12:22:41 [只看该作者]

vb的话在类库项目中增加一个com类不就可以了!比C#方便的多!图发布出来哦!



[此贴子已经被作者于2016/11/28 12:24:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
onlyflyttn
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:20 积分:0 威望:0 精华:0 注册:2013/1/8 19:42:27
  发帖心情 Post By:2016/11/28 15:39:22 [只看该作者]

来张图
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
zyyh
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By:2016/11/28 16:27:09 [只看该作者]

图到底怎么发的啊  只有链接  我QQ空间不允许随便进入  我没办法


 回到顶部
帅哥哟,离线,有人找我吗?
zyyh
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By:2016/11/28 16:31:16 [只看该作者]

谁告诉我下怎么弄图  我会贴出完整的示例  包括金字塔调用的示例,不是链接 那个太繁琐了

 回到顶部