64,282
社区成员
发帖
与我相关
我的任务
分享
#if defined(WIN32)
#include "windows.h"
#include "time.h"
#include "stdio.h"
#elif defined(SOLARIS)
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/time.h>
#elif defined(LINUX)
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/time.h>
#endif
#pragma data_seg("data")
HINSTANCE g_hinstDLL = NULL; // 模块实例句柄
HHOOK g_hKeyboardHook = NULL; // 键盘钩子句柄
HHOOK g_hMouseHook = NULL; // 鼠标钩子句柄
BOOL g_KeyboardState = FALSE; // 键盘钩子的状态
BOOL g_MouseState = FALSE; // 鼠标钩子的状态
int count = 0;
int nCode = 0;//
#pragma data_seg()
#pragma comment(linker, "/SECTION:data,RWS")
//键盘钩子
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode == HC_ACTION)
{
g_KeyboardState = TRUE;
}
// 传给系统中的下一个钩子
return CallNextHookEx(g_hKeyboardHook,nCode,wParam,lParam);
}
//鼠标钩子
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode == HC_ACTION)
{
g_MouseState = TRUE;
}
// 传给系统中的下一个钩子
return CallNextHookEx(g_hMouseHook,nCode,wParam,lParam);
}
//安装钩子
BOOL WINAPI StartHook(HWND h)
{
count++;
//如果已经安装键盘钩子则返回false
if(g_hKeyboardHook != NULL)
{
return FALSE;
}
//如果已经安装鼠标钩子则返回false
if(g_hMouseHook != NULL)
{
return FALSE;
}
//安装键盘钩子
g_hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hinstDLL,0);
if(g_hKeyboardHook == NULL)
{
return FALSE;
}
//安装鼠标钩子
g_hMouseHook = SetWindowsHookEx(WH_MOUSE,MouseProc,g_hinstDLL,0);
if(g_hMouseHook == NULL)
{
return FALSE;
}
printf("StartHook success\n");
return TRUE;
}
//卸载钩子
BOOL WINAPI StopHook()
{
// 卸载键盘钩子
if(UnhookWindowsHookEx(g_hKeyboardHook) == 0)
{
return FALSE;
}
g_hKeyboardHook = NULL;
// 鼠标键盘钩子
if(UnhookWindowsHookEx(g_hMouseHook) == 0)
{
return FALSE;
}
g_hMouseHook = NULL;
return TRUE;
}
//返回键盘钩子状态
BOOL WINAPI KeyboardState()
{
BOOL ret = g_KeyboardState;
if(g_KeyboardState == TRUE)
{
g_KeyboardState = FALSE;
}
return ret;
}
//返回鼠标钩子状态
BOOL WINAPI MouseState()
{
BOOL ret = g_MouseState;
int nCode = 0;//
if(g_MouseState == TRUE)
{
g_MouseState = FALSE;
}
return ret;
}
#include "Autolock.h"
#include "optel_com_cn_global_GetKeyAndMouseInfoAdapter.h"
extern HINSTANCE g_hinstDLL;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hinstDLL = (HINSTANCE)hModule;
StartHook(0);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
StopHook();
break;
}
return TRUE;
}
/*
* Class: optel_com_cn_global_GetKeyAndMouseInfoAdapter
* Method: isKeyAndMouseMoved
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_optel_com_cn_global_GetKeyAndMouseInfoAdapter_isKeyAndMouseMoved
(JNIEnv * env, jobject)
{
int ret = KeyboardState() | MouseState();
if(ret == 0)
return 0;
return 0xff; //java的false是0,true是全f.
}
JNIEXPORT int isKeyAndMouseMoved()
{
return (int)(KeyboardState() | MouseState());
}
JNIEXPORT void StartHook1()
{
StartHook(0);
}
JNIEXPORT void StopHook1()
{
// return _SendIsActive();
StopHook();
}
/*
* Class: optel_com_cn_global_GetKeyAndMouseInfoAdapter
* Method: getQuietTime
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_optel_com_cn_global_GetKeyAndMouseInfoAdapter_getQuietTime
(JNIEnv *, jobject)
{
return 0;
}
// AutolockTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
__declspec(dllimport) int isKeyAndMouseMoved();
int main(int argc, char* argv[])
{
int prev = -1;
int count = 0;
printf("Hello World!\n");
while(1)
{
int status = isKeyAndMouseMoved();
if(status!=prev || count >= 100)//如果状态改变了或者有100次没有改变都会打印状态的
{
fprintf(stderr, "%d\n", status);
fflush(stderr);
count = 0;
}
Sleep(10);
prev = status;
count++;
}
return 0;
}
#if defined(WIN32)
#include "windows.h"
#include "time.h"
#include "stdio.h"
#elif defined(SOLARIS)
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/time.h>
#elif defined(LINUX)
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/time.h>
#endif
#pragma data_seg("data")
HINSTANCE g_hinstDLL = NULL; // 模块实例句柄
HHOOK g_hKeyboardHook = NULL; // 键盘钩子句柄
HHOOK g_hMouseHook = NULL; // 鼠标钩子句柄
BOOL g_KeyboardState = FALSE; // 键盘钩子的状态
BOOL g_MouseState = FALSE; // 鼠标钩子的状态
int count = 0;
int nCode = 0;//
#pragma data_seg()
#pragma comment(linker, "/SECTION:data,RWS")
//键盘钩子
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode == HC_ACTION)
{
g_KeyboardState = TRUE;
}
// 传给系统中的下一个钩子
return CallNextHookEx(g_hKeyboardHook,nCode,wParam,lParam);
}
//鼠标钩子
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode == HC_ACTION)
{
g_MouseState = TRUE;
}
// 传给系统中的下一个钩子
return CallNextHookEx(g_hMouseHook,nCode,wParam,lParam);
}
//安装钩子
BOOL WINAPI StartHook(HWND h)
{
count++;
//如果已经安装键盘钩子则返回false
if(g_hKeyboardHook != NULL)
{
return FALSE;
}
//如果已经安装鼠标钩子则返回false
if(g_hMouseHook != NULL)
{
return FALSE;
}
//安装键盘钩子
g_hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hinstDLL,0);
if(g_hKeyboardHook == NULL)
{
return FALSE;
}
//安装鼠标钩子
g_hMouseHook = SetWindowsHookEx(WH_MOUSE,MouseProc,g_hinstDLL,0);
if(g_hMouseHook == NULL)
{
return FALSE;
}
printf("StartHook success\n");
return TRUE;
}
//卸载钩子
BOOL WINAPI StopHook()
{
// 卸载键盘钩子
if(UnhookWindowsHookEx(g_hKeyboardHook) == 0)
{
return FALSE;
}
g_hKeyboardHook = NULL;
// 鼠标键盘钩子
if(UnhookWindowsHookEx(g_hMouseHook) == 0)
{
return FALSE;
}
g_hMouseHook = NULL;
return TRUE;
}
//返回键盘钩子状态
BOOL WINAPI KeyboardState()
{
BOOL ret = g_KeyboardState;
if(g_KeyboardState == TRUE)
{
g_KeyboardState = FALSE;
}
return ret;
}
//返回鼠标钩子状态
BOOL WINAPI MouseState()
{
BOOL ret = g_MouseState;
int nCode = 0;//
if(g_MouseState == TRUE)
{
g_MouseState = FALSE;
}
return ret;
}
#include "Autolock.h"
#include "optel_com_cn_global_GetKeyAndMouseInfoAdapter.h"
extern HINSTANCE g_hinstDLL;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hinstDLL = (HINSTANCE)hModule;
StartHook(0);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
StopHook();
break;
}
return TRUE;
}
/*
* Class: optel_com_cn_global_GetKeyAndMouseInfoAdapter
* Method: isKeyAndMouseMoved
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_optel_com_cn_global_GetKeyAndMouseInfoAdapter_isKeyAndMouseMoved
(JNIEnv * env, jobject)
{
int ret = KeyboardState() | MouseState();
if(ret == 0)
return 0;
return 0xff; //java的false是0,true是全f.
}
JNIEXPORT int isKeyAndMouseMoved()
{
return (int)(KeyboardState() | MouseState());
}
JNIEXPORT void StartHook1()
{
StartHook(0);
}
JNIEXPORT void StopHook1()
{
// return _SendIsActive();
StopHook();
}
/*
* Class: optel_com_cn_global_GetKeyAndMouseInfoAdapter
* Method: getQuietTime
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_optel_com_cn_global_GetKeyAndMouseInfoAdapter_getQuietTime
(JNIEnv *, jobject)
{
return 0;
}
// AutolockTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
__declspec(dllimport) int isKeyAndMouseMoved();
int main(int argc, char* argv[])
{
int prev = -1;
int count = 0;
printf("Hello World!\n");
while(1)
{
int status = isKeyAndMouseMoved();
if(status!=prev || count >= 100)//状态改变或者100次没有改变都会打印状态
{
fprintf(stderr, "%d\n", status);
fflush(stderr);
count = 0;
}
Sleep(10);
prev = status;
count++;
}
return 0;
}