无法获取控件的窗口句柄和不支持无窗口的 ActiveX 控件

VC++对话框控件开发实战:从DDX机制到性能优化 在桌面应用开发领域,消息循环与控件交互是GUI编程的核心基础。其原理基于Windows消息驱动架构,通过消息映射机制将用户操作转化为程序事件。这一技术价值在于提供了对系统资源的直接控制能力,尤其适用于对性能、稳定性硬件交互有严苛要求的工业控制、金融交易等专业场景。通过数据交换(DDX/DDV)机制,开发者能高效实现界面与数据的同步,而列表控件、树控件等复杂组件的优化使用则能有效管理结构化数据。本文以VC++对话框开发为例,深入剖析了DDX数据交换机制与列表控件性能优化等关键实践,为构建高响应、低延迟的桌面 阅读详情
在win7 下面调用ActiveX  出现如题错误。xp下测试正常。
编译环境: VS2008 
编程语言:CSharp 
系统版本:Windows7 
OCX控件:无窗口的OCX控件
根据微软官方的说法,导致这个错误是由于Windows的保护机制,在编译后的exe的PE头部,有一个DEP(Data Execution Prevention)的功能。需要将这个功能关闭,就能正常运行了,试了试成功了。

 下面是如何打开 DEP 的方法:

关闭Wind XP/Vista/Win7的DEP数据执行保护汇总

数据执行保护 (DEP) 是一种Windows安全机制,从Windows版本顺序上看是从Windows XP SP2开始引入,通过监视程序以确保它们使用的系统内存是安全的,帮助防止操作系统受到病毒和其他安全威胁的破坏。这个功能从设计上来讲是非常不错的,可以保护系统安全,但同时也可能会影响某些程序甚至整个系统的正常运行。甚至在日常的操作中带来很大麻烦,因为很多用户根本不知道如何取舍或关闭。看来DEP功能还是有诸多的完善工作需要完成,天缘本文就来综合一下DEP在常见几种操作系统下的开启和关闭方法做个汇总。

一、Windows XP下开始/关闭数据执行保护(DEP)的方法

XP模式下开启和关闭DEP有两种方法,一种是部分开启/关闭,另一种是长期开启/关闭。

第一种方法是为了方便于用户倾向于使用DEP功能,但又不想整体关闭,由于DEP功能上的欠缺可能会引起某些程序的非正常运行甚至崩溃现象时,可以通过以下方法进行设置:在桌面“我的电脑”点击鼠标左键——属性——高级——性能设置选项,即可看到下图:

针对某些程序关闭DEP保护,只需要点击上图中的“为下列程序之外的所有程序启动DEP”,然后点击添加按钮,找到您所信任的程序执行文件,添加即可,然后重启计算机即可生效。

第二种方法,全部关闭DEP保护功能,可以在上图中,点击关闭DEP(不推荐),然后重新启动计算机即可。也可以通过直接修改Boot.ini文件达到彻底关闭数据执行保护的目的,在 WinXP SP2/SP3系统目录下找到Boot.ini文件。有这么一行(其他驱动器类似):

......="Microsoft Windows XP Professional"=OPTIN /FASTDETECT /USEPMTIMER /noexecute

修改NoExecute参数为NoExecute=AlwaysOff,然后保存即可,相当关闭DEP功能和EVP和EDB。实际上,在上述第一种方法中如何修改关闭DEP选项,系统会自动修改boot.ini文件的启动项,实现结果相同。

二、Windows Vista下开始/关闭数据执行保护(DEP)的方法

在Vista下关闭DEP方法也很简单,只需要按照以下步骤操作即可:

1、新建一个文本文件mod.txt,然后输入:

bcdedit.exe/set {current} nx AlwaysOff

pause

2、保存后,再重命名为bat文件mod.bat;

3、然后在文件上鼠标右键以管理员身份运行即可,看到运行结果。

4、关闭该命令运行窗口,然后重新启动计算机即可生效

另外,对于没有管理员权限的用户执行修改DEP数据保护设置可能会出现下图提示:

避免方法,请提权后或采用本文描述方法执行。

三、Windows 7下开始/关闭数据执行保护(DEP)的方法

方法同Vista的修改方法。

补充:

1、该方法同样适用于Windows Server 2008,操作方法相同。

2、如果要开启DEP数据保护,只需要把AlwaysOff改成AlwaysOn即可

名词解释:

DEP——为微软的软件上层协调模块,协助CPU执行数据保护,为Data Excute Protection缩写

EVP——AMD CPU的防病毒技术,为Ehanced Virus Protection缩写

EDB——Intel CPU的防病毒技术,为Excute Disable Bit缩写

MFC控件全解析:从标准控件到高级应用与实战技巧 在Windows桌面开发领域,GUI编程是构建用户界面的核心。其底层原理基于消息循环、窗口句柄资源管理机制,这些概念构成了现代UI框架的基础。理解控件的创建、消息映射与数据交换机制,对于开发稳定高效的桌面应用具有重要技术价值,尤其在维护遗留系统、工业软件等场景中至关重要。本文聚焦MFC控件体系,涵盖标准控件如CButton、CEdit,以及高级公共控件如CListCtrl、CTreeCtrl的使用,并深入探讨了子类化、多线程安全等实战技巧,帮助开发者应对实际开发中的常见问题与性能挑战。 阅读详情

