谁动了你的主机 您所在的位置:网站首页 win7电脑摄像头拍照 谁动了你的主机

谁动了你的主机

2024-03-16 22:06| 来源: 网络整理| 查看: 265

项目介绍:

Java那边的同事的笔记本上的键盘坏了,他怀疑是有人动了他的电脑,但不知道是谁,身为C++程序员的我(虽然是个实习狗),但还是做出了一个小程序,当Windows唤醒和开机时,会自动拍照,看看是谁动了他的主机。

本次采用C/C++语言。Qt框架

程序运行截图如下:

为了方便操作我还做成了托盘程序:

当点击保存设置后,会把上面的两个ComBox的内容写入cfg.dat这个文件中,并且添加注册表,让其能够开机自启动

当睡眠或者开机时,会自动创建文件夹并且拍照:

如下图:

源码下载地址:

https://download.csdn.net/download/qq78442761/10453826

码云下载地址:

https://gitee.com/IT1995/hunter/tree/master

下面将对此程序的原理给出详细的说明

程序的关键:

一:当Windows睡眠的时候,程序是被“冻结”的,不会被运行,但有一个东西唤醒时会变动的,那就是系统时间。

所以实现功能的关键就是,在程序里面做一个计时器,这个计时器和系统时间做对比(运行的时候,这两个值是一样的)。

当唤醒后,他们之间会不一样,然后更具这个差值,如果满足某个条件,就拍照。

二:拍照的时候,一点要有“延时”,这个意思就是说。每次拍照之间要有时间间隔,关闭摄像头也要有,不然拍照是不会成功的。

上面的两点就是程序的关键。

下面说下技术上的细节。(所有源代码可以在上面的链接中下载);

程序结构如下图所示:

插入注册表:

void Widget::appAutoRun() { QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",QSettings::NativeFormat); QString strAppPath=QDir::toNativeSeparators(QCoreApplication::applicationFilePath()); reg.setValue("狩猎者",strAppPath); }

判断是否要拍照:

void MyWorker::beginJudge() { if(QDateTime::currentDateTime().toTime_t()-m_judNum0){ //可以拍照了 qDebug()-1){ //关闭摄像头 qDebug()-2){ qDebug()setViewfinder(m_viewfinder); m_camera->start(); m_myWorker->setPicNum(ui->cameraCountComboBox->currentText().toInt()); connect(m_timer_2,SIGNAL(timeout()),m_myWorker,SLOT(ALLDelay())); connect(m_myWorker,SIGNAL(setPic(int)),this,SLOT(takePic(int))); connect(m_myWorker,SIGNAL(closeCamera()),this,SLOT(closeCamera())); connect(m_myWorker,SIGNAL(initAllData()),this,SLOT(stopTimAndInit())); m_timer_2->start(1000); }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有