以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 关于VB.NET的公开COM编写和注册--可以在金字塔下调用 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=143434) |
-- 作者:zyyh -- 发布时间:2016/11/25 16:20:08 -- 关于VB.NET的公开COM编写和注册--可以在金字塔下调用 编写过程: 打开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 -- 发布时间:2016/11/25 16:25:33 -- 在金字塔里面调用就是在VBA底下输入 Sub Test() Dim yinyong \'创建一个变量 yinyong = CreateObject("zyyh.tianxiasan") MsgBox(yinyong.ceshi(1, 2)) End Sub 在调用宏里面输入 Test,就好了 这里 如果申明的是一个对象,那么既可以放入 界面 又可以放入线程,还可以放入结构 如果是多个对象,就不用放入线程,但是同时也不可以放入界面,可以设置界面为共享 那样就不再为金字塔内部创建 窗口麻烦了。所有管理手段全部在自己编写的界面下操作,包括开平的操作 |
-- 作者:王锋 -- 发布时间:2016/11/25 16:31:22 -- 楼主的图论坛没法看 |
-- 作者:onlyflyttn -- 发布时间:2016/11/28 12:22:41 -- vb的话在类库项目中增加一个com类不就可以了!比C#方便的多!图发布出来哦! [此贴子已经被作者于2016/11/28 12:24:10编辑过]
|
-- 作者:onlyflyttn -- 发布时间:2016/11/28 15:39:22 -- 来张图 |
-- 作者:zyyh -- 发布时间:2016/11/28 16:27:09 -- 图到底怎么发的啊 只有链接 我QQ空间不允许随便进入 我没办法 |
-- 作者:zyyh -- 发布时间:2016/11/28 16:31:16 -- 谁告诉我下怎么弄图 我会贴出完整的示例 包括金字塔调用的示例,不是链接 那个太繁琐了 |