1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
| unit bouge_sourie;
{une petite classe qui maniplule la souris
clique , db clique et deplacement
meme la molette y est.
prévu pour Delphi 4
fourni sous la license GPL , disponible sur www.fsf.org.
Je ne suis pas responsable de l'usage de ce fichier
pour tous commentaires
misc@caramail.com
}
interface
uses Graphics,Windows{,Divers},Controls,Forms,Classes;
type
TEtatBoutons = array [1..4] of boolean;
TBoutonSouris = (BsMilieu,BsDroit,BsGauche);
TListeBoutonSouris = set of TBoutonSouris;
TBougeSouris = class
private
function PixelToMickey(Point_en_pix:TPoint):TPoint;
function DonnePos : Tpoint;
procedure SetPos(P : Tpoint);
public
property Position: TPoint read DonnePos write SetPos;
class Function GetEtatBoutons:TEtatBoutons ;
procedure Drag(XDep,YDep,XArr,YArr : integer ;Bouton : TBoutonSouris);
procedure TournerMolette(Nb_crans : integer);
procedure AppuieBouton(Bouton : TBoutonSouris);
procedure RelacheBouton(Bouton : TBoutonSouris);
procedure DoubleClique;
procedure Clique(Bouton : TBoutonSouris);
procedure Place(P :TPoint);overload;
procedure Place(x,y:integer);overload;
procedure Deplace(Dx,Dy : integer);
constructor Create;
published
end;
implementation
{ TBougeSouris }
procedure TBougeSouris.AppuieBouton(Bouton: TBoutonSouris);
begin
case Bouton of
BsGauche : Mouse_Event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
BsDroit : Mouse_Event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
BsMilieu : Mouse_Event(MOUSEEVENTF_MIDDLEDOWN,0,0,0,0);
else
end;
end;
procedure TBougeSouris.Clique(Bouton: TBoutonSouris);
begin
case Bouton of
BsGauche : begin
Mouse_Event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Mouse_Event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
BsMilieu : begin
Mouse_Event(MOUSEEVENTF_MIDDLEDOWN,0,0,0,0);
Mouse_Event(MOUSEEVENTF_MIDDLEUP,0,0,0,0);
end;
BsDroit : begin
Mouse_Event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
Mouse_Event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
end;
else begin
Mouse_Event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Mouse_Event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
end;
end;
constructor TBougeSouris.Create;
begin
//nothing ?
end;
procedure TBougeSouris.Deplace(Dx, Dy: integer);
begin
Place(Point(Mouse.CursorPos.x + Dx,Mouse.CursorPos.y + dy));
end;
function TBougeSouris.DonnePos: Tpoint;
begin
GetCursorPos(Result);
end;
procedure TBougeSouris.DoubleClique;
begin
Clique(BsGauche);//ben oui , pourquoi se compliquer
Clique(BsGauche);//la vie quand les ingenieurs s'en occupe pour nous
end;
procedure TBougeSouris.Drag(XDep, YDep, XArr, YArr: integer;
Bouton: TBoutonSouris);
begin
Place(Point(Xdep,YDep));
AppuieBouton(Bouton);
Place(Point(XArr,YArr));
RelacheBouton(Bouton);
end;
function TBougeSouris.PixelToMickey(Point_en_pix: TPoint): TPoint;
begin
result.x := Round(Point_en_pix.x * (65535 / Screen.Width));
result.y := Round(Point_en_pix.y * (65535 / Screen.Height));
end;
procedure TBougeSouris.Place(P : TPoint);
begin
P := PixelToMickey(P);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE,P.x,P.y,0,0);
end;
procedure TBougeSouris.Place(x,y:integer);
var p:TPoint;
begin
p.X:=x;p.Y :=y;
Place(p);
end;
procedure TBougeSouris.RelacheBouton(Bouton: TBoutonSouris);
begin
case Bouton of
BsGauche : Mouse_Event(MOUSEEVENTF_LEFTUP,0,0,0,0);
BsDroit : Mouse_Event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
BsMilieu : Mouse_Event(MOUSEEVENTF_MIDDLEUP,0,0,0,0);
else
end;
end;
procedure TBougeSouris.SetPos(P: Tpoint);
begin
P := PixelToMickey(P);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE,P.x,P.y,0,0);
end;
procedure TBougeSouris.TournerMolette(Nb_crans: integer);
begin
Mouse_Event(MOUSEEVENTF_WHEEL,0,0,Nb_Crans * WHEEL_DELTA,0);
end;
class Function TBougeSouris.GetEtatBoutons:TEtatBoutons ;
var i:integer;
begin
for i := 1 To 4 do
result[i] := (GetAsyncKeyState(i)<>0);
end;
end. |
Partager