hook java_Java 实现 Hook 对鼠标键盘监听 - 沐早'S NOTEBOOK - CSDN博客
Java 實現全局(全操作系統)的鼠標和鍵盤監控,使用的是SWT Win32 Extension 項目,在以前若使用Java恐怕是很難實現的!
SWT Win32 Extension 讓Java擁有了許多對操作系統底層操作的功能!
以下兩個例子是:
(一)鼠標Hook
importorg.sf.feeling.swt.win32.extension.hook.Hook;
importorg.sf.feeling.swt.win32.extension.hook.data.HookData;
importorg.sf.feeling.swt.win32.extension.hook.data.MouseHookData;
importorg.sf.feeling.swt.win32.extension.hook.listener.HookEventListener;
publicclassHotMouse?{
publicstaticvoidmain(String[]?args)?{
Hook.MOUSE.addListener(newHookEventListener()?{
publicvoidacceptHookData(HookData?hookData)?{
if(hookData?!=null)?{
//System.out.println("Mouse?Point?X?=?"?+?((MouseHookData)hookData).getPointX());
//System.err.println("Mouse?Point?Y?="?+?((MouseHookData)hookData).getPointY());
System.err.println(((MouseHookData)hookData).getPointX()+","+?((MouseHookData)hookData).getPointY());
}
if(hookData.getWParam()?==513)?{?????????System.out.println("left?button?pressed");//?left?button?pressed
}?elseif(hookData.getWParam()?==514)?{??System.out.println("left?button?released");//?left?button?released
}?elseif(hookData.getWParam()?==516)?{??System.out.println("right?button?pressed");//?right?button?pressed
}?elseif(hookData.getWParam()?==517)?{??System.out.println("right?button");//?right?button
}?elseif(hookData.getWParam()?==519)?{??System.out.println("middle?button?519");//?middle?button
}?elseif(hookData.getWParam()?==520)?{??System.out.println("middle?button?520");//?middle?button
}
}
});
Hook.MOUSE.install();
}
}
import org.sf.feeling.swt.win32.extension.hook.Hook;
import org.sf.feeling.swt.win32.extension.hook.data.HookData;
import org.sf.feeling.swt.win32.extension.hook.data.MouseHookData;
import org.sf.feeling.swt.win32.extension.hook.listener.HookEventListener;
public class HotMouse {
public static void main(String[] args) {
Hook.MOUSE.addListener(new HookEventListener() {
public void acceptHookData(HookData hookData) {
if (hookData != null) {
//System.out.println("Mouse Point X = " + ((MouseHookData)hookData).getPointX());
//System.err.println("Mouse Point Y =" + ((MouseHookData)hookData).getPointY());
System.err.println(((MouseHookData)hookData).getPointX()+"," + ((MouseHookData)hookData).getPointY());
}
if (hookData.getWParam() == 513) { System.out.println("left button pressed");// left button pressed
} else if (hookData.getWParam() == 514) { System.out.println("left button released");// left button released
} else if (hookData.getWParam() == 516) { System.out.println("right button pressed");// right button pressed
} else if (hookData.getWParam() == 517) { System.out.println("right button");// right button
} else if (hookData.getWParam() == 519) { System.out.println("middle button 519");// middle button
} else if (hookData.getWParam() == 520) { System.out.println("middle button 520");// middle button
}
}
});
Hook.MOUSE.install();
}
}
(二)鍵盤Hook
importorg.sf.feeling.swt.win32.extension.hook.Hook;
importorg.sf.feeling.swt.win32.extension.hook.data.HookData;
importorg.sf.feeling.swt.win32.extension.hook.data.KeyboardHookData;
importorg.sf.feeling.swt.win32.extension.hook.listener.HookEventListener;
publicclassHotKey?{
publicstaticvoidmain(finalString[]?args)?{
Hook.KEYBOARD.addListener(newHookEventListener(){//@Override
publicvoidacceptHookData(HookData?arg0)?{
KeyboardHookData?KHD?=?((KeyboardHookData)arg0);
System.out.println(KHD.getWParam()+"?-?"+KHD.getTransitionState());//Print?code
if(?KHD.getScanCode()?==29&&?KHD.getTransitionState()){//按下Ctrl執行動作
System.out.println("Hotting");
}elseif(?KHD.getScanCode()?==1){//按下[ESC]結束
System.exit(0);
}
}});
Hook.KEYBOARD.install();??//註冊事件
}
}
import org.sf.feeling.swt.win32.extension.hook.Hook;
import org.sf.feeling.swt.win32.extension.hook.data.HookData;
import org.sf.feeling.swt.win32.extension.hook.data.KeyboardHookData;
import org.sf.feeling.swt.win32.extension.hook.listener.HookEventListener;
public class HotKey {
public static void main(final String[] args) {
Hook.KEYBOARD.addListener(new HookEventListener(){//@Override
public void acceptHookData(HookData arg0) {
KeyboardHookData KHD = ((KeyboardHookData)arg0);
System.out.println(KHD.getWParam()+" - "+KHD.getTransitionState()); //Print code
if( KHD.getScanCode() == 29 && KHD.getTransitionState()){ //按下Ctrl執行動作
System.out.println("Hotting");
}else if( KHD.getScanCode() == 1 ){ //按下[ESC]結束
System.exit(0);
}
}});
Hook.KEYBOARD.install(); //註冊事件
}
}
總結
以上是生活随笔為你收集整理的hook java_Java 实现 Hook 对鼠标键盘监听 - 沐早'S NOTEBOOK - CSDN博客的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在python子程序中、使用关键字_Py
- 下一篇: java自动化测试报告_Java自动化测