Das mit der Mausposition geht sehr gut, nur leider krieg ich es nicht hin das übers Netzwerk zu übertragen.
So hab ichs gemacht:
Server:
Delphi-Quellcode:
function GetPos(
Handle: HWND): TPoint;
var
WinInfo: TWindowInfo;
CurPos: TPoint;
begin
Result.X:= -1;
Result.Y:= -1;
FillChar(WinInfo, Sizeof(WinInfo), 0);
WinInfo.cbSize := Sizeof(WinInfo);
GetWindowInfo(
Handle, WinInfo);
GetCursorPos(CurPos);
//if windows.PtInRect(WinInfo.rcWindow, CurPos) then
if windows.PtInRect(WinInfo.rcClient, CurPos)
then
begin
Result.X:= CurPos.X- WinInfo.rcClient.Left;
Result.Y:= CurPos.Y- WinInfo.rcClient.Top;
end;
end;
.
.
.
.
procedure TForm1.Server2Execute(AThread: TIdPeerThread);
var mp: TPoint;
begin
mp:= getpos(Form1.Handle);
with Athread.Connection
do
begin
WriteInteger(mp.x);
WriteInteger(mp.y);
Disconnect;
end;
end;
Client:
Delphi-Quellcode:
with Client2
do
begin
Connect;
try
xy.X := ReadInteger(true);
xy.Y := ReadInteger(true);
finally
Disconnect;
end;
SetPos(Han,xy);
ShowMEssage(strtoint(xy.X)+'
/'+strtoint(xy.y));
procedure SetPos(
Handle: HWND; CurPos: TPoint);
var
WinInfo: TWindowInfo;
begin
FillChar(WinInfo, Sizeof(WinInfo), 0);
WinInfo.cbSize := Sizeof(WinInfo);
GetWindowInfo(
Handle, WinInfo);
inc(CurPos.X, WinInfo.rcClient.Left);
//WinInfo.rcWindow.Left
inc(CurPos.Y, WinInfo.rcClient.Top);
//WinInfo.rcWindow.Top
if windows.PtInRect(WinInfo.rcClient, CurPos)
then
setCursorPos(CurPos.X, CurPos.Y);
end;
Das Problem ist, das es keine Message anzeigt und auch nicht die Mausposition verändert. (Ich kriege aber auch keine Fehler)