簡單回答:
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比惠農(nóng)網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式惠農(nóng)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋惠農(nóng)地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
1、當(dāng)前來說,編程與運行環(huán)境合適的情況下,VB點虐 與VB都有實現(xiàn)多線程的可能。
2、VB、VB點虐 的最基本的概念,是調(diào)用系統(tǒng)的接口進(jìn)行編程,只要系統(tǒng)提供“多線程”的功能調(diào)用,它們就能實現(xiàn)多線程。
3、VB注意于面向用戶,面向任務(wù),其高級的一些程序?qū)崿F(xiàn)需要直接調(diào)用win的API,VB實現(xiàn)多線程的例子也可以在網(wǎng)絡(luò)上搜索到。
一、關(guān)于VB、VB點虐 的相關(guān)知識:
1、編程指的是用人類能理解的語言來編寫指令集,并通過專用的編譯軟件或環(huán)境來轉(zhuǎn)化這些指令,使得這些指令能讓計算機識別,從而控制計算機做人類需要進(jìn)行的工作。
2、也就是說無論是VB.NET還是VB它們都只是“人類能理解的語言”,它們通過專用的編譯軟件或環(huán)境來轉(zhuǎn)化這些指令,進(jìn)而操作電腦。
3、進(jìn)一步特化到VB上去說。VB基于VB的運行庫,它的運行庫又基于win的API((Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù)),也就是說,VB的很多(多到90%以上)的功能是直接基于調(diào)用windows提供的一些基本接口函數(shù)。
4、VB點虐 有什么不同呢,它基于點虐 運行庫。什么 意思?這個意思就是,微軟發(fā)現(xiàn)win的API不夠用了,不好用了,就打算在windows上加裝點東西,讓它有更多的接口函數(shù)。但要注意的是,多數(shù)情況下,這些接口比win的API的效率要低一些。在win7及以后的版本的win中,已經(jīng)自含了點虐 運行庫。
5、順便說,為什么很多人會發(fā)現(xiàn)win7的運行速度看起來要比xp慢呢,個人認(rèn)為就是因為調(diào)用的是點虐 的接口來實現(xiàn)的,點虐 就是比API的慢。當(dāng)然了,點虐 的功能上要比xp原有的API的功能強。
6、VB與VB點虐 在語法上是非常近似的,只是因為Visual Studio的版本不同,后期的Visual Studio已不提供簡純的VB了,注意它們的不同主要是后臺核心調(diào)用的理念上的不同。
調(diào)用 2.exe 用 shell 方法就可以了.不用多說.
至于檢測 5個 2.exe 是否全都結(jié)束的方法,可以在 1.exe 中添加1個TIMER ,設(shè)定每隔1秒遍歷系統(tǒng)進(jìn)程表.]
找出系統(tǒng)進(jìn)程中 2.exe 的個數(shù),若為 0個 則顯示"處理完成"
遍歷進(jìn)程需要調(diào)用API:
Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const MAX_PATH As Integer = 260
Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Const TH32CS_SNAPheaplist = H1
Const TH32CS_SNAPPROCESS = H2
Const TH32CS_SNAPthread = H4
Const TH32CS_SNAPmodule = H8
Public Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule
'下面的"GetCount" 函數(shù)用于返回 2.exe 的個數(shù):
Public Function GetCount()
Dim i As Long, lPid As Long
Dim k As Long
Dim Proc As PROCESSENTRY32
Dim hSnapShot As Long
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPall, 0) '獲得進(jìn)程“快照”的句柄
Proc.dwSize = Len(Proc)
lPid = ProcessFirst(hSnapShot, Proc) '獲取第一個進(jìn)程的PROCESSENTRY32結(jié)構(gòu)信息數(shù)據(jù)
i = 0
k = 0
Do While lPid 0
If InStr(1, Proc.szExeFile, "2.exe", vbTextCompare) 0 Then
k = k + 1
End If
i = i + 1
lPid = ProcessNext(hSnapShot, Proc) '循環(huán)獲取下一個進(jìn)程的PROCESSENTRY32結(jié)構(gòu)信息數(shù)據(jù)
Loop
CloseHandle hSnapShot '關(guān)閉進(jìn)程“快照”句柄
IsDone = k
End Function
VB的多線程比較吃力。多個線程最后想出的辦法是用多個進(jìn)程也就是你說的exe代替多個線程。一個form就是一個進(jìn)程你搞幾個from其實就是多進(jìn)程也就是類似的多線程但是比較麻煩點而已,順便給個建議VB.NET可以輕松解決多線程。
Sub Main()
Dim thr As Thread
For Pi As Integer=0 To 4 //啟用5線程
MulParams =Pi vbTab sFile vbTab dFile vbTab 1 vbTab DelN vbTab cr vbTab cg vbTab cb vbTab IndexI
GlobalParamas(pi)=MulParams .Split(vbTab)
thr=New Thread(AddressOf MyMulThreadCaller)
thr.Start() //啟動多線程進(jìn)程
Application.DoEvents
Next
End Sub