vb2008使用timesetevent获得精确时间的问题,求高人指点
vb.net吧
全部回复
仅看楼主
level 1
zhenkong27 楼主
Module1代码:
Option Strict Off
Option Explicit On
Module Module1
Public hMMTimer As Integer
Public VBTimer, MMTimer As Integer
Public Delegate Sub TimerProcDelegate(ByVal uID As Integer, ByVal uMsg As Integer, ByVal dwUser As Integer, ByVal dw1 As Long, ByVal dw2 As Integer) ' As Integer
Public Sub TimerProc(ByVal uID As Integer, ByVal uMsg As Integer, ByVal dwUser As Integer, ByVal dw1 As Long, ByVal dw2 As Integer) ' As Integer
'Increment MMTimer
MMTimer += 2
'Form1.Text2.Text = MMTimer
End Sub
Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Integer, ByVal uResolution As Integer, ByVal lpFunction As TimerProcDelegate, ByVal dwUser As Integer, ByVal uFlags As Integer) As Integer
Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Integer) As Integer End Module
FORM1代码
Option Strict Off
Option Explicit On
Friend Class Form1
Inherits System.Windows.Forms.Form
Public shijianq As EventHandler Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
Timer1.Interval = 1000
Timer1.Enabled = True
'UPGRADE_WARNING: 为 AddressOf TimerProc ,添加委托 单击以获得更多信息:“ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="E9E157F7-EF0C-4016-87B7-7D7FBBC6EE08"”
hMMTimer = timeSetEvent(3000, 1, AddressOf TimerProc, 0, 1)
End Sub Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
timeKillEvent(hMMTimer)
Timer1.Enabled = False
VBTimer = 0
MMTimer = 0
End Sub Private Sub Command3_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command3.Click
End Sub Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
VBTimer = 0
MMTimer = 0
Text2.Text = MMTimer
End Sub Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
VBTimer = VBTimer + 1
Text1.Text = CStr(VBTimer)
Text2.Text = MMTimer
TextBox1.Text = hMMTimer
End Sub
End Class
问题:执行中可以显示timesetevent回调函数成功,但从数据上看只调用1次回调函数,然后报错内存0x00000000不能为只读,点取消或确定调试均中止;若运行编译后可执行.EXE,仅执行到设定的时间uDelay,本程序为3000ms,然后自动关闭。本人需要高精度定时,求高人指点,不胜感激。
2012年11月07日 08点11分 1
1