Surveiller la souris sur votre Windows
Projet gus05 de développement Java :: Développements :: Quelque-unes de mes entités :: Contrôle de l'OS :: La souris
Page 1 sur 1
Surveiller la souris sur votre Windows
Voici une entité qui vous permettra de surveiller les déplacements et les clics de votre souris sous Windows. Cette entité fait appel à l'API jna (Java Native Access)
gus.mouse.tracker.onscreen2
gus.mouse.tracker.onscreen2
- Code:
package gus05.entity.gus.mouse.tracker.onscreen2;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import com.sun.jna.Platform;
import com.sun.jna.Structure;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinUser;
import com.sun.jna.platform.win32.BaseTSD.ULONG_PTR;
import com.sun.jna.platform.win32.WinDef.HMODULE;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinDef.LRESULT;
import com.sun.jna.platform.win32.WinDef.WPARAM;
import com.sun.jna.platform.win32.WinUser.HHOOK;
import com.sun.jna.platform.win32.WinUser.HOOKPROC;
import com.sun.jna.platform.win32.WinUser.MSG;
import com.sun.jna.platform.win32.WinUser.POINT;
import gus05.framework.core.Entity;
import gus05.framework.core.Outside;
import gus05.framework.features.Provide;
import gus05.framework.tools.DefaultSupport;
public class TrackerOnScreen2 extends DefaultSupport implements Entity, Provide, Runnable {
public String getName() {return "gus.mouse.tracker.onscreen2";}
public String getCreationDate() {return "2010.09.27";}
public static final int WM_LMOVED = 512;
public static final int WM_LBUTTONDOWN = 513;
public static final int WM_LBUTTONUP = 514;
public static final int WM_RBUTTONDOWN = 516;
public static final int WM_RBUTTONUP = 517;
public static final int WM_MBUTTONDOWN = 519;
public static final int WM_MBUTTONUP = 520;
private HHOOK hhk;
private Point point;
public TrackerOnScreen2() throws Exception
{
if(!Platform.isWindows()) return;
new Thread(this,getName()).start();
Outside.service(this,"app.supportexit").addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {User32.INSTANCE.UnhookWindowsHookEx(hhk);}
});
}
public Object provide() throws Exception
{return point;}
public void run()
{
LowLevelMouseProcImpl mouseProc = new LowLevelMouseProcImpl();
HMODULE hmodule = Kernel32.INSTANCE.GetModuleHandle(null);
hhk = User32.INSTANCE.SetWindowsHookEx(WinUser.WH_MOUSE_LL,mouseProc,hmodule,0);
MSG msg = new MSG();
while((User32.INSTANCE.GetMessage(msg,null,0,0))!=0)
{
User32.INSTANCE.TranslateMessage(msg);
User32.INSTANCE.DispatchMessage(msg);
}
}
private interface LowLevelMouseProc extends HOOKPROC
{
LRESULT callback(int nCode, WPARAM wParam, MOUSEHOOKSTRUCT lParam);
}
private class LowLevelMouseProcImpl implements LowLevelMouseProc
{
public LRESULT callback(int nCode, WPARAM wParam, MOUSEHOOKSTRUCT info)
{
if(nCode>=0)
{
switch(wParam.intValue())
{
case WM_LMOVED:setPoint(info);mouseMoved();break;
case WM_LBUTTONDOWN:setPoint(info);leftButtonPressed();break;
case WM_LBUTTONUP:setPoint(info);leftButtonReleased();break;
case WM_RBUTTONDOWN:setPoint(info);rightButtonPressed();break;
case WM_RBUTTONUP:setPoint(info);rightButtonReleased();break;
case WM_MBUTTONDOWN:setPoint(info);middleButtonPressed();break;
case WM_MBUTTONUP:setPoint(info);middleButtonReleased();break;
default:break;
}
}
return User32.INSTANCE.CallNextHookEx(hhk, nCode, wParam, info.getPointer());
}
}
public static class MOUSEHOOKSTRUCT extends Structure
{
public static class ByReference extends MOUSEHOOKSTRUCT implements Structure.ByReference {};
public POINT pt;
public HWND hwnd;
public int wHitTestCode;
public ULONG_PTR dwExtraInfo;
}
private void mouseMoved() {send(this,"mouseMoved()");}
private void leftButtonPressed() {send(this,"leftButtonPressed()");}
private void rightButtonPressed() {send(this,"rightButtonPressed()");}
private void middleButtonPressed() {send(this,"middleButtonPressed()");}
private void leftButtonReleased() {send(this,"leftButtonReleased");}
private void rightButtonReleased() {send(this,"rightButtonReleased()");}
private void middleButtonReleased() {send(this,"middleButtonReleased()");}
private void setPoint(MOUSEHOOKSTRUCT info)
{point = new Point(info.pt.x,info.pt.y);}
}
Projet gus05 de développement Java :: Développements :: Quelque-unes de mes entités :: Contrôle de l'OS :: La souris
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Mar 16 Sep - 12:01 par Gus
» Présentation du jeu Vindinium
Jeu 20 Fév - 15:32 par Gus
» Rechercher la cible la plus proche avec le "Breadth First Search"
Jeu 20 Fév - 13:06 par Gus
» Impression d'écran avec sélection de zone
Jeu 20 Fév - 12:12 par Gus
» Envoyer un mail par un compte Gmail
Jeu 25 Avr - 14:04 par Gus
» Streaming : comment télécharger les vidéos
Lun 4 Fév - 19:59 par Gus
» Synology : installer ipkg
Mar 22 Jan - 21:22 par Gus
» Trouver le type de lecteur avec JNA
Mer 9 Jan - 23:11 par Gus
» Adresse ip publique et adresse ip privée, Internet box et UPnP
Mer 9 Jan - 21:02 par Gus
» Accéder au numéro de série du lecteur par un script vb
Mer 9 Jan - 19:31 par Gus