Form1代码
Private Sub Command2_Click()
'为addnumber过程创建线程2
Call CreateNewThread(AddressOf addnumbera)
End Sub
Private Sub Command1_Click()
'为addnumber过程创建线程1
Call CreateNewThread(AddressOf addnumber)
End Sub
Private Sub Command3_Click()
Call Command1_Click
Call Command2_Click
End Sub
模块代码
Private Declare Function CreateThread Lib “kernel32” (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Private Declare Function TerminateThread Lib “kernel32” (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Private Declare Function SetThreadPriority Lib “kernel32” (ByVal hThread As Long, ByVal nPriority As Long) As Long
Private Declare Function GetThreadPriority Lib “kernel32” (ByVal hThread As Long) As Long
Private Declare Function ResumeThread Lib “kernel32” (ByVal hThread As Long) As Long
Private Declare Function SuspendThread Lib “kernel32” (ByVal hThread As Long) As Long
Private Declare Function GetCurrentThread Lib “kernel32” () As Long
Private Declare Function GetCurrentThreadId Lib “kernel32” () As Long
Private Declare Function Beep Lib “kernel32” (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Private Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
Private Const MAXLONG = &H7FFFFFFF
Private Const THREAD_BASE_PRIORITY_IDLE = -15
Private Const THREAD_BASE_PRIORITY_LOWRT = 15
Private Const THREAD_BASE_PRIORITY_MAX = 2
Private Const THREAD_BASE_PRIORITY_MIN = -2
Private Const THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX
Private Const THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN
Private Const THREAD_PRIORITY_ABOVE_NORMAL = (THREAD_PRIORITY_HIGHEST - 1)
Private Const THREAD_PRIORITY_BELOW_NORMAL = (THREAD_PRIORITY_LOWEST + 1)
Private Const THREAD_PRIORITY_ERROR_RETURN = (MAXLONG)
Private Const THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE
Private Const THREAD_PRIORITY_NORMAL = 0
Private Const THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT
Private Const CREATE_ALWAYS = 2
Private Const CREATE_NEW = 1
Private Const CREATE_NEW_CONSOLE = &H10
Private Const CREATE_NEW_PROCESS_GROUP = &H200
Private Const CREATE_NO_WINDOW = &H8000000
Private Const CREATE_PROCESS_DEBUG_EVENT = 3
Private Const CREATE_SUSPENDED = &H4
Private Const CREATE_THREAD_DEBUG_EVENT = 2
Public Enum ThreadPriority
tpLowest = THREAD_PRIORITY_LOWEST
tpBelowNormal = THREAD_PRIORITY_BELOW_NORMAL
tpNormal = THREAD_PRIORITY_NORMAL
tpAboveNormal = THREAD_PRIORITY_ABOVE_NORMAL
tpHighest = THREAD_PRIORITY_HIGHEST
End Enum
Private mThreadHandle As Long '示例
Function addnumber() As Long
Dim s As String
Dim i, j As Integer
j = 蜂鸣简谱播放器.Text3.Text
s = 蜂鸣简谱播放器.Text1.Text
For i = 1 To Len(s)
Select Case Mid(s, i, 1)
Case 0
Beep 0, 200
Sleep j
Case 1
Beep 489, 200
Sleep j
Case 2
Beep 598, 200
Sleep j
Case 3
Beep 684, 200
Sleep j
Case 4
Beep 780, 200
Sleep j
Case 5
Beep 880, 200
Sleep j
Case 6
Beep 910, 200
Sleep j
Case 7
Beep 1060, 200
Sleep j
End Select
Next
End Function '创建线程
Function addnumbera() As Long
Dim s As String
Dim i, j As Integer
j = 蜂鸣简谱播放器.Text3.Text
s = 蜂鸣简谱播放器.Text2.Text
For i = 1 To Len(s)
Select Case Mid(s, i, 1)
Case 0
Beep 0, 200
Sleep j
Case 1
Beep 489, 200
Sleep j
Case 2
Beep 598, 200
Sleep j
Case 3
Beep 684, 200
Sleep j
Case 4
Beep 780, 200
Sleep j
Case 5
Beep 880, 200
Sleep j
Case 6
Beep 910, 200
Sleep j
Case 7
Beep 1060, 200
Sleep j
End Select
Next
End Function '创建线程
Public Function CreateNewThread(ByVal cFunction As Long) As Long
Dim mhandle As Long
Dim lpThreadID As Long
mhandle = CreateThread(ByVal 0&, ByVal 0&, cFunction, ByVal 0&, 0, lpThreadID)
If mhandle <> 0 Then mThreadHandle = mhandle
End Function '终止线程
Public Function TerminateTh() As Long
SuspendThread mThreadHandle
TerminateThread mThreadHandle, ByVal 0&
TerminateThread lpThreadID, ByVal 0&
End Function