Warum dann nicht so:
Delphi-Quellcode:
Procedure TfrmIrgendWas.MouseTrap(Trap :Boolean);
var
ClipRect : TRect;
begin
IsTrapping := Trap;
if Trap then
begin
with Panel1 do
with ClientRect do
ClipRect := Rect(ClientToScreen(TopLeft),
ClientToScreen(BottomRight));
ClipCursor(@ClipRect);
end
else
ClipCursor(nil);
end;
Zum Einfangen:
MouseTrap(True);
Zum Freilassen:
MaouseTrap(False);
Um die Maus für andere Anwendungen benutzen zu können braucht es noch 2 Events & eine bool'sche Variable im Form:
Delphi-Quellcode:
type
TfrmIrgendWas = class(TForm)
...
procedure AppActivate(Sender: TObject);
procedure AppDeactivate(Sender: TObject);
private
IsTrapping :Boolean;
...
AppActivate:
MouseTrap(IsTrapping);
AppDeactivate:
ClipCursor(nil);
Die beiden Events musst du Application verpassen.
Ist nicht wirklich professionell (ich kam noch nie in die Verlegenheit die Maus einzufangen
), aber es dürfte funktionieren.