#include "home.h" #include "ui_home.h" #include #include #include #include #include #include #include #include #include #include #include //#include //#include #pragma comment(lib, "user32.lib") #include "httpapi.h" #include "qresource.h" //#include //#include #include #pragma execution_character_set("utf-8") Home::Home(QWidget *parent) : QMainWindow(parent), ui(new Ui::Home) { ui->setupUi(this); myTimer = new QTimer(this); //start timer for screen capture connect(myTimer,&QTimer::timeout,[this](){ captureScreen(); }); myTimer->start(60000); setWindowTitle(tr("智能工时管家")); //set ui data webWidget = new QWebEngineView(this); QNetworkProxyFactory::setUseSystemConfiguration(false); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(webWidget); // setLayout(mainLayout); QWidget* widget = new QWidget(this); widget->setLayout(mainLayout); this->setCentralWidget(widget); setWindowState(Qt::WindowMaximized);//最大化 QSettings *qs = new QSettings("MyManager",QSettings::IniFormat,this); qs->beginGroup("user"); QString id = qs->value("id").toString(); qDebug() << "id=="<grabWindow(0).save(filePathName, "jpg"); // 0值为整个电脑屏幕WId if (!result) { QMessageBox msg3(QMessageBox::Information,windowTitle(),"请尝试使用管理员运行程序!",QMessageBox::Ok,this); msg3.exec(); } //判断图像是否和之前的那个一样 QImage curImg = QImage(filePathName); int curHeight = curImg.height(); int curWidth = curImg.width(); uchar* curData = curImg.bits(); int similarPercent = 0; if (height == curHeight && width == curWidth) {//必须先满足尺寸一致 unsigned char r,g,b,curR, curG, curB; int totalPixel = 0; int samePixel = 0; for (int i=0;i= 95) {//相似度90%以上,认为是一样的,不要上传 qDebug() << "不上传!!!"; return; } } else { //直接保存 screen->grabWindow(0).save(filePathName, "jpg"); } //start upload file QNetworkRequest request; request.setUrl(QUrl(SERVER_URL + "/imageProcessing/saveAndProcessImage")); QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart imagePart; imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));//如果是png图片填image/png imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"image.jpg\"")); // imagePart.setRawHeader("Content-ID", "my@content.id"); // 添加任何你喜欢的 headers QFile *file = new QFile(filePathName); file->open(QIODevice::ReadOnly); imagePart.setBodyDevice(file); multiPart->append(imagePart); //text paramter QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"uid\"")); QSettings *qs = new QSettings("MyManager",QSettings::IniFormat,this); qs->beginGroup("user"); QString id = qs->value("id").toString(); textPart.setBody(id.toUtf8()); multiPart->append(textPart); QHttpPart textPart2; textPart2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"indate\"")); QString indate = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"); textPart2.setBody(indate.toUtf8()); multiPart->append(textPart2); // QString processList = getProcessList(); // qDebug() << processList; // QHttpPart textPart3; // textPart3.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"processList\"")); // textPart3.setBody(processList.toUtf8()); // multiPart->append(textPart3); //add os infomation QString osType = ""; #if defined(Q_OS_WIN) osType = "Q_OS_WIN"; #endif #if defined(Q_OS_MAC) osType = "Q_OS_MAC"; #endif #if defined(Q_OS_LINUX) osType = "Q_OS_LINUX"; #endif qDebug() << "osType=="<append(textPart4); QNetworkAccessManager *m_pNetWorkManager = new QNetworkAccessManager(); m_pNetWorkManager->post(request, multiPart); } QString Home::getProcessList() { QProcess process; #ifdef Q_OS_WIN qDebug() <<"This is Windows platform"; process.start("tasklist.exe"); #endif #ifdef Q_OS_MAC qDebug() <<"This is Mac platform, run ps aux"; process.start("ps aux"); #endif #ifdef Q_OS_LINUX qDebug() <<"This is Linux platform, run ps aux"; process.start("ps aux"); #endif if(process.waitForFinished()) { QByteArray result = process.readAll(); return result; } return NULL; } void Home::loadNavigate(QString sUrl) { webWidget->load(sUrl); } Home::~Home() { delete webWidget; delete ui; } void Home::closeEvent ( QCloseEvent * e ) { if(QMessageBox::question(this, tr("退出"), tr("退出软件将无法统计到您的工时,影响绩效,您确定要退出吗?"), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes){ e->accept();//不会将事件传递给组件的父组件 qDebug()<<"ok"; } else e->ignore(); }