|
用delphi实现冰河的远程屏幕操作功能(9) p := Point(x, y); CurHandle := WindowFromPoint(p); Assert(CurHandle<>0);
SetCursorPos(x, y);
// Create the Messages to send in the Hook procedure with MsgSimulator1 do begin Messages.Clear; for i := 1 to num do Add_ClickEx(0, GetMB(but), [], x, y, 1); Play; end;
CreateSleepThread; end;
procedure TServerForm.ProcessDrag(const Data: string); var x, y : integer; time : integer; num, but : integer; p : TPoint; StartPt : TPoint; StopPt : TPoint; begin Move(Data[1], but, sizeof(integer)); Move(Data[1+4], num, sizeof(integer)); Assert(num > 2);
// Create the Messages to send in the Hook procedure // Mouse Down Move(Data[(1-1)*12 + 9], x, sizeof(integer)); Move(Data[(1-1)*12 + 13], y, sizeof(integer)); Move(Data[(1-1)*12 + 17], time, sizeof(integer)); SetCursorPos(x, y); // Find the Window Handle p := Point(x, y); CurHandle := WindowFromPoint(p); Assert(CurHandle<>0);
with MsgSimulator1 do begin Messages.Clear;
StartPt.X := x; StartPt.Y := y; Windows.ScreenToClient(CurHandle, StartPt);
Move(Data[(num-1)*12 + 9], x, sizeof(integer)); Move(Data[(num-1)*12 + 13], y, sizeof(integer)); StopPt.X := x; StopPt.Y := y; Windows.ScreenToClient(CurHandle, StopPt);
Add_Window_Drag(CurHandle, StartPt.X, StartPt.Y, StopPt.X, StopPt.Y);
Play; end;
CreateSleepThread; end;
procedure TServerForm.ProcessKeys(const Data: string); begin with MsgSimulator1 do begin Messages.Clear; Add_ASCII_Keys(Data); Play; end;
CreateSleepThread; end;
procedure TServerForm.SendMsg(MsgNum: integer; const MsgData: string; Socket: TCustomWinSocket); var s : string; begin s := IntToByteStr(MsgNum) + IntToByteStr(Length(MsgData)) + MsgData;
Log(Format('%-20s %-4d %1.0n', ['Send', MsgNum, Length(s)+0.0]));
Socket.SendText(s); NumSend := NumSend + Length(s);
|