用
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。
t.Suspend() 這個是掛起線程。是一個異步方法。
t.Sleep 我看了是一個同步方法。桐賀脊要等這個方法運(yùn)行完了才繼續(xù)下一步。
這和from.show和 from.showdiaglog區(qū)別差不多!
至于疑問2我也沒找到原因拍早。局滲
這個沒法做到。原因
1)當(dāng)你將方法排入線程池隊(duì)列后,此方法在有線程池線程變得可用時(shí)執(zhí)行。
2)線程池中某個線程的可用與不可用,是由點(diǎn)虐 后臺決定,用戶程序無法控談襲制的
3)正如知侍備你觀察到的:線程啟動搭毀的時(shí)間不同,有快有慢,這恰恰說明線程池起作用了:線程池的調(diào)度試圖讓程序響應(yīng)達(dá)到最佳。
熟悉VB的朋友對使用ActiveX控件一定不會陌生,眾多控件極大地方便了編程,但
唯一的缺陷是不能動態(tài)加載控含雀逗件,必須在設(shè)計(jì)時(shí)通過引用,將控件放置在窗體上。
VB6.0已能夠解決該問題,只是幫助中沒有明確說明,并且沒有描述到一些關(guān)鍵功能,
由于以前的版本中可以動態(tài)創(chuàng)建進(jìn)程外服務(wù):如果對象是外部可創(chuàng)建的,可在 Set 語
句中用 New 關(guān)鍵字、CreateObject 或 GetObject 從部件外面將對象引用賦予變量。
如果對象是從屬對象,則需使用高層對象的方法,在 Set 語句中指定一個對象引用:
Dim xlApp1 As Excel.Application
Set xlApp1 = New Excel.Application
或
Dim xlApp As Object '定義存放引用對象的變量。
Set xlApp = CreateObject("excel.application")
xlApp.Visible = True
---- 這些語法很容易造成誤導(dǎo),以為動態(tài)加載ActiveX控件也是此方法,可能有朋友也
象我一樣利用CreateObject嘗試了無數(shù)次,卻無功而返,不知微軟公司是出于何種考
慮,動態(tài)加載ActiveX控件是擴(kuò)展控件集合的方式實(shí)現(xiàn),通過實(shí)際摸索,終于就如何實(shí)
現(xiàn)動態(tài)ActiveX控件找出了一條切實(shí)可行的方法,下面以一個具體的實(shí)例來詳細(xì)說明。
一、ActiveX控件
---- ActiveX 控件是 Visual Basic 工具箱的擴(kuò)充部分。使用 ActiveX 控件的方法與
使用其它標(biāo)準(zhǔn)內(nèi)裝的控件,如 CheckBox 控件,完全一樣。在程序中加入 ActiveX 控
件后,它將成為開發(fā)和運(yùn)行環(huán)境的一部分,并為應(yīng)用程序提供新的功能。
---- ActiveX 部件通過客戶端/服務(wù)器關(guān)系與應(yīng)用程序— 及與部件相互之間— 交互作
用??蛻舳耸鞘褂貌考δ艿膽?yīng)用程序代碼或部件。服務(wù)器是部件及其關(guān)聯(lián)的對象。例
如,假設(shè)應(yīng)用程序使用 ActiveX 控件來提供一個標(biāo)準(zhǔn)的雇員窗體,供公司的多種應(yīng)用
程序使用。提供雇員窗體的 ActiveX 控件就是服務(wù)器,使用這個控件的應(yīng)用程序就是
服務(wù)器的客戶端。
二、加載方法
---- VB6.0中對Controls 集合進(jìn)行了擴(kuò)展,以前版本中Controls 集合在窗體上列舉出
已加載的控件,這在迭代過程中是很有用的。Controls 集合標(biāo)識一個叫做 Controls
的內(nèi)在窗體級變量。如果忽略可選的 object 所在處的整數(shù),則關(guān)鍵字 Controls 必須
包括在內(nèi)。我們通常在窗口中使用如下代碼:
Text1.Text="Hello, world"
其實(shí)也可以使用如下代碼達(dá)到同一目的:
Controls(1).Text="Hello, world"
---- 在VB6.0中除了原來的Clear、Remove 方法外(很奇怪,為什么微談賣軟在VB5.0中只提
供這兩種方法,而沒有提供Add方法,因?yàn)闆]有Add,這兩種方法也就沒什么用處),增
加了Add方法,該方法就是用于動態(tài)加載控件的:
Controls.Add(progid as String, Name as String);
progid: ActiveX部件的ProgID,如:"VB.CheckBox";
Name:ActiveX部件加載后的名稱,如: "MyCheckBox";
若要在窗體上添歲前加一個名為MyButton的按鈕,可以使用:
dim oControl as Object '窗體級變量
注意:這里聲明為Object對象類型
Private Sub LoadControl()
Set oControl = Controls.Add
("VB.CommandButton", "MyButton")
oControl.Left = 10
oControl.Top = 10
oControl.Visible = True '使控件可見
End Sub
---- 這是VB6.0的標(biāo)準(zhǔn)語法,它在例程中也是如此演示的,不過該方法雖然現(xiàn)實(shí)了控件
的動態(tài)加載,按鈕顯示在窗體上,可以象普通按鈕一樣按下去,但加載的控件不能預(yù)先
設(shè)計(jì)響應(yīng)事件代碼,如:事件Sub MyButton_Click()將是非法的,當(dāng)然,可以將要響應(yīng)
的事件封裝在控件內(nèi)部。就編程的觀點(diǎn)來看該方法沒什么大的用處,開發(fā)ActiveX控件
的目的是為了資源共享,為了被其他開發(fā)人員利用,所以要提供必要的事件接口,顯然
利用該方法不行,通過分析VBControls等相關(guān)對象,找出VBControlExtender對象與
EventInfo相結(jié)合能提供事件陷井捕捉,VBControlExtender對象對動態(tài)添加控件特別有
用,它提供了一套通用的屬性、方法、事件給開發(fā)人員,它的一個突出特點(diǎn)是能編程設(shè)
計(jì)控件的事件,熟習(xí)類編程的朋友對帶事件的對象聲明一定不會陌生:
---- Dim WithEvents objElemt as CElemtVBControlExtender也不例外,聲明的語法
一樣,只不過它有個特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到對象使
用RaiseEvent產(chǎn)生的所有事件,EventInfo數(shù)據(jù)結(jié)構(gòu)映射了事件的名稱、參數(shù)個數(shù)和參
數(shù)的值。VBControlExtender和 EventInfo相結(jié)合,采用Select Case 就可以預(yù)先將不
同類對象的事件放置一起,各自獨(dú)立運(yùn)作。將上面的代碼改寫一下就能提供Click事件
了:
---- Dim WithEvents oControl As VBControlExtender '帶事件聲明聲明之后您就可
以在代碼窗口的左上角的對象下拉框中發(fā)現(xiàn)該對象出現(xiàn)了,也就是說,該對象有了事件
或方法了,它的事件有DragDrop,DragOver ,LostFocus ,GotFocus ,ObjectEvent
和Validate,其中ObjectEvent是通用的事件捕捉。
Private Sub LoadControl()
Set oControl = Controls.Add
("VB. CommandButton", "MyButton")
oControl.Visible = True
End Sub
Private Sub oControl_ObjectEvent(Info As EventInfo)
Select Case Info.Name
Case "Click" 'Click事件
'您可以添加處理Click事件代碼
MsgBox "您按了MyButton!"
Case Else ' 其他事件
' Handle unknown events here.
End Select
End Sub
---- 當(dāng)然對微軟提供的標(biāo)準(zhǔn)控件能采用該方法添加,大家都不會懷疑,但自己開發(fā)的
控件也能嗎?答案是肯定的,我們可以用一個實(shí)際的例子進(jìn)行說明。
你這是要把你做的瀏覽器當(dāng)做默認(rèn)瀏覽器吧
如果是這樣,需要操作注冊表
操作注冊表具體方法
1、開始→運(yùn)行→輸入regedit,打開注冊表編輯器
2、找到HKEY_CLASSES_ROOT\http\shell\open\command,在右邊的窗口中雙擊"默認(rèn)",將要用瀏覽器的可執(zhí)行文件的完全路徑輸入到這里,例如設(shè)置IE為默認(rèn)瀏覽器:輸入“C:\Program Files\Internet Explorer\iexplore.exe”
3、然后找到 HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application,在右邊的窗口中雙擊"默認(rèn)",設(shè)置瀏覽器名,如果是Firefox則輸入Firefox,如果是IE則輸入IExplore。(小提示:切記不能寫錯名稱,如果嘩雀孝你不知道瀏覽器的標(biāo)準(zhǔn)名稱是什么,只需要到安裝目錄下查看該瀏覽器的名稱即可)
將以步驟用VB點(diǎn)虐 實(shí)現(xiàn)即可亂稿
Command()函數(shù)可獲歲好取啟動時(shí)參數(shù),一般用這個函數(shù)獲取網(wǎng)址