DsoFramer-辛酸泪史
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-辛酸泪史相关推荐
- 程序员辛酸泪——当程序员老去,程序员又何去何从
程序员将代码注入生命去打造互联网的浪潮之巅,当有一天他们老了,会走向那里,会做些什么?表面光鲜的"程序猿"的真实生活的背面是不为人知的辛酸史,让我们一起去了解程序员这个职业吧! 当 ...
- Android文件系统管理——版本内外存所指差异,获得外接SD/U盘路径,在SD卡与U盘间传送文件,两天辛酸泪,收藏不迷路
在开发一个文件管理系统的路上,总有坑在等着你. 前情提示:因为该系统的使用方需要严格保密文件,导致它失去了无线传输功能,只能通过外设传输文件. 在没接触这个功能之前,我想大家应该都觉得手机自带的存储空 ...
- (七)使用jedis连接单机和集群(一步一个坑踩出来的辛酸泪)
环境准备: redis-4.0.9,最新版了 ruby:redis-x.x.x.gem 这个gem什么版本都行,我redis4用3.0.0的gem正常跑 jedis-2.9.0.jar,最新版 ...
- python开发爬虫-Python3 Scrapy 安装方法 (一脸辛酸泪)
写在前面 最近在学习爬虫,在熟悉了Python语言和BeautifulSoup4后打算下个爬虫框架试试. 没想到啊,这坑太深了... 看了看相关介绍后选择了Scrapy框架,然后兴高采烈的打开了控制 ...
- 满纸辛酸泪 —— 红楼梦中话
1. 元妃省亲 元妃省亲,那极尽荣华富贵的场景之中何尝有半点欢乐气氛?让人感到的是亲情的压抑.人性的扭曲,还有元春"忍悲强笑"的一句话: "当日既送我到那见不得人的地方- ...
- 那些你不曾了解在线客服辛酸泪
原文链接 曾经羡慕闺蜜做淘宝在线客服的工作.在我印象里,线客服是个简单轻松的工作,收入也还不错.像文员一样体面坐在工位上,天天面对电脑打字,没有电话客服嘈杂的语音,没有复杂繁琐的工作,只需要坐在电脑面 ...
- 关于使用阿里MaxCompute(原ODPS),循环删除所有表下的分区的爬坑辛酸泪
MaxCompute通过PyODPS批量删除所有表分区数据,指定时间范围 * 通过PyODPS批量删除分区表 代码片. // An highlighted block ***-- # ODPS 双重循 ...
- 大厂面试辛酸泪,阿里面了9次,字节捞了offer?Android开发狗25次
到今年7月,我已经工作了整整3年!匆匆三年如白驹过隙,我还依然记得2017年的夏天. 在那个夏天,我脱下了属于大学时代的学位服,告别我的整个学生时代,我找到我的第一份正式的工作,也经历了我从校园融入社 ...
- 10年鼻炎,一路的辛酸泪
自从得了这个鼻炎,我的日子就没好过过,相信得过鼻炎的人都知道,虽然是小毛病,但是犯起来,这折磨人的劲头可是一点都不小. 晚上睡觉呼吸不痛快,每天七八个喷嚏控制都控制不住,尤其一起聚餐的时候,一吃辣的, ...
- 小升初随感--年年小升初,一段辛酸史
小升初随感 一纸小升初,两行辛酸泪,小女方十二,大考已相随, 校内书包满,校外题库全,刚出学校门,又入课外班, 可怜寒暑假,天天不在家,上学已力疲,最忙周六日, 日出挂前窗,儿起惊梦床,月升课未散,解 ...
最新文章
- 第十六届全国大学智能汽车竞赛竞速比赛规则
- laravel Excel导入导出
- 施一公直播首秀来了!解答读博困惑,鼓励学生勇敢申请西湖大学
- (内联元素和块级元素)
- php伪协议漏洞_PHP之伪协议深入理解
- 【半年总结】---凤凰涅槃,历久弥新
- 数据流图技术相关基础知识
- Javaworkers团队第五周项目总结
- C++ machine code与随机数 进阶习题
- vivo手机进入9008模式(vivo x7测试)
- 寻宝游戏 HDU - 6289 (DP)
- Java毕业设计_代驾到家服务app的设计与实现
- BLE4.2链路层(LL)安全机制-LL Privacy
- 输入相应的数打印三角形
- oracle导入失败后怎样删除已导入数据,Oracle数据的导入、导出、插入、更新及删除总结...
- 蓝牙电话协议HFP(Hands-Free Profile) 接听来电/挂断来电(HFP Accept/Reject incoming call)
- 云服务器有什么优势和特点?
- linux操作系统使用广泛吗,为何说Ubuntu是使用最广泛Linux操作系统的五大理由
- Pedometer class 计步器类
- 那一年,我们在巴塞罗那找到的「ONES 图腾」