平面设计自学网站有哪些,宣传片拍摄思路,建立网站就是制作网页,灰色系网站文章目录 运行效果功能描述代码mian.cppincludeMouseKeyControl.hTipsManagement.h srcMouseControl.cppTipsManagement.cpp 运行效果 功能描述
线程一#xff1a;每隔n随机秒#xff0c;动一下鼠标滚轮#xff0c;防止屏幕息屏。 线程二#xff1a;运行时加载txt文件中的… 文章目录 运行效果功能描述代码mian.cppincludeMouseKeyControl.hTipsManagement.h srcMouseControl.cppTipsManagement.cpp 运行效果 功能描述
线程一每隔n随机秒动一下鼠标滚轮防止屏幕息屏。 线程二运行时加载txt文件中的句子到数组然后每隔n秒随机显示一个句子。
代码
mian.cpp
#includeiostream
#includeTipsManagement.h
#includeMouseKeyControl.h
#include thread
using namespace std;// 声明两个线程函数以便可以独立于 main 函数运行
void showTipsInThread(TipsManagement* tm) { while (true) {tm-randomShowTip(); }
} void autoRollMouseInThread(MouseKeyControl* mc)
{while (true) { mc-autoScrollMouseWheel();}
} int main()
{TipsManagement* tm new TipsManagement();MouseKeyControl* mc new MouseKeyControl();tm-n 2 * 60 * 1000;mc-n 3 * 60 * 1000;;thread tipsThread(showTipsInThread, tm); thread mouseThread(autoRollMouseInThread, mc); // 等待线程完成 tipsThread.join(); mouseThread.join(); // delete tm;// delete mc;return 0;
}include
MouseKeyControl.h
#pragma once
#includeiostream
#includestring
#include windows.h
#includefstream
#include algorithm
#include random
#include ctime
using namespace std;class MouseKeyControl
{
public:unsigned int n; RECT screenRect; // get screen size;INPUT inputs[2] {};int delta;int offsets[10] {-3240,-3010,-2030,-1003,0,0,-998,-817,-603,-710};void initRandomIndexVec();void autoRandomMoveMouse();void autoScrollMouseWheel();MouseKeyControl();~MouseKeyControl();
};
TipsManagement.h
#pragma once
#includeiostream
#includestring
#include windows.h
#includefstream
#include algorithm
#include random
#include ctime
#define FILENAME tipsFile.txt
using namespace std;class TipsManagement
{
public:bool fileIsEmpty;int tipsNum;string* tipsArr;vectorint randomIndexVec;unsigned int n; // sleep n minutes;void showMenu();void initTips();void initRandomIndexVec();void randomShowTip();int getTipsNum();void showAllTips();void cleanFile();void save();void addTips();void findTips();void deleteTips();void modifyTips();void sortTips();void exitSystem();string GbkToUtf8(string src_str1);string Utf8ToGbk(string src_str1);TipsManagement();~TipsManagement();
};
src
MouseControl.cpp
#include MouseKeyControl.h
#include windows.h MouseKeyControl::MouseKeyControl()
{SystemParametersInfo(SPI_GETWORKAREA, 0, this-screenRect, 0);// 创建一个包含两个INPUT结构体的数组一个用于按下滚轮一个用于释放滚轮 this-delta 1;ZeroMemory(this-inputs, sizeof(this-inputs)); // 第一个INPUT结构体滚轮滚动向下滚动为正向上滚动为负 this-inputs[0].type INPUT_MOUSE; this-inputs[0].mi.dx 0; this-inputs[0].mi.dy 0; this-inputs[0].mi.mouseData delta * WHEEL_DELTA; // WHEEL_DELTA是滚动一个“滴答”的量 this-inputs[0].mi.dwFlags MOUSEEVENTF_WHEEL; // 指定这是一个滚轮事件 this-inputs[0].mi.time 0;
}void MouseKeyControl::autoRandomMoveMouse()
{// 初始化随机数种子 // srand(static_castunsigned int(time(0))); Sleep(this-n); // 生成随机位置 int x rand() % (this-screenRect.right - this-screenRect.left); int y rand() % (this-screenRect.bottom - this-screenRect.top); // 将鼠标移动到随机位置 SetCursorPos(x this-screenRect.left, y this-screenRect.top); }void MouseKeyControl::autoScrollMouseWheel() { // 根据当前时间初始化srand(static_castunsigned int(time(0))); // 生成0到10的随机整数包含0但不包含10 int randomNum rand() % 10; Sleep(this-nthis-offsets[randomNum]);// 正数表示向上滚动SendInput(1, this-inputs, sizeof(INPUT));
} MouseKeyControl::~MouseKeyControl()
{
}
TipsManagement.cpp
#include TipsManagement.hTipsManagement::TipsManagement()
{this-n 3000; // the default sleep time is 3s.ifstream ifs;ifs.open(FILENAME, ios::in);//-----------------------1.file is not exist-------------------------if (!ifs.is_open()){cout The file does not exist! endl;// the label of the empty file this-fileIsEmpty true;// label the tip number to 0this-tipsNum 0;// set the tip Array is Null.this-tipsArr NULL;ifs.close(); return;}//----------------2.file is exist, but the data is NULL.-------------------char ch;ifs ch; // read a char in the file.if (ifs.eof()) // eof is the end lable of the file.{cout The file is empty! endl;this-tipsNum 0; this-fileIsEmpty true; this-tipsArr NULL; ifs.close();return;}//---------------------3.file is exist and the data are not null.-------------------------int num this-getTipsNum();// cout the file have num tips. endl;this-tipsNum num; this-fileIsEmpty false;this-tipsArr new string[this-tipsNum];this-initTips(); // read the file tips to tipsArr// this-showAllTips();this-initRandomIndexVec();// create the random vec index}void TipsManagement::initRandomIndexVec()
{for (int i 0; i this-tipsNum; i){this-randomIndexVec.push_back(i);}random_device rd; mt19937 g(rd()); shuffle(begin(this-randomIndexVec), end(this-randomIndexVec), g);
}void TipsManagement::randomShowTip()
{int index;for (int i 0; i this-tipsNum; i){index this-randomIndexVec[i];coutendl;cout this-tipsArr[index]endl;Sleep(this-n);system(cls);}}// when open the tips file, read all tips to tipsArr.
void TipsManagement::initTips()
{ifstream ifs;ifs.open(FILENAME, ios::in);string tip;int index 0;while (ifs tip){this-tipsArr[index] tip;index;}ifs.close();
}// read tips file to get the number of tips.
int TipsManagement::getTipsNum()
{ifstream ifs;ifs.open(FILENAME, ios::in);string tip;int num 0;while (ifs tip){num;}ifs.close();return num;
}void TipsManagement::showAllTips()
{if (this-fileIsEmpty){cout File is not exist or the file is empty! endl;}else{for (int i 0; i this-tipsNum; i){coutthis-tipsArr[i]endl;}}system(pause);system(cls);
}//------------------------------------------------useless---------------------------------------------------void TipsManagement::showMenu()
{cout ********************************************** endl;cout ************0.Exit tipsManagement.************* endl;cout ************1.Add tip.******************* endl;cout ************2.Show tips.****************** endl;cout ************3.Delete someone tip.****** endl;cout ************4.Modify tip.**** endl;cout ************5.Find tip.****** endl;cout ************6.Sort by id.***************** endl;cout ************7.Clear all documents************* endl;cout ********************************************** endl;cout endl;
}void TipsManagement::addTips()
{cout Please enter the number of tips to be added:endl;int addNum 0;cin addNum;if (addNum 0){int newSize this-tipsNum addNum;string* newSpace new string[newSize];if (this-tipsArr ! NULL){for (int i 0; i this-tipsNum; i){newSpace[i] this-tipsArr[i];}}for (int i 0; i addNum; i){string tip;cout Please enter the i 1 tip: endl;cin tip; coutnew input:tipendl;newSpace[this-tipsNum i] tip;coutnew input(arr):newSpace[this-tipsNum i]endl;}delete[] this-tipsArr;this-tipsArr newSpace;this-tipsNum newSize;this-fileIsEmpty false;cout Successfully added addNum new tips! endl;this-save();}else{cout Your input is incorrect. endl;}system(pause);system(cls);
}// put the tipsArr to file.
void TipsManagement::save()
{ofstream ofs;ofs.open(FILENAME, ios::out);for (int i 0; i this-tipsNum; i){ofs this-tipsArr[i] endl;}ofs.close();
}void TipsManagement::exitSystem()
{cout exit. endl;system(pause);exit(0);
}string TipsManagement::GbkToUtf8(string src_str1)
{const char *src_str src_str1.data();int len MultiByteToWideChar(CP_ACP, 0, src_str, -1, NULL, 0);wchar_t* wstr new wchar_t[len 1];memset(wstr, 0, len 1);MultiByteToWideChar(CP_ACP, 0, src_str, -1, wstr, len);len WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);char* str new char[len 1];memset(str, 0, len 1);WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);std::string strTemp str;if (wstr) delete[] wstr;if (str) delete[] str;return strTemp;
}string TipsManagement::Utf8ToGbk(string src_str1) //const char *src_str
{const char* src_str src_str1.data();int len MultiByteToWideChar(CP_UTF8, 0, src_str, -1, NULL, 0);wchar_t* wszGBK new wchar_t[len 1];memset(wszGBK, 0, len * 2 2);MultiByteToWideChar(CP_UTF8, 0, src_str, -1, wszGBK, len);len WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);char* szGBK new char[len 1];memset(szGBK, 0, len 1);WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, szGBK, len, NULL, NULL);std::string strTemp(szGBK);if (wszGBK) delete[] wszGBK;if (szGBK) delete[] szGBK;return strTemp;
}TipsManagement::~TipsManagement()
{}