コード:
#N88BASIC
Type TIMECAPS
wPeriodMin As Long
wPeriodMax As Long
End Type
Const TIME_PERIODIC = 1
Declare Function timeGetDevCaps Lib "winmm.dll" (lpTimeCaps As *TIMECAPS, uSize As Long) As Long
Declare Function timeSetEvent Lib "winmm" (uDelay As DWord, uResolution As DWord, lpFunction As DWord, dwUser As *DWord, uFlags As DWord) As DWord
Declare Function timeBeginPeriod Lib "winmm" (uPeriod As DWord) As DWord
Declare Function timeEndPeriod Lib "winmm" (uPeriod As DWord) As DWord
Declare Function timeKillEvent Lib "winmm" (uTimerID As DWord) As DWord
Dim tc As TIMECAPS
Dim timerID As DWord
Dim res As Long
Dim count As DWord
Dim s As String
count = 0
timeGetDevCaps(VarPtr(tc), SizeOf(TIMECAPS))
Print "タイマー分解能"
Print "最小値=";tc.wPeriodMin
Print "最大値=";tc.wPeriodMax
timeBeginPeriod(tc.wPeriodMin)
res = 300'タイマ間隔
timerID = timeSetEvent(res, res, AddressOf(TimerCallback), 0, TIME_PERIODIC)
Sub TimerCallback(id As DWORD, msg As DWORD, usr As DWORD, dw1 As DWORD, dw2 As DWORD)
count = count + 1
Print count ; "回タイマー呼ばれました"
If count = 10 Then
timeKillEvent(timerID)
timeEndPeriod(tc.wPeriodMin)
Print "タイマーおわり"
End If
End Sub
Sleep(res*11)
Print "なにかキーを押してください"
Input s
End