本文目錄一覽:
- 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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293648.html