win98就简单了Const SPI_SCREENSAVERRUNNING = 97Private Declare Function SystemParametersInfo Lib "User32" Alias _
    "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As _
    Any, ByVal fuWinIni As Long) As LongPrivate Sub Command1_Click()
    Dim pOld As Boolean
    Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)
End SubPrivate Sub Command2_Click()
    Dim pOld As Boolean
    Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, pOld, 0)
End Sub

解决方案 »

  1.   

    如何使键盘、Mouse失效(JournalPlayBack Hook) 来源:cww     我们常见一些导览系统或教学系统,会自动移动Mouse与Keyin字,而那个时候, 我们不管Keyin或动
    Mouse都没有效,直到完成了导览系统的某个动作後才让使用者可以移动Mouse与做Keyin的动作;想做到这个,
    要借重JournalPlayBack Hook    JournalPlayBack Hook,它和JournalRecord Hook合称Journal Hook,它们作用的范围是整个System,
    也就是挂上这个Hook後,影响的层面不单是这个Process,而是所有的Process,而这两Hook又不用写在Dll
    之中,所以很好用。    首先我们要知道由键盘和Mouse输入等的硬体讯息,会存到一个System Queue而後OS会到该System Queue
    看有没有讯息在其中,若有则撷取出来,看目前Active的Window是谁而将讯息Post给它。而挂上
    JournalRecord Hook时,当有讯息被撷取出来时,会先执行我们所设定的Hook Function(在vb中,一定要
    放在.BAS档之中)。这可以做什麽事呢?    例如们可以Check整个系统是否有按了键盘或有没有移动Mouse(一般来说,KeyUp,KeyDown, MouseMove等
    Event只有Form在Active 时才收得到,挂上JournalRecord hook後,执行Hook的thread便能收到所有这些
    讯息)。再如,它既然能收到Keyboard、Mouse的讯息,那便可以将收到的讯息记录起来(记录於Memory或Disk
    都可以),之後再依方才的顺序重新将讯息放送出来,可重新执行方才的动作(这不就是巨集的作法吗),或许
    它叫JournalRecord便是这个原因。再来便是播放记录讯息的问题了,如果一面播放,一面有其他讯息插队
    (如移动Mouse),那就不对了,所以JournalPlayBack这个Hook它会让Mouse、Keyboard都失效,当OS 要求读
    System Queue时,便会启动这个Hook,就在此时,我们可以把方才记录起来的讯息丢出一个出来,OS再要求
    读System Queue时,再丢下一个讯息,如此达重播的效果(所以才叫JournalPlayBack),正因它会让键盘、
    Mouse失效,拿它来做导览、教学系统的自动Move Mouse或文字显示是最适合的了。
        Mouse的自动导引系统制作方式,可叁考如何自动移动Mouse'以下在.Bas中 
    Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long) 
    Const WM_MOUSELAST = &H209 
    Const WM_MOUSEFIRST = &H200 
    Public Const WM_KEYLAST = &H108 
    Public Const WM_KEYFIRST = &H100 
    Public Const WH_JOURNALRECORD = 0 
    Public Const WH_JOURNALPLAYBACK = 1 Type EVENTMSG 
            message As Long 
            paramL As Long 
            paramH As Long 
            time As Long 
            hwnd As Long 
    End Type 
    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 
    Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _ 
       ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long 
    Public hNxtHook As Long   ' handle of Hook Procedure 
    Public msg As EVENTMSG Sub EnableHook() 
       hNxtHook = SetWindowsHookEx(WH_JOURNALPLAYBACK, AddressOf HookProc, 
     App.hInstance, 0) 
    End Sub 
    Sub FreeHook() 
        Dim ret As Long 
        ret = UnhookWindowsHookEx(hNxtHook) 
    End Sub 
    Function HookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    HookProc = CallNextHookEx(hNxtHook, code, wParam, lParam) 
    End Function '以下在Form中,需求:一个Command1, 一个text1 
    Private Sub Command1_Click() 
    Dim str5 As String, len5 As Long, i As Long Call EnableHook 
    str5 = "这是一个测试JournalPlayBackHook的程式" 
    len5 = Len(str5) 
    For i = 1 To len5 
        Text1.Text = Mid(str5, 1, i) 
        Text1.Refresh 
        Sleep (200) 
    Next 
    Call FreeHook 
    End Sub
      

  2.   

    在9X下使用LOCKINPUT这个函数。所有输入都无效。包括鼠标你可以使用定时器让它解锁在WIN2K下还是对三键起不了作用啊
      

  3.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=1474888