本文目录一览:
- 1、电脑开机蓝屏,出现错误代码0x000000c2(0x00000043,0xcF409000,0x00000000)怎么回事?谢谢
- 2、VB activex ocx控件 菜单编辑器
- 3、js调用ocx控件
电脑开机蓝屏,出现错误代码0x000000c2(0x00000043,0xcF409000,0x00000000)怎么回事?谢谢
以下内容为百度知道操作系统分类管理员Ctangel个人总结,并非网络复制,全是个人日常工作中遇到并且明确确定原因的。如需复制请注明出处。
这里列举几个典型的蓝屏故障的原因和解决办法。
一、0X0000000A
这个蓝屏代码和硬件无关,是驱动和软件有冲突造成的,最早发现这个代码是因为公司的DELL机器的USB键盘和QQ2007的键盘加密程序有冲突发现的这个问题。也在IBM T系列笔记本上装驱动失误产生过。
如果您的机器蓝屏了,而且每次都是这个代码请想一想最近是不是更新了什么软件或者什么驱动了,把它卸载再看一下。一般情况下就能够解决,如果实在想不起来,又非常频繁的话,那么没办法,重新做系统吧。
二、0X0000007B
这个代码和硬盘有关系,不过不用害怕,不是有坏道了,是设置问题或者病毒造成的硬盘引导分区错误。
如果您在用原版系统盘安装系统的时候出这个问题,那说明您的机器配置还是比较新的,作为老的系统盘,不认这么新的硬盘接口,所以得进BIOS把硬盘模式改成IDE兼容模式。当然了,现在人们都用ghost版的操作系统,比较新的ghost盘是不存在这个问题的。
如果您的操作系统使用了一段时间了,突然有一天出现这个问题了,那么对不起,病毒造成的,开机按F8,选择最后一次正确的配置,恢复不到正常模式的话那么请重新做系统吧。
三、0X000000ED
这个故障和硬盘有关系,系统概率比较大,硬盘真坏的概率比较小。我弄过不下二十个这个代码的蓝屏机器了,其中只有一个是硬盘真的有坏道了。剩下的都是卷出了问题,修复即可,这也是为数不多的可以修复的蓝屏代码之一。
修复方法是找原版的系统安装盘(或者金手指V6那个pe启动界面里就带控制台修复)。这里说用系统盘的方法,把系统盘放入光驱,启动到安装界面,选择按R进入控制台修复,进入控制台后会出现提示符C:\ 大家在这里输入 chkdsk -r 然后它就会自动检测并修复问题了,修复完成之后重新启动计算机就可以进入系统了,进入系统之后最好先杀毒,然后再重新启动一下试一下,如果正常了那就没问题了,如果还出这个代码,那就说明硬盘有问题了,需要更换,或者把有问题的地方单独分区,做成隐藏分区,用后面的空间来装系统。
四、0X0000007E、0X0000008E
这俩代码多是病毒造成的,杀毒即可。正常模式进不去可以开机按F8进安全模式。当然也有可能是内存造成的,可以尝试重新插拔内存,一般这代码内存损坏概率不大。
五、0X00000050
硬件故障,硬盘的可能性很大。如果每次都出这一个代码,首先换一块硬盘试一下机器能不能正常启动,如果测试硬盘没问题,再试内存,内存也试过的话,换CPU,总之这必是硬件故障。
六、coooo21a
C开头的故障,它报的错很邪乎,报未知硬件故障,不过出这类C开头的代码多半与硬件无关。基本是与系统同时启动的一些驱动!或者服务的问题,举一个例子,一次我给一个笔记本的F盘改成了E盘,结果再启动就出这类C开头的代码,最后发现插上一个U盘就能正常启动,因为插上U盘系统里就有F盘了,然后我发现了隐藏的文件,是开机的时候系统写入的。我拔掉这个U盘这问题就又出现,后来把E盘改回F问题就没有了,想来是什么和系统一起启动的软件留在F盘一些文件,没有了它就会自己建,但是连F盘都没有了,也就只能报错了,所以看到这类蓝屏可以照比。
七、每次蓝屏的代码都不一样
这样的问题,基本上是硬件造成的,尤其以内存为第一个需要怀疑的对象,更换内存尝试,第二可能性是CPU虽然这东西不爱坏,可是从06年到现在我也遇到俩了,其他硬件基本上不会造成蓝屏代码随便变的情况。
八、偶尔蓝屏,而且代码一闪而过重新启动的问题
这个是有有两种可能
1、以XP为例,在我的电脑上点击鼠标右键选择属性,找到高级选项卡,找到下面的启动和故障修复项,点击设置。再弹出的窗口里找到中间‘系统失败’处有三个选项,第三项自动重新启动,把这项的勾选取消掉,以后再出问题蓝屏就会停住了。
2、已经做过上面的设置,但是还是会一闪而过重新启动的,那就是显卡或者CPU过热造成的,打开机箱查看散热风扇和散热器的状态吧。
另外开机就蓝屏看不见代码一闪而过然后自己重新启动的情况。这个时候已经不可能在系统里进行第一步的设置了,那么就要在机器启动的时候按F8,选择启动失败后禁用重新启动这项,选择之后启动失败了,系统就会停在蓝屏代码那里了,这样大家就可以照着蓝屏代码来查看问题了。
九、其他蓝屏代码
参考第七项,一般首先做系统确认是不是系统的问题,然后以以下顺序测试硬件,首先是内存可能性最大,然后是CPU,之后是硬盘,最后是显卡,主板基本不会蓝屏。
VB activex ocx控件 菜单编辑器
ocx控件对于开发过Windows应用的朋友来说一定不会陌生,它以外部component的形式对程序提供强大的支持,如VB工具栏中的picturebox、label、image等都是ocx控件。然而要开发自己的ocx却有一定难度,以前程序员大都用cdk (control develop kit)来设计,但是这需要掌握相当的c语言技巧,其实VB从5.0开始就支持ocx控件开发,我们可从VB的samples中找到一些例子,然而这些例子比较抽象,不好理解,下面请跟我一起来做个十分实用的ocx控件,你只要懂一些VB编程基础就可以了!
大家对Windows的菜单非常熟悉,这种统一格式的灰色菜单有时并不能满足一些应用程序的要求,特别是那些对界面要求比较高的多媒体设计。问题是,VC、VB中提供的菜单编辑器并不支持图形菜单功能!不要着急,我们马上自己来开发一个!
创建 menus工程
首先打开VB6.0,在新建工程中选择Activex 控件, 这时设计窗口出现一个类似form表单的界面 这就是你的ocx设计器,缺省名为UserControl1。
1. 在"工程"菜单上单击"Project1 属性",打开"工程属性"对话框。选择"通用"选项卡,将工程名称改为menus
2. 在UserControl1 的"属性"窗口中点击"名称" 属性并且把用户控件名改为menuControl
你可能注意到, menuControl的"属性"窗口和标准的VB的form"属性"窗口既类似又有不同。记住,现在我们设计的是ocx控件,而不是VB中的form!
添加 Test 工程
由于 .ocx 工程不能独立运行,所以我们将添加一个Test工程。在同一工程组中装入设计工程(menus工程)和测试工程(Test工程)将十分有利于调试运行中的部件。
1.在"文件"菜单上单击"添加工程"以打开"添加工程"对话框。
注意: 不要单击"打开工程" 或"新建工程",因为这样会关闭控件工程。
2.双击"Standard EXE"图标以添加普通的 .exe 工程(即我们的Test工程)。
该新工程立即成为这个工程组的"启动"工程。"工程资源管理器"窗口以黑体名字的显示来标识"启动"工程。
注意: ActiveX 控件工程是不能作为启动工程的。
3. 在"文件"菜单上单击"保存工程组"用以保存测试工程和工程组。
ocx代码设计
1. 在menus工程的module模块中增加如下代码:
Type menuRect '创建用户自定义类型
left As Integer
top As Integer
right As Integer
bottom As Integer
End Type
2. 在控件设计窗口中加入一个picturebox控件,取名为bmpmenu。
在bmpmenu中加入另一个picturebox控件,取名为menuitem。
注意: menuitem是bmpmenu的子控件。并且,这两个picturebox的
AutoSize属性皆设为True,BorderStyle属性皆设为None。
3. 在控件设计窗口中的General-Declarations中增加如下代码:
Public g_selectedItem As String
Dim g_fileName As String '菜单文件名
Dim g_height As Integer 'ocx控件的高度
Dim g_width As Integer 'ocx控件的宽度
Dim bmpRects() As menuRect 'bmpRects()用来记录所有菜单项的位置
Dim currentItemNumbers As Integer
Dim currentItemNumber As Integer
Public Event MENUITEMDOWN()
注意: MENUITEMDOWN是我们添加到控件中的一个事件,它的详细作用我们稍后会具体介绍。
4. 为我们的菜单控件添加两个属性: childs 和 BmpName
childs属性表示菜单控件的菜单项数目, BmpName属性表示菜单控件的菜单文件名
首先,打开menuControl的代码窗口。在"工具"菜单上点击"添加过程"打开"添加过程"对话框。在"名称"框输入名字childs。单击"属性"和"公共的"后再单击"确定"。
你将看到如下的代码:
Public Property Get childs() As Variant
End Property
Public Property Let del1(ByVal vNewValue As Variant)
End Property
然后,在代码窗口更改我们新创建的属性过程(修改的部份以黑体表示):
Public Property Get childs() As Integer
childs = currentItemNumbers
End Property
Public Property Let childs(ByVal vNewValue As Integer)
currentItemNumbers = vNewValue
PropertyChanged "childs"
PopAndResize ' 这是一个子过程
End Property
当你对childs属性赋新值时均执行 Property Let 过程, 而当你对childs属性检索该属性值时均执行 Property Get 过程。
对BmpName属性也同样处理,它的代码部份如下:
Public Property Get BmpName() As String
BmpName = g_fileName
End Property
Public Property Let BmpName(ByVal vNewValue As String)
g_fileName = vNewValue
PropertyChanged "BmpName"
PopAndResize
End Property
5. 为了初始化ocx控件,在 UserControl_InitProperties 事件过程中
添加如下代码:
Private Sub UserControl_InitProperties()
BmpName = ""
childs = 0
End Sub
在UserControl_Resize 事件过程中添加如下代码:
Private Sub UserControl_Resize()
If g_height 20 And g_width 20 Then '决定设计状态时的控件大小
UserControl.Height = 300
UserControl.Width = 300
Else
UserControl.Height = g_height '决定运行状态时的控件大小
UserControl.Width = g_width
End If
End Sub
注意: ocx控件设计涉及到许多重要概念,大家必须亲自实践才能真正融会贯通,
下面简单地介绍一下ocx的事件过程设计。
与一般的可编程对象不同,ocx控件同时具有设计时和运行时的两种行为。 即开发者在设计时把一个控件放入窗体时,控件中的一些代码将会执行。
例如,把我们设计的menu控件放入test工程的窗体时, 放置在 UserControl_Resize 事件过程中的代码将会执行;当test工程进入运行状态时, UserControl_Resize事件过程中的代码也会执行。所以,我在UserControl_Resize过程中使用If...Else语句来决定menu控件分别在设计状态和运行状态时的尺寸大小。
6. 好了,我们的ocx控件马上就要完工了,再坚持一下!(ocx确实有点难度,不过它可是代表最新的技术设计概念哦!)
把下面的sub过程加入ocx设计器的代码部分:
Sub popbmpMenu(xposition As Integer, yposition As Integer, itemNumbers As_ Integer, fileName As String)
ReDim bmpRects(itemNumbers)
bmpmenu.Visible = False
g_fileName = fileName
bmpmenu.Picture = LoadPicture(g_fileName + ".bmp")
menuitem.Visible = False
currentItemNumbers = itemNumbers
itemHeight = Int(bmpmenu.Height / itemNumbers)
For i = 0 To itemNumbers - 1
bmpRects(i).left = xposition
bmpRects(i).right = bmpmenu.Width
If i = 0 Then
bmpRects(i).top = yposition
Else
bmpRects(i).top = bmpRects(i - 1).bottom
End If
bmpRects(i).bottom = itemHeight * (i + 1)
Next i
bmpmenu.ZOrder 0
bmpmenu.left = 0
bmpmenu.top = 0
bmpmenu.Visible = True
g_height = bmpmenu.Height ' 菜单位图文件决定了ocx控件的大小
g_width = bmpmenu.Width
End Sub
Sub PopAndResize()
menuitem.Visible = False
If childs 0 And BmpName "" Then
Call popbmpMenu(0, 0, childs, BmpName)
End If
UserControl.Height = g_height ' 调整ocx控件的大小
UserControl.Width = g_width
End Sub
Private Sub GetSelectedItem() '判断哪个菜单项被选中
g_selectedItem = right(g_fileName, 2) + "-" + LTrim(Str(currentItemNumber))
End Sub
最后是两个picturebox上的一些代码:
Private Sub bmpmenu_MouseMove(Button As Integer, Shift As Integer, X As Single, _
Y As Single)
menuitem.Visible = False
For i = 0 To currentItemNumbers - 1
If X bmpRects(i).left And Y bmpRects(i).top And X bmpRects(i).right _
And Y bmpRects(i).bottom Then
currentItemNumber = 0
menuitem.Picture = LoadPicture(g_fileName + "-" + LTrim(Str(i + 1)) + ".bmp")
currentItemNumber = i + 1
menuitem.Move bmpRects(i).left , bmpRects(i).top
menuitem.Visible = True
Exit Sub
End If
Next i
End Sub
Private Sub menuitem_MouseDown(Button As Integer, Shift As Integer, X As Single, _
Y As Single)
GetSelectedItem
menuitem.Visible = False
'启动MENUITEMDOWN事件,此事件的执行代码不写在ocx
'中,而是写在调用此ocx的应用中。
RaiseEvent MENUITEMDOWN
End Sub
测试ocx控件
OK, 我们的ocx终于完成了!下面我们可以来测试一下了!
制作一张菜单bmp文件,它的名字为c2.bmp,共有5个菜单项。
制作5个菜单项的激活状态位图,取名为c2-1.bmp,c2-2.bmp,c2-3.bmp,c2-4.bmp,c2-5.bmp
将这些位图文件存放在和工程组同层的文件夹中。
关闭ocx设计器窗口,打开ocxTest窗口,我们发现在ToolBox工具栏中多了一个新的控件,这就是我们所设计的menuControl。在ocxTest窗口上放置一个menuControl控件,然后在代码窗口中填入以下程序:
Private Sub Form_Click()
menuControl1.BmpName = App.Path + "\c2"
menuControl1.childs = 5
menuControl1.Visible = True
End Sub
Private Sub Form_Load()
menuControl1.Visible = False
End Sub
Private Sub menuControl1_MENUITEMDOWN()
menuControl1.Visible = False
Dim selectMenu As Integer
selectMenu = Val(Trim(Mid(menuControl1.g_selectedItem, 4, 2)))
Select Case selectMenu
Case 1
'第一个菜单项被选中
Case 2
'第二个菜单项被选中
Case 3
'第三个菜单项被选中
Case 4
'第四个菜单项被选中
Case 5
'第五个菜单项被选中
End Select
End Sub
怎么样?调用够简单的吧!这正是微软提出的组件设计的优势。不错,ocx设计的确有些难度,然而一旦设计好,它的调用是十分方便的。ocx的可重用率和易维护性是值得我们在设计时多花些时间的,更重要的是,在软件设计越来越复杂的今天,采用正确的组件设计思想是尤为关键的!
编译ocx
如果一切顺利的话,我们就可以编译ocx了。
1. 在"工程资源管理器"窗口单击"menus"以选择该工程。
2. 在"文件"菜单上单击"生成 menuControl.ocx" 。
注意: 如果你需要你的ocx控件具有许可证,可按如下操作
在"工程"菜单上,点击"menus 属性"打开"工程属性"对话框。选择"通用"选卡,选定"要求许可证关键字",然后单击"确定"。
这样,即使有人将你的ocx拷贝了去,他也无法使用!你就不必担心你的心血被人侵犯喽!
使用ocx控件
由于我们的ocx已经编译成功,所以现在就可以像使用系统中的标准控件一样来调用我们的menuControl.ocx了。
退出设计时的工程组,新建一个VB的标准工程,在"工程"菜单上单击"部件",在 Controls 的选项卡上,复选"menus"后再单击"确定"。现在menuControl控件和Label,TextBox等控件就一样被对待处理了,只不过menuControl是我们自己设计的!
菜单的图形文件起名有一定规则,大家只要看一下程序就明白了。当然,读者朋友们也可以按自己喜欢的方式来处理文件名。
后记
ocx控件设计还涉及到许多方方面面,由于篇幅有限,这里就不详述了(其实,大家能坚持到这里就够有耐心了! (-_-) )。menuControl还有不少地方需要改进,这就待以后再慢慢完善了。
js调用ocx控件
1.对于64位机器,将厂商提供的.dll文件拷贝到 C:\Windows\System32 目录下,将.ocx文件拷贝到C:\Windows\SysWOW64 目录下。
2.注册*.ocx文件。管理员身份。在“运行”中直接输入“regsvr32 c:\Windows\SysWOW64\ZT_DIT.ocx”.将其注册成功,如果注册失败,有可能是没有取得管理员权限,根据报错内容在网上搜索解决办法。
3.注册成功后,需要取得注册的.ocx的classid,便于在页面中引用。w+r(win10),打开运行。输入regedit,打开注册表,查找你注册的ocx
右键(复制项名称)将复制的粘贴到写字板,就知道clsid了, 取得clsid后写入带页面中,:
eg: OBJECT id="ZTIDC" style="width:400px;height:500" type="application/x-oleobject" classid="CLSID:2BC73BDF-3532-441D-9F50-00649C2ADB85"
/OBJECT
这样,在ie中就可以调用了!但是,在火狐和谷歌调用不了,甚至连界面都出不来。
在网上下载了
将axhost.r39.xpi拖入到火狐浏览器,结果报:此附加组件无法安装。。。。经过查资料,要更改火狐的一些设置,地址栏键入:about:config 修改为false