Hi, thanks for your input. I need to programmatically run processes on a users desktop but I don't want the user to be able to do anything on their computer, kinda like a screen saver (or maybe a screen saver can be called by access... but I guess that would be another hurdle communication between access and the screen saver)
You know, how the user presses [CTRL]+[ALT]+[DEL], then terminates Access.
I've come across various VB API sample codes (like below). Then I created a form, placed a timer event, but it wouldn't work.
--------
MODULE
--------
Option Compare Database
Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Public Const WH_KEYBOARD = 2
Public Const VK_SHIFT = &H10
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public hHook As Long
Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'if idHook is less than zero, no further processing is required
If idHook < 0 Then
'call the next hook
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
Else
'check if SHIFT-S is pressed
If (GetKeyState(VK_SHIFT) And &HF0000000) And wParam = Asc("S"

Then
'show the result
MsgBox "Shift-S pressed ..."
End If
'call the next hook
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End If
End Function
---------------
CODE for Form1
---------------
Option Compare Database
Dim abc As Long
Private Sub Form_Open(Cancel As Integer)
abc = 1
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, 0, GetCurrentThreadId)
' hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
End Sub
Private Sub Form_Timer()
abc = abc + 1
If abc = 6 Then
DoCmd.Close acForm, Me.Name
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx hHook
End Sub