vb6.0蜂鸣简谱播放器多线程代码

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

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EYYLTV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值