VB 키보드 마우스 비동작 호출기 시도

2289 단어 VB호출 프로그램
내가 실현하고자 하는 기능은 키보드가 입력이 없고 마우스가 움직이지 않거나 클릭 동작이 없을 때 프로그램을 호출하는 것이다.먼저 떠오르는 것은 갈고리 훅으로 키보드나 마우스를 가져오는 동작입니다. 동작이 없을 때 프로그램을 호출합니다.내가 시도한 결과는 훅이었다.
나중에 Windows의 화면 보호 프로그램은 키보드 마우스가 동작이 없을 때 화면 보호에 들어가는 것이라고 생각하여 방향을 바꾸어 프로그램을 이런 형식으로 만들려고 했다. 키보드 마우스가 동작이 없고 시스템이 화면 보호에 들어간 다음에 시스템이 화면 보호 프로그램을 실행하는지 검사하고 실행하면 프로그램을 호출한다.이런 방식은 화면 보호 프로그램을 중개로 하여 키보드 마우스 동작을 검사하는 작업을 화면 보호 프로그램에 맡기는 것이다.SystemParametersInfo를 사용하면 화면 보호 정보를 얻을 수 있습니다.참조 코드는 다음과 같습니다.

'API :
Private Declare Function SystemParametersInfo _
  Lib "user32" _
  Alias "SystemParametersInfoA" _
   (ByVal uiAction As Long, _
    ByVal uiParam As Long, _
    pvParam As Any, _
    ByVal fWInIni As Long) As Boolean
 
Private Const SPI_GETSCREENSAVEACTIVE As Long = &H10  ' 
Private Const SPI_GETSCREENSAVERRUNNING As Long = &H72 ' 

Private Sub Timer1_Timer()
  Dim bRunning As Boolean   ' , 
  SystemParametersInfo SPI_GETSCREENSAVERRUNNING, 0, bRunning, False ' API,bRunning 
  Debug.Print Time; " ="; bRunning ' : 
End Sub
 
' , , :
SystemParametersInfo SPI_GETSCREENSAVEACTIVE, 0, bActive, False 'bActive ( )

그런데 왜 제가 WIN7에서 디버깅을 하는지 모르겠어요. 시스템 파라미터 정보 SPI_GETSCREENSAVERRUNNING, 0, bRunning, False
의 bRunning 형식 오류입니다. 그만둘 수 있습니다.
마지막으로 최종적으로 실현된 방안은 GetLast InputInfo 함수를 사용하여 시스템의 여가 시간을 얻는 것이다. 참고 코드는 다음과 같다.

Option Explicit
Private Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Type LASTINPUTINFO
  cbSize As Long
  dwTime As Long
End Type
 
Private Sub Form_Load()
   Timer1.Interval = 1000  
End Sub
 
Private Sub Timer1_Timer()
  Dim lii As LASTINPUTINFO
  lii.cbSize = Len(lii)
  If GetLastInputInfo(lii) Then
    If (GetTickCount - lii.dwTime) / 60000 >= 15 Then      
      Call MsgBox(" 15 , 3 , ", vbYesNo + vbExclamation + vbDefaultButton2, " ")
    End If
  End If
End Sub
위에서 말한 것이 바로 본문의 전체 내용입니다. 여러분이 좋아하시기 바랍니다.

좋은 웹페이지 즐겨찾기