Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than user32, prefix the name with the module name and a period.
<DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function SetTimer _
(ByVal hWnd As IntPtr, ByVal nIDEvent As IntPtr, ByVal uElapse As UInteger, ByVal lpTimerFunc As IntPtr) As IntPtr
End Function
// or alternatively
<DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function SetTimer _
(ByVal hWnd As IntPtr, ByVal nIDEvent As IntPtr, ByVal uElapse As UInteger, ByVal lpTimerFunc As TimerProc) As IntPtr
End Function
Public Delegate Sub TimerProc(ByVal hWnd As IntPtr, ByVal uMsg As UInteger, ByVal nIDEvent As IntPtr, ByVal dwTime As UInteger)
User-Defined Types:
None.
Notes:
None.
Tips & Tricks:
Use the version that takes an IntPtr as last parameter and pass it IntPtr.Zero if you are going to handle the WM_TIMER message in your own override of WndProc.
Use the version that takes a delegate as last parameter if you don't explicitly handle the WM_TIMER message or if you don't override WndProc. In that case DefWndProc will invoke your callback when the time-out value elapses.
When using the version that takes a delegate make sure that the delegate is kept alive, i.e. there must be a managed reference to the delegate. Typically this means that after creating the delegate and before passing it to the SetTimer method you should asign it to some private field.
(The native method is actually prototyped to take an unsigned event ID, but because unsigned types are not CLS compliant, declaring it as signed makes it somewhat easier to work with.)
Best of luck.
Sample Code:
Please add some!
Alternative Managed API:
System.Windows.Forms.Timer
The SetTimer API
11/14/2014 4:12:10 AM - -217.115.65.17
An IntPtr is a pointer to a memory location (unmanaged) that adapts to the platform it is running on (64-bit, etc.) UNLIKE a standard int/Integer. You should always use this type for unmanaged calls that require it, even though an int will appear to work on your development machine.
1/13/2008 4:00:13 AM - Damon Carr-72.43.165.29
An IntPtr is a pointer to a memory location (unmanaged) that adapts to the platform it is running on (64-bit, etc.) UNLIKE a standard int/Integer. You should always use this type for unmanaged calls that require it, even though an int will appear to work on your development machine.
1/13/2008 4:00:13 AM - Damon Carr-72.43.165.29
A delegate for window procedure callbacks (handlers).
7/31/2009 12:04:10 PM - -92.224.233.194
A delegate for window procedure callbacks (handlers).
7/31/2009 12:04:10 PM - -92.224.233.194
The SetTimer API
11/14/2014 4:12:10 AM - -217.115.65.17
Please edit this page!
Do you have...
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).