相关推荐

VMware vSphere Client 解决 无法获取“”控件窗口句柄不支持窗口ActiveX 控件

我在win7使用VMware vSphere Client管理vmware虚拟机,打开桌面“解决 无法获取“”控件窗口句柄不支持窗口ActiveX 控件”  ,在网上搜了半天 找到http://yanghao831207.blog.163.com/blog/static/302198620116120495647/ 在win7测试解决问题     下面是如何打开 DEP 的方

第四类人 6573

Windows 7 C# OCX 无法获取“****”控件窗口句柄不支持窗口ActiveX控件的解决办法

编译环境: VS2008 编程语言:CSharp 系统版本:Windows7 OCX控件:无窗口的OCX控件     根据微软官方的说法,导致这个错误是由于Windows的保护机制,在编译后的exe的PE头部,有一个DEP(Data Execution Prevention)的功能。需要将这个功能关闭,就能正常运行了,我试了一把,果然如此。 附原文: The C#

每天进步一点点就好 1万+

解决 无法获取“”控件窗口句柄不支持窗口ActiveX 控件

解决 无法获取“”控件窗口句柄不支持窗口ActiveX 控件

hzfu007的专栏 2万+

解决CPC撰写文档报错问题“无法获取“AxforApplication”控件窗口句柄不支持窗口ActiveX 控件

解决CPC撰写文档报错问题“无法获取“AxforApplication”控件窗口句柄不支持窗口ActiveX 控件

dearbaba_8520的博客 4693

vbnet加载ocx控件不能生成窗体_.net OCX 无法获取“****”控件窗口句柄不支持窗口ActiveX控 新解决方法...

朋友找我帮原来的软件加一个小功能,程序是用VB.NET 写的。软件需要与外部串口设备通信,一只带串口功能的压力表。应该时间周期很急,所以串口部分我就直接用厂家提供的VB DEMO 写了个OCX控件给 .NET调用。软件制作完成用用VS做了一个安装包给朋友,安装包内已经包含了OCX控件。安装过程中会自动注册。朋友去给客户安装,发现提示 『无法获取“****”控件窗口句柄不支持窗口Activ...

weixin_30800961的博客 302

.net OCX 无法获取“****”控件窗口句柄不支持窗口ActiveX控 新解决方法...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33881050的博客 569

Richfaces速度优化及ACTIVEX控件Firefox插件开发

Richfaces速度优化及ACTIVEX控件Firefox插件开发 不知是什么原因Richfaces控件在IE下速度特别的慢.在IE8下时有部分控件甚至会出现问题只能用兼容模式下使用.在网上找找了发现很多人有这问题.不知道Richfaces4.0会不会好一点,但richfaces4.0只能在JSF2.0上运行所以我也没办法试.就在网上找了点优化的方法, 如下: http://fe

quasiceo 1124

解析HTML页面获取数据

1。先根据url地址取得html源代码,设置超时时间以防请求服务器没反应。 2.解析table表格中的数据,根据关键字截取table表格的源代码字符串。 此过程中遇到过一个错误:无法获取“WebBrowser”控件窗口句柄不支持窗口ActiveX 控件 如果有80个页面需要解析则每次new一个WebBrowser就会出现此错误, public sta...

amy200275的博客 1013

Qt打开Word、ExcelPPT总结

qt打开文件的小总结,案例都可以找到。

weixin_44445763的博客 3890

ATL编写的带窗口控件,无论VC6(ATL3.0) VC7.1(ATL7.0) 在Windows 7 或 Server 2008 下,WinForm调用时发生的问题...

标题太长了,但是也的确怪我倒霉,只有以上几个条件都具备了,此问题才会发生。 微软在Windows 7Server 2008平台上对ActiveX控件的安全性问题,进行了很大的改动, 导致以前与此相关的开发技术受到一些影响,但是这些影响在.NET平台上才得到充分的体现。 重现此问题的方法如下:使用VC6或VC7.1(ATL8.0之前的版本)任何一个的ATL版本,编写一个有窗口ActiveX...

weixin_30265171的博客 243

实现控件的透明背景

很多情况下,我们需要控件的背景是透明的,就是要求直接看到控件窗口的背景颜色、背景位图,比如标签控件、单选Radio控件、复选Check控件,通常都要求在父窗口的背景上进行绘制。然而要求控件的画布透明,这个技术在GDI的文档中没有看到Microsoft作任何说明,当然还是有别的办法。 其一:如果程序支持桌面主题服务的话,则可调用主题服务的API来实现背景。我们先看看这个API: HRES...

weixin_30337251的博客 135
上一篇: 自定义类获取主窗口控件引用
下一篇: DataGridView控件小结
麦田JOY
博客等级 码龄16年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值