① 奼備釜vb鑱婂ぉ紼嬪簭婧愪唬鐮
鍔犱竴涓猈Insock1鎺т歡錛屼袱涓鏂囨湰妗嗭紙txtMess銆乼xtSend錛夊拰涓涓鎸夐挳錛屼唬鐮佸備笅Private Sub Command1_Click()
Winsock1.SendData txtSend.Text '鍙戦佽亰澶╁唴瀹
txtSend.Text = "" '鑱婂ぉ鍐呭規竻絀
End SubPrivate Sub Form_Load()
Dim my As String
Winsock1.Protocol = sckUDPProtocol '璁劇疆涓篣DP鍗忎箟
Winsock1.LocalPort = 60 '闅忎究璁劇疆錛屼笉榪囦袱涓瑕佷竴鏍
Winsock1.RemotePort = 60
my = Winsock1.LocalIP '鍙栧緱鑷宸辯殑IP鍦板潃錛屾槸涓嶈佺殑
Winsock1.RemoteHost = my '榪欓噷搴旇ユ槸鏀逛負鍒浜鴻$畻鏈虹殑IP錛岀敱浜庤嚜宸辨槸鍗曟満錛屾墍浠ュ氨璁劇疆鎴愯嚜宸辯殑錛岃嚜宸辯粰鑷宸卞彂淇℃伅錛屽彲浠ユ嬁鍙︿竴鍙頒富鏈鴻瘯璇旹nd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '鍙栧埌鏁版嵁鏃跺彂鐢
Dim Tmp As String
Winsock1.GetData Tmp, vbString '鍙栧緱鏁版嵁
Tmp = "瀵規柟IP鍦板潃:" + Winsock1.RemoteHostIP + "鍙戦佸唴瀹逛負-->" + Tmp
txtMess.Text = Tmp + Chr$(13) + Chr$(10) + txtMess.Text '鎹㈣岃緭鍑鴻亰澶╀俊鎮
End Sub璇鍙ヨ秴綆鍗曪紝鎴戠敤浜嗗嚑灝忔椂鎵嶅紕鍑恆
② 如何編寫高質量的VB代碼
1. 使用整數(Integer)和長整數(Long)
提高代碼運行速度最簡單的方法莫過於使用正確的數據類型了。也許你不相信,但是正確地選擇數據類型可以大幅度提升代碼的性能。在大多數情況下,程序員可以將Single,Double和Currency類型的變數替換為Integer或Long類型的變數,因為VB處理Integer和Long的能力遠遠高於處理其它幾種數據類型。
在大多數情況下,程序員選擇使用Single或Double的原因是因為它們能夠保存小數。但是小數也可以保存在Integer類型的變數中。例如程序中約定有三位小數,那麼只需要將保存在Integer變數中的數值除以1000就可以得到結果。根據我的經驗,使用Integer和Long替代Single,Double和Currency後,代碼的運行速度可以提高將近10倍。
2. 避免使用變體
對於一個VB程序員來說,這是再明顯不過的事情了。變體類型的變數需要16個位元組的空間來保存數據,而一個整數(Integer)只需要2個位元組。通常使用變體類型的目的是為了減少設計的工4作量和代碼量,也有的程序員圖個省事而使用它。但是如果一個軟體經過了嚴格設計和按照規范編碼的話,完全可以避免使用變體類型。
在這里順帶提一句,對於Object對象也存在同樣的問題。請看下面的代碼:
Dim FSO
Set FSO = New Scripting.FileSystemObject
或
Dim FSO as object
Set FSO = New Scripting.FileSystemObject
上面的代碼由於在申明的時候沒有指定數據類型,在賦值時將浪費內存和CPU時間。正確的代碼應該象下面這樣:
Dim FSO as New FileSystemObject
3. 盡量避免使用屬性
在平時的代碼中,最常見的比較低效的代碼就是在可以使用變數的情況下,反復使用屬性(Property),尤其是在循環中。要知道存取變數的速度是存取屬性的速度的20倍左右。下面這段代碼是很多程序員在程序中會使用到的:
Dim intCon as Integer
For intCon = 0 to Ubound(SomVar())
Text1.Text = Text1.Text & vbcrlf & SomeVar(intCon)
Next intCon
下面這段代碼的執行速度是上面代碼的20倍。
Dim intCon as Integer
Dim sOutput as String
For intCon = 0 to Ubound(SomeVar())
sOutput = sOutput & vbCrlf &
SomeVar(intCon)
Next
Text1.Text = sOutput
4. 盡量使用數組,避免使用集合
除非你必須使用集合(Collection),否則你應該盡量使用數組。據測試,數組的存取速度可以達到集合的100倍。這個數字聽起來有點駭人聽聞,但是如果你考慮到集合是一個對象,你就會明白為什麼差異會這么大。
5. 展開小的循環體
在編碼的時候,有可能遇到這種情況:一個循環體只會循環2到3次,而且循環體由幾行代碼組成。在這種情況下,你可以把循環展開。原因是循環會佔用額外的CPU時間。但是如果循環比較復雜,你就沒有必要這樣做了。
6. 避免使用很短的函數
和使用小的循環體相同,調用只有幾行代碼的函數也是不經濟的--調用函數所花費的時間或許比執行函數中的代碼需要更長的時間。在這種情況下,你可以把函數中的代碼拷貝到原來調用函數的地方。
7. 減少對子對象的引用
在VB中,通過使用.來實現對象的引用。例如:
Form1.Text1.Text
在上面的例子中,程序引用了兩個對象:Form1和Text1。利用這種方法引用效率很低。但遺憾的是,沒有辦法可以避免它。程序員唯一可以做就是使用With或者將用另一個對象保存子對象(Text1)。
注釋: 使用With
With frmMain.Text1
.Text = "Learn VB"
.Alignment = 0
.Tag = "Its my life"
.BackColor = vbBlack
.ForeColor = vbWhite
End With
或者
注釋: 使用另一個對象保存子對象
Dim txtTextBox as TextBox
Set txtTextBox = frmMain.Text1
TxtTextBox.Text = "Learn VB"
TxtTextBox.Alignment = 0
TxtTextBox.Tag = "Its my life"
TxtTextBox.BackColor = vbBlack
TxtTextBox.ForeColor = vbWhite 注意,上面提到的方法只適用於需要對一個對象的子對象進行操作的時候,下面這段代碼是不正確的:
With Text1
.Text = "Learn VB"
.Alignment = 0
.Tag = "Its my life"
.BackColor = vbBlack
.ForeColor = vbWhite
End With
很不幸的是,我們常常可以在實際的代碼中發現類似於上面的代碼。這樣做只會使代碼的執行速度更慢。原因是With塊編譯後會形成一個分枝,會增加了額外的處理工作。
8. 檢查字元串是否為空
大多數程序員在檢查字元串是否為空時會使用下面的方法:
If Text1.Text = "" then
注釋: 執行操作
End if
很不幸,進行字元串比較需要的處理量甚至比讀取屬性還要大。因此我建議大家使用下面的方法:
If Len(Text1.Text) = 0 then
注釋: 執行操作
End if
9. 去除Next關鍵字後的變數名
在Next關鍵字後加上變數名會導致代碼的效率下降。我也不知道為什麼會這樣,只是一個經驗而已。不過我想很少有程序員會這樣畫蛇添足,畢竟大多數程序員都是惜字如金的人。
注釋: 錯誤的代碼
For iCount = 1 to 10
注釋: 執行操作
Next iCount
注釋: 正確的代碼
For iCount = 1 to 10
注釋: 執行操作
Next
10. 使用數組,而不是多個變數
當你有多個保存類似數據的變數時,可以考慮將他們用一個數組代替。在VB中,數組是最高效的數據結構之一。
11. 使用動態數組,而不是靜態數組
使用動態數組對代碼的執行速度不會產生太大的影響,但是在某些情況下可以節約大量的資源。
12. 銷毀對象
無論編寫的是什麼軟體,程序員都需要考慮在用戶決定終止軟體運行後釋放軟體佔用的內存空間。但遺憾的是很多程序員對這一點好像並不是很在意。正確的做法是在退出程序前需要銷毀程序中使用的對象。例如:
Dim FSO as New FileSystemObject
' 執行操作
' 銷毀對象
Set FSO = Nothing
對於窗體,可以進行卸載:
Unload frmMain
或
Set frmMain = Nothing
13. 變長和定長字元串
從技術上來說,與變長字元串相比,定長字元串需要較少的處理時間和空間。但是定長字元串的缺點在於在很多情況下,你都需要調用Trim函數以去除字元串末的空字元,這樣反而會降低代碼效率。所以除非是字元串的長度不會變化,否則還是使用變長字元串。
14. 使用類模塊,而不是ActiveX控制項
除非ActiveX控制項涉及到用戶界面,否則盡量使用輕量的對象,例如類。這兩者之間的效率有很大差異。
15. 使用內部對象
在涉及到使用ActiveX控制項和DLL的時候,很多程序員喜歡將它們編譯好,然後再加入工程中。我建議你最好不要這樣做,因為從VB連接到一個外部對象需要耗費大量的CPU處理能力。每當你調用方法或存取屬性的時候,都會浪費大量的系統資源。如果你有ActiveX控制項或DLL的源代碼,將它們作為工程的私有對象。
16. 減少模塊的數量
有些人喜歡將通用的函數保存在模塊中,對於這一點我表示贊同。但是在一個模塊中只寫上二三十行代碼就有些可笑了。如果你不是非常需要模塊,盡量不要使用它。這樣做的原因是因為只有在模塊中的函數或變數被調用時,VB才將模塊載入到內存中;當VB應用程序退出時,才會從內存中卸載這些模塊。如果代碼中只有一個模塊,VB就只會進行一次載入操作,這樣代碼的效率就得到了提高;反之如果代碼中有多個模塊,VB會進行多次載入操作,代碼的效率會降低。
17. 使用對象數組
當設計用戶界面時,對於同樣類型的控制項,程序員應該盡量使用對象數組。你可以做一個實驗:在窗口上添加100個PictureBox,每個PictureBox都有不同的名稱,運行程序。然後創建一個新的工程,同樣在窗口上添加100個PictureBox,不過這一次使用對象數組,運行程序,你可以注意到兩個程序載入時間上的差別。
18. 使用Move方法
在改變對象的位置時,有些程序員喜歡使用Width,Height,Top和Left屬性。例如:
Image1.Width = 100
Image1.Height = 100
Image1.Top = 0
Image1.Left = 0
實際上這樣做效率很低,因為程序修改了四個屬性,而且每次修改之後,窗口都會被重繪。正確的做法是使用Move方法:
Image1.Move 0,0,100,100
19. 減少圖片的使用
圖片將佔用大量內存,而且處理圖片也需要佔用很多CPU資源。在軟體中,如果可能的話,可以考慮用背景色來替代圖片--當然這只是從技術人員的角度出發看這個問題。
20. 使用ActiveX DLL,而不是ActiveX控制項
如果你設計的ActiveX對象不涉及到用戶界面,使用ActiveX DLL。
編譯優化
我所見過的很多VB程序員從來沒有使用過編譯選項,也沒有試圖搞清楚各個選項之間的差別。下面讓我們來看一下各個選項的具體含義。
1. P-代碼(偽代碼)和本機代碼
你可以選擇將軟體編譯為P-代碼或是本機代碼。預設選項是本機代碼。那什麼是P-代碼和本機代碼呢?
P-代碼:當在VB中執行代碼時,VB首先是將代碼編譯為P-代碼,然後再解釋執行編譯好的P-代碼。在編譯環境下,使用這種代碼要比本機代碼快。選擇P-代碼後,編譯時VB將偽代碼放入一個EXE文件中。
本機代碼:本機代碼是VB6以後才推出的選項。當編譯為EXE文件後,本機代碼的執行速度比P-代碼快。選擇本機代碼後,編譯時VB使用機器指令生成EXE文件。
在使用本機代碼進行編譯時,我發現有時候會引入一些莫名其妙的錯誤。在編譯環境中我的代碼完全正確地被執行了,但是用本機代碼選項生成的EXE文件卻不能正確執行。通常這種情況是在卸載窗口或彈出列印窗口時發生的。我通過在代碼中加入DoEvent語句解決了這個問題。當然出現這種情況的幾率非常少,也許有些VB程序員從來沒有遇到過,但是它的確存在。
在本機代碼中還有幾個選項:
a) 代碼速度優化:該選項可以編譯出速度較快的執行文件,但執行文件比較大。推薦使用
b) 代碼大小優化:該選項可以編譯出比較小的執行文件,但是以犧牲速度為代價的,不推薦使用。
c) 無優化:該選項只是將P-代碼轉化為本機代碼,沒有做任何優化。在調試代碼時可以使用。
d) 針對Pentium Pro優化:雖然該項不是本機代碼中的預設選項,但是我通常會使用該選項。該選項編譯出的可執行程序在Pentium Pro和Pentium 2以上的機器上可以運行得更快,而在比較老的機器上要稍稍慢一些。考慮到現在用Pentium 2都是落伍,所以推薦大家使用該選項。
e) 產生符號化調試信息:該項在編譯過程中生成一些調試信息,使用戶可以利用Visual C++一類的工具來調試編譯好的代碼。使用該選項會生成一個.pdf文件,該文件記錄了可執行文件中的標志信息。當程序擁有API函數或DLL調用時,該選項還是比較有幫助的。
2. 高級優化
高級優化中的設置可以幫助你提高軟體的速度,但是有時候也會引入一些錯誤,因此我建議大家盡量小心地使用它們。如果在代碼中有比較大的循環體或者復雜的數學運算時,選中高級優化中的某些項會大幅度提升代碼的性能。如果你使用了高級優化功能,我建議你嚴格測試編譯好的文件。
a) 假定無別名:可以提高循環體中代碼的執行效率,但是在如果通過變數的引用改變變數值的情況下,例如調用一個方法,變數的引用作為方法的參數,在方法中改變了變數的值的話,就會引發錯誤。有可能只是返回的結果錯誤,也有可能是導致程序中斷運行的嚴重錯誤。
b) 取消數組綁定檢查、取消整數溢出檢查和取消浮點錯誤檢查:在程序運行時,如果通過這些檢查發現了錯誤,錯誤處理代碼會處理這些錯誤。但是如果取消了這些檢查,發生了錯誤程序就無法處理。只有當你確定你的代碼中不會出現上面的這些錯誤時,你才可以使用這些選項。它們將使軟體的性能得到很大的提升。
c) 允許不舍入的浮點操作:選擇該選項可以是編譯出來的程序更快地處理浮點操作。它唯一的缺點就是在比較兩個浮點數時可能會導致不正確的結果。
d) 取消Pentium FDIV安全檢查:該選項是針對一些老的Pentium晶元設置的,現在看來已經過時了。
③ 什麼是VB源碼
這個詞分為兩部分來解釋。
第一、VB
VB可以是指一種計算機語言,是Visual Basic的縮寫,由美國微軟公司開發;也可以指用來進行VB語言開發的開發平台,比如MicroSoft Visual Basic 6.0
計算機語言分為最早的也是最基本的機器語言(二進制語言)、低級語言(匯編)、高級語言(VB、C、C++、C#)。其中執行效率最高的是機器語言,它不需要編譯可以直接被機器讀懂。效率最低的是高級語言,它需要經過編譯甚至多次編譯才能轉變為機器語言。但是高級語言是最接近自然語言的(如:英語),因此被廣泛的使用。
第二、源碼
類似的,用英語書寫的可以用來交流的文字片斷叫做文章,那麼用VB語言來書寫的可以被計算機編譯平台理解的文字片斷就叫做VB代碼了。
那麼如果有一個程序,是使用VB語言來寫成的,那麼這些VB語言就叫做該程序的VB源碼
不知道這樣解釋樓主能不能理解
④ VB Winsock最簡單的;聊天程序源代碼
這個是我以前學習的一個實例。希望對你有幫助!!!
用VB實現客戶——伺服器(TCP/IP)編程實例
-
現在大多數語言都支持客戶-伺服器模式編程,其中VB給我們提供了很好的客戶-伺服器編程方式。下面我們用VB來實現TCP/IP網路編程。
TCP/IP協議是Internet最重要的協議。VB提供了WinSock控制項,用於在TCP/IP的基礎上進行網路通信。當兩個應用程序使用Socket進行網路通信時,其中一個必須創建Socket伺服器偵聽,而另一個必須創建Socket客戶去連接伺服器。這樣兩個程序就可以進行通信了。
1.創建伺服器,首先創建一個服務埠號。並開始偵聽是否有客戶請求連接。
建立一窗體,並向其增加一個Winsock控制項(可在工程菜單中的部件項來添加此控制項)
添加兩文本框Text1,Text2,和一按鈕Command1
Private Sub Form_Load()
SockServer.LocalPort = 2000 ′伺服器埠號,最好大於1000
SockServer.Listen ′開始偵聽
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockServer.Close
End Sub
Private Sub SockServer_Close()
SockServer.Close
End Sub
Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)
SockServer.Close
SockServer.Accept requestID ′表示客戶請求連接的ID號
End Sub
′當客戶向伺服器發送數據到達後,產生DataArrival事件,在事件中接收數據,GetData方法接收數據。
Private Sub SockServer_Data
Arrival(ByVal bytesTotal As Long)
Dim s As String
SockServer.GetData s
Text1.Text = s
End Sub
當我需要向客戶發送數據時,只需調用SendData方法。
Private Sub Command1_Click()
SockServer .SendData Text2.Text
text1.text = text2.text
text2.text = ""
End Sub
2.創建客戶。要創建客戶連接伺服器,首先設置伺服器主機名,如IP地址、域名或計算機名,然後設置伺服器埠,最後連接伺服器。
建立一窗體,並向其增加一個Winsock控制項(可在工程菜單中的部件項來添加此控制項),取名為:SockC1。添加兩文本框Text1,Text2,和一按鈕Command1
Private Sub Form_Load()
dim my as string
my = SockCl.RemoteHostIP
SockCl.RemoteHost = my
′表示伺服器主機名
SockCl.RemotePort = 2000
′表示伺服器埠名
SockCl.Connect
′連接到伺服器
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockCl.Close
End Sub
Private Sub SockCl_Close()
SockCl.Close
End Sub
Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockCl.GetData s ′接收數據到文本框中
Text1.Text = s
End Sub
Private Sub Command1_Click()
SockCl.SendData Text2.Text ′向伺服器發送數據
text1.text = text2.text
text2.text = ""
End Sub
3.進行通信。把這兩個窗體分別編譯成兩個EXE文件,伺服器Server.exe和客戶Client.exe程序,並把它們分別安裝在伺服器端和客戶端,這樣就可以實現兩者通信了。
------------------------------------整理後的代碼如下-------------------------------
Private Sub Form_Load()
Dim my As String
my = SockCl.RemoteHostIP
SockCl.RemoteHost = my
SockCl.RemotePort = 2000
SockCl.Connect
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockCl.Close
End Sub
Private Sub SockCl_Close()
SockCl.Close
End Sub
Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockCl.GetData s
Text1.Text = s
End Sub
Private Sub Command1_Click()
SockCl.SendData Text2.Text
Text1.Text = Text2.Text
Text2.Text = ""
End Sub
Private Sub Form_Load()
SockServer.LocalPort = 2000
SockServer.Listen
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockServer.Close
End Sub
Private Sub SockServer_Close()
SockServer.Close
End Sub
Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)
SockServer.Close
SockServer.Accept requestID
End Sub
Private Sub Command1_Click()
SockServer.SendData Text2.Text
Text1.Text = Text2.Text
Text2.Text = ""
End Sub
Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockServer.GetData s
Text1.Text = s
End Sub
⑤ 求用vb編一個抽獎軟體的源代碼
dim i
窗口啟動:
i=0
Open App.Path & "\電話號碼.txt" For Input As #1
while eof(1)=false
Line Input #1,a
List1.AddItem a
wend
close #1
按開始:
timer1.Interval=50
按結束:
timer1.Interval=0
timer的事件:
i=i+1
if i=List1.ListCount then i=0
Label1.Caption = List1.List(i)
不好意思啊,由於沒有注意,所以先前的答案有兩個小錯誤,現在已修正了
所需控制項:
兩個按鈕,一個開始,一個結束;一個時鍾控制項
一個列表框;一個標簽控制項
⑥ VB編寫的區域網聊天工具源代碼
用VB做聊天程序的方法
---- 所謂"聊天"是指兩個程序能夠發送數據給對方。這個程序涉及到數據通訊的知識,彷彿很復雜,不過,由於VB給我們提供了一個Winsock控制項,問題就變得很簡單了。
---- 先編寫"聊天(主機)"程序。在窗體里添加Winsock控制項,並設置其Protocol屬性為1-SckUDPProtocol,其他屬性為預設值。接著添加兩個標簽和兩個文本框,設置兩個標簽的標題屬性分別為"接收窗"和"發送窗";兩個文本框的標題屬性為空。最後編寫代碼:
---- 1."聊天(主機)"
Private Sub Form-Load()
′設置網路地址
Winsock1.LocalPort=1024
Winsock1.RemoteHost="202.96.6.1"
Winsock1.RemotePort=1999
End Sub
Private Sub Text1-Change()
′發送用戶輸入的內容
Winsock1.SendData Text1.Text
End Sub
Private Sub Winsock1-DataArrival
(Byval bytesTotal As Long)
Dim rec As String
′接收對方數據並在文本框內顯示
Winsock1.GetData rec, vb String
Text2.Text=rec
End Sub
---- 2."聊天(副機)"
Private Sub Form_Load()
′設置網路地址
Winsock1.LocalPort=1999
Winsock1.RemoteHost="202.96.6.1"
Winsock1.RemotePort=1024
---- 其他部分程序與(主機)相同。最後將兩個程序存檔,並編譯成執行(.Exe)文件。現在就可以使用這個程序進行對話了。
---- 七.文本框中文本的某一特定字元或字元串同時高亮顯示的方法
---- 由於普通TextBox控制項不支持不連續字元串的同時高亮顯示,所以我們選擇RichTextBox控制項。單擊工程(Project)選單項,在彈出的下拉選單中單擊組件(Components)選單項,從彈出的對話框中選擇Microsoft Rich Textbox Control 5.0復選框,確定載入RichTextBox控制項。
---- 新建(New)一個工程,在窗體(Form)上添加一個RichTextBox控制項和兩個Command(按鈕)控制項,都採用系統默認的Name屬性值;設置RichTextBox的Text屬性值為空,Command1和Command2的Caption屬性值分別設為"輸入文本"和"選擇字元串"。最後,添加如下VB代碼:
Private Sub Command1-Click()
Dim str As String
Dim Text As String
str=〃輸入文本〃
Text=InputBox(str)
RichTextBox1.Text=Text
End Sub
Private Sub Command2-Click()
Dim str As String
Dim Text As String
Dim Position As Integer
Dim Lenth As Integer
str=〃輸入要高亮顯示的字元串〃
Text=InputBox(str)
If Text 〈〉 〃〃 Then
Position=InStr(RichTextBox1.Text, Text)-1
Lenth=Len(Text)
RichTextBox1.SelStart=Position
RichTextBox1.SelLength=Lenth
RichTextBox1.SelColor=RGB(255,0,0)
Do While InStr(Position+Lenth+
1, RichTextBox1.Text, Text) 〈〉 0
Position=InStr(Position+Lenth+
1, RichTextBox1.Text, Text)-1
RichTextBox1.SelStart=Position
RichTextBox1.SelLength=Lenth
RichTextBox1.SelColor=RGB(255,0,0)
Loop
End If
End Sub
---- 按F5執行程序,單擊"輸入文本"按鈕,在彈出的對話框中輸入一些文本,確定後,剛剛輸入的文本將顯示在RichTextBox中;再單擊"選擇字元串"按鈕,在彈出的對話框中輸入你希望高亮顯示的字元串,確定後,RichTextBox中相應的字元串將以紅色高亮顯示。
---- 八.編程實現Windows 95/98操作系統熱啟動的方法
---- 要利用程序實現系統的重新啟動,可以在你的程序中調用API函數來實現。建一個子函數:(以VB為例)
Declare Function SystemParametersInfo Lib 〃
user32〃 Alias -
〃SystemParametersInfo〃 (ByVal uAction As Long,
ByVal uParam As Long,
ByVal lpvParam As Any, ByVal
fuWinIni As Long) As Long
Sub DisableCtrlAltDelete(bDisabled As Boolean)
Dim X As Long
X=SystemParametersInfo(97, bDisabled, CStr(1), 0)
End Sub
Call DisableCtrlAltDelete(true) ′禁止熱啟
Call DisableCtrlAltDelete(false) ′允許熱啟
---- 九.在Windows 95/ 98啟動後自動啟動程序的方法
---- 我們都知道在Windows 95/98的"開始"→"程序"選單下有一"啟動"選單項,當每次啟動Windows 95或Windows 98時,系統都會自動啟動放在"啟動"選單欄里的可執行程序。
---- 但目前有好多軟體,像解霸五、ICQ,以及大部分實時偵測病毒的軟體等等,安裝後,並沒有放在"啟動"選單里,也能在啟動操作系統時自動啟動。怎麼實現的呢?
---- 其實只要知道Windows注冊表的一些知識,這個問題就不能稱之為問題了。用滑鼠單擊"開始",打開開始選單,再單擊"運行",出現一對話框,然後輸入"regedit",確定後,會打開系統注冊表編輯器,找到HKEY-LOCAL-MACHINE? SOFTWARE?Microsoft?Windows?CurrentVersion?Run,加入你的程序的入口,就可以了。如果不知道怎麼加,就參考一下已經存在的鍵值。
---- 十. 如何把數據文件輸出到Text控制項中?如果數據量比較大,窗體滿屏也不夠大,怎麼解決?
---- 有一個比較簡單的方法,就是把數據放到一個文本框(Text)里,並在其中加上水平和垂直滾動條。具體實現步驟為:先在窗體(Form)里加入一個文本框,採用默認名Text1;然後,設置文本框Text1的屬性:Text屬性設置為空,MultiLine屬性設置為True,ScrollBars屬性設置為3-Both;接著添加如下VB代碼:
Private Sub Form-Load()
Dim Handle As Integer
Dim FileName As String
On Error GoTo ErrExit
begin:
′輸入要顯示的數據文件的名稱
FileName=InputBox$(〃Input Filename〃,
〃Open File〃)
On Error GoTo FileErr
Handle=FreeFile
Open FileName For Input As #Handle
′把數據文件中的數據輸出到文本框中
Text1.Text=Input$(LOF(Handle), Handle)
Close #Handle
Exit Sub
FileErr:
Dim ErrNum As Integer
If Err.Number=53 Then
ErrNum=MsgBox(〃File not exist〃,
vbOKCancel, 〃Error Information〃)
If ErrNum=1 Then
GoTo begin
Else
Exit Sub
End If
End If
MsgBox Err.Description, , 〃file open failed〃
ErrExit:
Exit Sub
End Sub
′使文本框充滿整個窗體
Private Sub Form-Resize()
Text1.Left=0
Text1.Top=0
Text1.Width=Form1.Width-100
Text1.Height=Form1.Height-400
End Sub
---- 通過這樣的處理,不僅能解決問題,而且用戶還可以在文本框中對數據進行編輯。
---- 十一.關聯文件列表框、目錄列表框和驅動器列表框的方法
---- 想做一個對話窗體,包含驅動器列表框、目錄列表框和文件列表框,並能實現三者的同步操作,怎麼做?這都是我們在實際應用中經常會遇到的問題,在VB中解決這個問題非常簡單,可以通過Path屬性的改變引發Change事件來實現。例如:
Sub Dir1-Change()
File1.Path=Dir1.Path
End Sub
---- 該事件過程使窗體上的目錄列表框Dir1和文件列表框File1產生同步。因為目錄列表框Path屬性的改變將產生Change事件,所以在Dir1-Change事件過程中,把Dir1.Path賦給File1.Path,就可以產生同步效果。類似地,增加下面的事件過程,就可以使三種列表框同步操作:
Sub Drive1-Change()
Dir1.Path=Drive1.Drive
End Sub
---- 該過程使驅動器列表框和目錄列表框同步,前面的過程使目錄列表框和文件列表框同步,從而使三種列表框同步,問題即可解決。
⑦ 怎樣編寫vb源代碼
搞個vb
打開
建立工程
代碼窗口按vb的語法寫