1.DSOfram写入注册表

下载dsoframer.ocx

系统为32位时:拷贝 dsoframer.ocx 到c:\windows\system32\dsoframer.ocx
打开cmd命令行注册 regsvr32.exe c:\windows\system32\dsoframer.ocx

为64位时:拷贝 dsoframer.ocx 到c:\windows\SysWOW64\dsoframer.ocx
注册命令 regsvr32.exe c:\windows\SysWOW64\dsoframer.ocx

由于windows7权限要求必须以管理员身份运行cmd指令

对于64位操作系统:SysWOW64表示该文件夹下是可以执行的32位配置及控件文件

2.Visual Studio2017新建winform项目。

工具箱-》常规-》右键选择项



axFramerControl1可用变量。

System.Drawing.Color colors = Color.FromArgb(255, 100, 0);
axFramerControl1.Caption = “hello button!”;//标题栏text
axFramerControl1.BackColor = colors;//(b,g,r)//背景颜色
axFramerControl1.BorderColor = colors;//边框颜色
axFramerControl1.Titlebar = false;//标题栏隐藏显示
axFramerControl1.BorderStyle = 0;//无边框
axFramerControl1.Caption =axFramerControl1.BorderStyle.ToString();//边框属性读取
axFramerControl1.Toolbars = true;//显示隐藏工具栏
axFramerControl1.CreateNew(“Word.Document”);//新建空白word文件
axFramerControl1.Open(“C:\path\myfile.word”);//打开文件(注意路径必须为双斜杠否则报错)

axFramerControl1.Save();//保存文件

DSOFramer是微软提供的一款用于在线编辑、调用Word、Excel等Office程序的ActiveX组件。很多第三方的Office组件都是基于DSOFramer组件开发的。今天我们不讲如何使用DSOFramer组件,网上关于DSOFramer组件使用方法的文章已经很多了,而是讲一下在使用DSOFramer组件开发时的一些坑。

DSOFramer组件的全名是dsoframer.ocx。所有关于DSOFramer组件使用方法的文章都会告诉你,使用DSOFramer组件,第一步必须在Windows操作系统中注册该组件。注册方法很简单:

将dsoframer.ocx复制到%windir%\system32目录。
在命令行运行regsvr32命令注册dsoframer.ocx。
注册成功后,Windows操作系统会提示“DllRegisterServer 在 dsoframer.ocx 成功”。

到目前为止,貌似一切顺利。不过如果你像我一样使用64位Windows操作系统,你已经不知不觉掉到坑里去了。为什么呢?我们继续往下看。

假设,我们已经编写好调用DSOFramer的程序,当我们运行程序时会发生什么事情?“铛”!是的,没错,系统弹出“应用程序无法处理的异常”。

为什么会出现这个错误呢?我们不是已经在system32目录注册dsoframer.cox了吗?为什么会提示“没有注册类”呢?

是的,问题就在这里。如果我们使用的是32位Windows操作系统,那么,OK,程序在运行时不会有任何问题。但是很不幸,我使用的是64位Windows操作系统。使用64位Windows操作系统的朋友可能会发现在%windir%目录下除了常见的system、System32目录以外,还有一个SysWOW64目录。在32位Windows操作系统中,System32目录用于存放32位DLL,而在64位Windows操作系统中,据称为了保持向下兼容性,System32目录用于存放64位DLL,而新增加的SysWOW64用于存放兼容的32位DLL(虽然感觉上System32和SysWOW64两个目录的作用应该完全相反)。

之所以会出现前面的异常,是因为DSOFramer是32位组件。因此,在32位Windows操作系统中,应该将其复制到System32目录中注册;而在64位Windows操作系统中,应该将其复制到SysWOW64目录中注册,而不是复制到System32目录中。

如果在64位Windows操作系统中,我们将dsoframer.ocx复制到SysWOW32目录,然后使用regsvr32注册组件。那么,运行程序时就不会再出现“没有注册类”的异常了。

另外,需要注意的是,在Visual Studio的编译选项中,目标CPU选项的默认设置是Any CPU。很多情况下,我们不会改变这个默认设置,而是由.net framework JIT在运行时根据系统环境自由决定如何装载程序。但是,由于DSOFramer是32位组件的原因,在编写调用DSOFramer组件的应用程序时,应该将编译选项中的目标CPU设置为x86。这样才能保证程序在运行时能够在正确的位置找到注册的DSOFramer组件。

因此,在使用DSOFramer组件时,最佳实践是:

在32位Windows操作系统中,将dsoframer.ocx组件复制到%windir%\System32目录,并使用regsvr32命令注册。
在64位Windows操作系统中,将dsoframer.ocx组件复制到%windir%\SysWOW64目录,并使用regsvr32命令注册。
在Visual Studio中,将调用DSOFramer组件项目的编译选项中的目标CPU设置为x86。
最后,SysWOW64中“WOW64”的含义是“Windows on 64-bit Windows”。所以,你就会明白,为什么在64位Windows操作系统中把dsoframer.ocx组件复制到SysWOW64目录了,因为它是运行在“64位Windows上的(32位)Windows”的32位DLL组件。

