?? screenctrl.cpp
字號:
// ScreenCtrl.cpp: implementation of the ScreenCtrl class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ScreenCtrl.h"
#include "command.h"
#include "peersocket.h"
#include "capturescreen.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
bool PeerScreenMouseKey(SOCKET s,WSAEVENT hEvent)
{
DWORD retLen;
KEYMOUSE keymouse;
while(1)
{
//////////取得鼠標鍵盤值///////////
if(!PeerRecvDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent,SENDRECV_TIMEOUT))
{
return false;
}
switch(keymouse.style)
{
case PEER_MOUSE_LEFTDOWN:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,keymouse.x,keymouse.y,0,0);
break;
case PEER_MOUSE_LEFTUP:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,keymouse.x,keymouse.y,0,0);
break;
case PEER_MOUSE_RIGHTDOWN:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN,keymouse.x,keymouse.y,0,0);
break;
case PEER_MOUSE_RIGHTUP:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTUP,keymouse.x,keymouse.y,0,0);
break;
case PEER_MOUSE_MIDDLEDOWN:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEDOWN,keymouse.x,keymouse.y,0,0);
break;
case PEER_MOUSE_MIDDLEUP:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEUP,keymouse.x,keymouse.y,0,0);
break;
case PEER_MOUSE_LDBCLICK:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,keymouse.x,keymouse.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,keymouse.x,keymouse.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,keymouse.x,keymouse.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,keymouse.x,keymouse.y,0,0);
break;
case PEER_MOUSE_RDBCLICK:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN,keymouse.x,keymouse.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTUP,keymouse.x,keymouse.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN,keymouse.x,keymouse.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTUP,keymouse.x,keymouse.y,0,0);
break;
case PEER_MOUSE_MDBCLICK:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEDOWN,keymouse.x,keymouse.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEUP,keymouse.x,keymouse.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEDOWN,keymouse.x,keymouse.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEUP,keymouse.x,keymouse.y,0,0);
break;
case PEER_MOUSE_MOVE:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE,keymouse.x,keymouse.y,0,0);
break;
case PEER_KEY_DOWN:
keybd_event(keymouse.nkey,0,KEYEVENTF_EXTENDEDKEY,0);
break;
case PEER_KEY_UP:
keybd_event(keymouse.nkey,0,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);
break;
}
}
return true;
}
/////////////////截取屏幕/////////////////
bool PeerScreenGet(SOCKET s,WSAEVENT hEvent)
{
DWORD retLen;
SCREEN screen;
//////////屏幕///////////
while(1)
{
if(!PeerRecvDataS(s,(char*)&screen,sizeof(screen),&retLen,
hEvent,SENDRECV_TIMEOUT))
{
return false;
}
if(screen.BmpSize==10000) ///客戶端已經退出
break;
EnterCriticalSection(&csCaptureScreen);
if(!GetScreenData(8))
{
LeaveCriticalSection(&csCaptureScreen);
return false;
}
screen.BmpSize=dwBmpSize;
screen.BmpInfoSize=dwBmpInfoSize;
screen.BmpCX=iBmpCX;
screen.BmpCY=iBmpCY;
if(!PeerSendDataS(s,(char*)&screen,sizeof(screen),&retLen,
hEvent,SENDRECV_TIMEOUT))
{
LeaveCriticalSection(&csCaptureScreen);
return false;
}
if(!PeerSendDataS(s,(char*)lpBmpData,dwBmpSize,&retLen,
hEvent,SENDRECV_TIMEOUT))
{
LeaveCriticalSection(&csCaptureScreen);
return false;
}
LeaveCriticalSection(&csCaptureScreen);
}
return true;
}
/////寫屏幕///////////
bool PeerScreenWrite(SOCKET s,WSAEVENT hEvent)
{
DWORD retLen;
FONTTEXT ftext;
HDC hScrDC;
HWND deskwnd,listwnd;
// SystemParametersInfo(SPI_SETWORKAREA,NULL,NULL,SPIF_SENDCHANGE);
if(!PeerRecvDataS(s,(char*)&ftext,sizeof(ftext),&retLen,
hEvent,SENDRECV_TIMEOUT))
{
return false;
}
// deskwnd=GetDesktopWindow();
// if(deskwnd)
// {
// char classname[50];
// int ret;
// for (listwnd = ::GetTopWindow(deskwnd); listwnd != NULL;
// listwnd = ::GetNextWindow(listwnd, GW_HWNDNEXT))
// {
// if(!(ret=GetClassName(listwnd,classname,50)))
// break;
// classname[ret]=0;
// if(!strcmp(classname,"SysListView32"))
// {
// InvalidateRect(listwnd,NULL,true);
// MessageBox(NULL,"dkdk","dkdk",MB_OK);
// break;
//
// }
// }
// }
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
int xScrn,yScrn;
xScrn = GetDeviceCaps(hScrDC, HORZRES);
yScrn = GetDeviceCaps(hScrDC, VERTRES);
RECT rect;
rect.left=10;rect.top=10;rect.bottom=yScrn-10;rect.right=xScrn-10;
HFONT font,oldfont;
font=CreateFontIndirect(&ftext.logfont);
oldfont=(HFONT)SelectObject(hScrDC,font);
SetTextColor(hScrDC,ftext.color);
SetBkMode(hScrDC,TRANSPARENT);
DrawText(hScrDC,ftext.text,ftext.textcount,&rect,DT_CENTER);
SelectObject(hScrDC,oldfont);
DeleteObject(font);
DeleteDC(hScrDC);
return true;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -