void __fastcall TFrmFull::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(FrmMain->CheckBox3->Checked)
{
char text[32];
int Rx,Ry;
Rx=X*65535/Image1->Width;
Ry=Y*65535/Image1->Height;
switch(Button)
{
case mbLeft:
sprintf(text,"3\n2\n%d\n%d\n",Rx,Ry);
break;
case mbRight:
sprintf(text,"3\n4\n%d\n%d\n",Rx,Ry);
break;
case mbMiddle:
sprintf(text,"3\n6\n%d\n%d\n",Rx,Ry);
break;
}
int sock=Connect_Server(RemoteAddress, LISTENPORT);
Write_Socket(sock, text);
closesocket(sock);
}
}
//---------------------------------------------------------------------------
void __fastcall TFrmFull::Image1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(FrmMain->CheckBox3->Checked)
{
char text[32];
int Rx,Ry;
Rx=X*65535/Image1->Width;
Ry=Y*65535/Image1->Height;
switch(Button)
{
case mbLeft:
sprintf(text,"3\n3\n%d\n%d\n",Rx,Ry);
break;
case mbRight:
sprintf(text,"3\n5\n%d\n%d\n",Rx,Ry);
break;
case mbMiddle:
sprintf(text,"3\n7\n%d\n%d\n",Rx,Ry);
break;
}
int sock=Connect_Server(RemoteAddress, LISTENPORT);
Write_Socket(sock, text);
closesocket(sock);
}
}
以下是被控端也就是server端的代码处理:
case 2://请求目标机屏幕分辨率
{
char str[24];
int Width=GetSystemMetrics(SM_CXSCREEN);
int Height=GetSystemMetrics(SM_CYSCREEN);
sprintf(str,"%d*%d\n",Width,Height);
Socket->SendText(str);
}
break;
case 3://
{
int MouseCmd=StrToIntDef(sRecvString.SubString(1,pos-1),0);
sRecvString = sRecvString.SubString(pos+1,sRecvString.Length()-pos);
pos = sRecvString.Pos("\n");
int px=StrToIntDef(sRecvString.SubString(1,pos-1),0);
sRecvString = sRecvString.SubString(pos+1,sRecvString.Length()-pos);
pos = sRecvString.Pos("\n");
int py=StrToIntDef(sRecvString.SubString(1,pos-1),0);
switch(MouseCmd)
{
case 1://WM_MOUSEMOVE
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE,px,py,0,0);
break;
case 2://WM_LBUTTONDOWN
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,px,py,0,0);
break;
case 3://WM_LBUTTONUP
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,px,py,0,0);
break;
case 4://WM_RBUTTONDOWN
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN,px,py,0,0);
break;
case 5://WM_RBUTTONUP
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTUP,px,py,0,0);
break;
case 6://WM_MIDBUTTONDOWN
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEDOWN,px,py,0,0);
break;
case 7://WM_MIDBUTTONUP
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEUP,px,py,0,0);
break;