DsoFramer-辛酸泪史相关推荐

  1. 程序员辛酸泪——当程序员老去,程序员又何去何从

    程序员将代码注入生命去打造互联网的浪潮之巅,当有一天他们老了,会走向那里,会做些什么?表面光鲜的"程序猿"的真实生活的背面是不为人知的辛酸史,让我们一起去了解程序员这个职业吧! 当 ...

  2. Android文件系统管理——版本内外存所指差异,获得外接SD/U盘路径,在SD卡与U盘间传送文件,两天辛酸泪,收藏不迷路

    在开发一个文件管理系统的路上,总有坑在等着你. 前情提示:因为该系统的使用方需要严格保密文件,导致它失去了无线传输功能,只能通过外设传输文件. 在没接触这个功能之前,我想大家应该都觉得手机自带的存储空 ...

  3. (七)使用jedis连接单机和集群(一步一个坑踩出来的辛酸泪)

    环境准备: redis-4.0.9,最新版了 ruby:redis-x.x.x.gem    这个gem什么版本都行,我redis4用3.0.0的gem正常跑 jedis-2.9.0.jar,最新版 ...

  4. python开发爬虫-Python3 Scrapy 安装方法 (一脸辛酸泪)

    写在前面 最近在学习爬虫,在熟悉了Python语言和BeautifulSoup4后打算下个爬虫框架试试.  没想到啊,这坑太深了... 看了看相关介绍后选择了Scrapy框架,然后兴高采烈的打开了控制 ...

  5. 满纸辛酸泪 —— 红楼梦中话

    1. 元妃省亲 元妃省亲,那极尽荣华富贵的场景之中何尝有半点欢乐气氛?让人感到的是亲情的压抑.人性的扭曲,还有元春"忍悲强笑"的一句话: "当日既送我到那见不得人的地方- ...

  6. 那些你不曾了解在线客服辛酸泪

    原文链接 曾经羡慕闺蜜做淘宝在线客服的工作.在我印象里,线客服是个简单轻松的工作,收入也还不错.像文员一样体面坐在工位上,天天面对电脑打字,没有电话客服嘈杂的语音,没有复杂繁琐的工作,只需要坐在电脑面 ...

  7. 关于使用阿里MaxCompute(原ODPS),循环删除所有表下的分区的爬坑辛酸泪

    MaxCompute通过PyODPS批量删除所有表分区数据,指定时间范围 * 通过PyODPS批量删除分区表 代码片. // An highlighted block ***-- # ODPS 双重循 ...

  8. 大厂面试辛酸泪,阿里面了9次,字节捞了offer?Android开发狗25次

    到今年7月,我已经工作了整整3年!匆匆三年如白驹过隙,我还依然记得2017年的夏天. 在那个夏天,我脱下了属于大学时代的学位服,告别我的整个学生时代,我找到我的第一份正式的工作,也经历了我从校园融入社 ...

  9. 10年鼻炎,一路的辛酸泪

    自从得了这个鼻炎,我的日子就没好过过,相信得过鼻炎的人都知道,虽然是小毛病,但是犯起来,这折磨人的劲头可是一点都不小. 晚上睡觉呼吸不痛快,每天七八个喷嚏控制都控制不住,尤其一起聚餐的时候,一吃辣的, ...

  10. 小升初随感--年年小升初,一段辛酸史

    小升初随感 一纸小升初,两行辛酸泪,小女方十二,大考已相随, 校内书包满,校外题库全,刚出学校门,又入课外班, 可怜寒暑假,天天不在家,上学已力疲,最忙周六日, 日出挂前窗,儿起惊梦床,月升课未散,解 ...

最新文章

  1. 第十六届全国大学智能汽车竞赛竞速比赛规则
  2. laravel Excel导入导出
  3. 施一公直播首秀来了!解答读博困惑,鼓励学生勇敢申请西湖大学
  4. (内联元素和块级元素)
  5. php伪协议漏洞_PHP之伪协议深入理解
  6. 【半年总结】---凤凰涅槃,历久弥新
  7. 数据流图技术相关基础知识
  8. Javaworkers团队第五周项目总结
  9. C++ machine code与随机数 进阶习题
  10. vivo手机进入9008模式(vivo x7测试)
  11. 寻宝游戏 HDU - 6289 (DP)
  12. Java毕业设计_代驾到家服务app的设计与实现
  13. BLE4.2链路层(LL)安全机制-LL Privacy
  14. 输入相应的数打印三角形
  15. oracle导入失败后怎样删除已导入数据,Oracle数据的导入、导出、插入、更新及删除总结...
  16. 蓝牙电话协议HFP(Hands-Free Profile) 接听来电/挂断来电(HFP Accept/Reject incoming call)
  17. 云服务器有什么优势和特点?
  18. linux操作系统使用广泛吗,为何说Ubuntu是使用最广泛Linux操作系统的五大理由
  19. Pedometer class 计步器类
  20. 那一年,我们在巴塞罗那找到的「ONES 图腾」

热门文章

  1. 关于注册测绘师的点点滴滴
  2. Python del:删除对象
  3. MicroPython学习笔记(二)操作GPIO和TIMER实现数码管动态显示
  4. 基于VS2019+QT的Coin3D三维可视化库的安装预测测试
  5. L1-046 整除光棍 (20 分)
  6. ACM算法笔记(一)模拟算法【详细解析】
  7. 离散数学第二章(知识点总结)续
  8. 三菱PLC-GXWorks2程序下载
  9. android开机画面大集合,汇总各种Android 开机画面修改方法 第二屏
  10. 打开一个php网页出现2个ip,php根据ip地址查地区