📄 screenctrl.cpp
字号:
// ScreenCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "peeryouc.h"
#include "ScreenCtrl.h"
#include "screenview.h"
#include "mainfrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CScreenCtrl
IMPLEMENT_DYNCREATE(CScreenCtrl, CFormView)
CScreenCtrl::CScreenCtrl()
: CFormView(CScreenCtrl::IDD)
{
//{{AFX_DATA_INIT(CScreenCtrl)
m_ALT = FALSE;
m_CTRL = FALSE;
m_SHIT = FALSE;
m_WIN = FALSE;
m_start=false;
//}}AFX_DATA_INIT
}
CScreenCtrl::~CScreenCtrl()
{
}
void CScreenCtrl::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CScreenCtrl)
DDX_Control(pDX, IDC_STARTSTOP, m_startstop);
DDX_Check(pDX, IDC_ALT, m_ALT);
DDX_Check(pDX, IDC_CTRL, m_CTRL);
DDX_Check(pDX, IDC_SHIT, m_SHIT);
DDX_Check(pDX, IDC_WIN, m_WIN);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CScreenCtrl, CFormView)
//{{AFX_MSG_MAP(CScreenCtrl)
ON_BN_CLICKED(IDC_SCREEN, OnScreen)
ON_BN_CLICKED(IDC_CTRL, OnCtrl)
ON_BN_CLICKED(IDC_ALT, OnAlt)
ON_BN_CLICKED(IDC_SHIT, OnShit)
ON_BN_CLICKED(IDC_WIN, OnWin)
ON_BN_CLICKED(IDC_STARTSTOP, OnStartstop)
ON_BN_CLICKED(IDC_SEND, OnSend)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CScreenCtrl diagnostics
#ifdef _DEBUG
void CScreenCtrl::AssertValid() const
{
CFormView::AssertValid();
}
void CScreenCtrl::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CScreenCtrl message handlers
void CScreenCtrl::OnScreen()
{
// TODO: Add your control notification handler code here
CMainFrame *pMain=(CMainFrame*)AfxGetApp()->GetMainWnd();
::SendMessage(pMain->GetSafeHwnd(),FULLSCREEN,0,0);
}
void CScreenCtrl::OnCtrl()
{
// TODO: Add your control notification handler code here
UpdateData();
}
void CScreenCtrl::OnAlt()
{
// TODO: Add your control notification handler code here
UpdateData();
}
void CScreenCtrl::OnShit()
{
// TODO: Add your control notification handler code here
UpdateData();
}
void CScreenCtrl::OnWin()
{
// TODO: Add your control notification handler code here
UpdateData();
}
void CScreenCtrl::OnStartstop()
{
// TODO: Add your control notification handler code here
m_start=!m_start;
CPeerSplitterWnd* splitter=(CPeerSplitterWnd*)GetParent();
CScreenView* sctrl=(CScreenView*)splitter->GetPane(1,0);
sctrl->SetFocus();
sctrl->ifstart=m_start;
m_start?m_startstop.SetWindowText("停止捕屏"):m_startstop.SetWindowText("开始捕屏");
if(m_start)
{
if(!(sctrl->src=new char[3*1024*1024]))
return;
if(!(sctrl->des=new char[3*1024*1024]))
return;
sctrl->hEvent=WSACreateEvent();
if(sctrl->hEvent==WSA_INVALID_EVENT)
{
return;
}
if(!PeerCreateSocket(&sctrl->s,PEER_STREAM))
{
WSACloseEvent(sctrl->hEvent);
return;
}
if(!PeerConnectSocket(sctrl->s,ADDRESS,7788))
{
WSACloseEvent(sctrl->hEvent);
closesocket(sctrl->s);
return;
}
sctrl->hEvent1=WSACreateEvent();
if(sctrl->hEvent1==WSA_INVALID_EVENT)
{
return;
}
if(!PeerCreateSocket(&sctrl->s1,PEER_STREAM))
{
WSACloseEvent(sctrl->hEvent1);
return;
}
if(!PeerConnectSocket(sctrl->s1,ADDRESS,7788))
{
WSACloseEvent(sctrl->hEvent1);
closesocket(sctrl->s1);
return;
}
sctrl->com.CommandID=PEER_KEYMOUSE;
if(!PeerSendDataS(sctrl->s,(char*)&sctrl->com,sizeof(sctrl->com),&sctrl->retLen,sctrl->hEvent))
{
WSACloseEvent(sctrl->hEvent);
closesocket(sctrl->s);
return;
}
sctrl->com1.CommandID=PEER_SCREEN_GET;
if(!PeerSendDataS(sctrl->s1,(char*)&sctrl->com1,sizeof(sctrl->com1),&sctrl->retLen1,sctrl->hEvent1))
{
WSACloseEvent(sctrl->hEvent1);
closesocket(sctrl->s1);
return;
}
sctrl->SetTimer( 1,1000,NULL);
Message("远程屏幕操作开始!","成功");
}
else
{
sctrl->KillTimer(1);
if(sctrl->src)
delete []sctrl->src;
if(sctrl->des)
delete []sctrl->des;
sctrl->src=0;
sctrl->des=0;
closesocket(sctrl->s);
WSACloseEvent(sctrl->hEvent);
closesocket(sctrl->s1);
WSACloseEvent(sctrl->hEvent1);
Message("远程屏幕操作结束!","成功");
}
}
void CScreenCtrl::OnSend()
{
// TODO: Add your control notification handler code here
if(m_start)
{
KEYMOUSE keymouse;
CPeerSplitterWnd* splitter=(CPeerSplitterWnd*)GetParent();
CScreenView* sctrl=(CScreenView*)splitter->GetPane(1,0);
if(m_ALT)
keymouse.style=PEER_KEY_DOWN;
else
keymouse.style=PEER_KEY_UP;
keymouse.nkey=VK_MENU;
PeerSendDataS(sctrl->s,(char*)&keymouse,sizeof(keymouse),&sctrl->retLen,
sctrl->hEvent);
if(m_CTRL)
keymouse.style=PEER_KEY_DOWN;
else
keymouse.style=PEER_KEY_UP;
keymouse.nkey=VK_CONTROL;
PeerSendDataS(sctrl->s,(char*)&keymouse,sizeof(keymouse),&sctrl->retLen,
sctrl->hEvent);
if(m_SHIT)
keymouse.style=PEER_KEY_DOWN;
else
keymouse.style=PEER_KEY_UP;
keymouse.nkey=VK_SHIFT;
PeerSendDataS(sctrl->s,(char*)&keymouse,sizeof(keymouse),&sctrl->retLen,
sctrl->hEvent);
if(m_WIN)
keymouse.style=PEER_KEY_DOWN;
else
keymouse.style=PEER_KEY_UP;
keymouse.nkey=VK_LWIN;
PeerSendDataS(sctrl->s,(char*)&keymouse,sizeof(keymouse),&sctrl->retLen,
sctrl->hEvent);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -