Compare commits
6 Commits
08214df2e1
...
v0.2
| Author | SHA1 | Date | |
|---|---|---|---|
| 9eb637e927 | |||
| b79b34719a | |||
| f2a9423457 | |||
| bb048120bf | |||
| 15712965c7 | |||
| d2a10300a5 |
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
.vscode/
|
||||
*.exe
|
||||
*.txt
|
||||
.env
|
||||
*.bak
|
||||
*.log
|
||||
335
selfMonitor.cpp
335
selfMonitor.cpp
@@ -1,136 +1,201 @@
|
||||
#pragma comment(linker, "/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")
|
||||
#include<windows.h>
|
||||
#include<iostream>
|
||||
#include<cstdlib>
|
||||
#include<cstring>
|
||||
#include<ctime>
|
||||
using namespace std;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const int BLACK_LIST_SIZE = 3;
|
||||
string blackList[]={"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","MuMuģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>","֪<EFBFBD><EFBFBD>"};
|
||||
int blackListTimeCount = 0;
|
||||
const int MAX_BLACKLIST_TIME_COUNT = 1800;
|
||||
const int TOLENT_MORE_TIME = 1200;
|
||||
void saveData(){
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䵽save.txt
|
||||
FILE *fp = fopen("save.txt", "w");
|
||||
if(fp!=NULL){
|
||||
time_t timeNow = time(0);
|
||||
tm *curTime=localtime(&timeNow);
|
||||
fprintf(fp, "%d %d %d %d", blackListTimeCount,curTime->tm_year,curTime->tm_mon,curTime->tm_mday);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
bool beginWithMuteFlag=false;
|
||||
void muteAll(){
|
||||
keybd_event(VK_SPACE, 0, 0, 0);
|
||||
Sleep(1);
|
||||
keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);
|
||||
}
|
||||
void unmuteAll(){
|
||||
keybd_event(VK_SPACE, 0, 0, 0);
|
||||
Sleep(1);
|
||||
keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);
|
||||
}
|
||||
int main(){
|
||||
ShowWindow(GetConsoleWindow(), SW_HIDE);
|
||||
system("chcp 936 >>nul");
|
||||
FreeConsole();
|
||||
srand((unsigned)time(0));
|
||||
char title[1024];
|
||||
// <20><>save.txt<78>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
FILE *fp = fopen("save.txt", "r");
|
||||
if(fp!=NULL){
|
||||
int curYear,curMonth,curDay;
|
||||
fscanf(fp, "%d%d%d%d", &blackListTimeCount,&curYear,&curMonth,&curDay);
|
||||
time_t timeNow = time(0);
|
||||
tm *curTime=localtime(&timeNow);
|
||||
if(curTime->tm_year!=curYear||curTime->tm_mon!=curMonth||curTime->tm_mday!=curDay){
|
||||
blackListTimeCount = 0;
|
||||
}
|
||||
fclose(fp);
|
||||
}
|
||||
cout<<"Hello, Self Monitor!";
|
||||
while(true){
|
||||
// <20>ж<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
time_t now = time(0);
|
||||
tm *ltm = localtime(&now);
|
||||
if(ltm->tm_hour==4&<m->tm_min==0){
|
||||
blackListTimeCount = 0;
|
||||
}
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>㴰<EFBFBD><E3B4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
HWND hwnd = GetForegroundWindow();
|
||||
if (hwnd == NULL) {
|
||||
continue;
|
||||
}
|
||||
if(GetWindowTextA(hwnd, title, 1024) == 0){
|
||||
cout<<"GetWindowTextW failed"<<endl;
|
||||
cout<<"hwnd: "<<hwnd<<endl;
|
||||
cout<<"Error code: "<<GetLastError()<<endl;
|
||||
Sleep(1000);
|
||||
continue;
|
||||
}
|
||||
cout<<"*"<<title<<endl;
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool isInBlackList = false; string strTitle = title;
|
||||
for(int i=0;i<BLACK_LIST_SIZE;i++){
|
||||
if(strTitle.find(blackList[i])!=string::npos){
|
||||
isInBlackList = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
cout<<"*"<<title<<endl<<isInBlackList<<endl;
|
||||
if(isInBlackList){
|
||||
cout<<hwnd<<','<<title<<"\n";
|
||||
blackListTimeCount++;
|
||||
if(blackListTimeCount>=MAX_BLACKLIST_TIME_COUNT){
|
||||
muteAll();
|
||||
bool isContinue = true;
|
||||
isContinue = MessageBoxA(hwnd, "<EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_YESNO) == IDYES;
|
||||
if(isContinue){
|
||||
MessageBoxA(hwnd, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD>Σ<EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>취<EFBFBD><EFBFBD>", MB_OK);
|
||||
for(int i=0;i<10;i++){
|
||||
int randNum = rand()&1;
|
||||
if(randNum){
|
||||
isContinue = MessageBoxA(hwnd, "<EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>һ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>Եı<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>ȷ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>", MB_YESNO) == IDYES;
|
||||
}else{
|
||||
isContinue = MessageBoxA(hwnd, "<EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>һ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>Եı<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>ȡ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>", MB_YESNO) == IDNO;
|
||||
}
|
||||
if(!isContinue){
|
||||
MessageBoxA(hwnd, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㲢û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><EFBFBD><EFBFBD>", "̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
unmuteAll();
|
||||
if(isContinue){
|
||||
MessageBoxA(hwnd, "<EFBFBD>ðɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷʵ<EFBFBD>м<EFBFBD><EFBFBD>£<EFBFBD>ȥæ<EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD>", MB_OK);
|
||||
blackListTimeCount = MAX_BLACKLIST_TIME_COUNT - TOLENT_MORE_TIME;
|
||||
}else{
|
||||
MessageBoxA(hwnd, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǧ<EFBFBD>ּг<EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>첻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD>ƹص<EFBFBD><EFBFBD><EFBFBD>","True Ending",MB_OK);
|
||||
Sleep(5*1000);
|
||||
// ǿ<>ƹر<C6B9>hwnd<6E><EFBFBD><EFBFBD><EFBFBD>
|
||||
PostMessageA(hwnd, WM_CLOSE, 0, 0);
|
||||
}
|
||||
}else if(blackListTimeCount%600==0){
|
||||
muteAll();
|
||||
MessageBoxA(hwnd, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>£<EFBFBD>", "ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK);
|
||||
unmuteAll();
|
||||
}else if(blackListTimeCount%300==0){
|
||||
muteAll();
|
||||
MessageBoxA(hwnd, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>Ϣ", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK);
|
||||
unmuteAll();
|
||||
}
|
||||
}
|
||||
// <20><>ʱ
|
||||
Sleep(1000);
|
||||
static int clockCount = 0;
|
||||
clockCount++;
|
||||
if(clockCount%60==0){
|
||||
saveData();
|
||||
}
|
||||
// cout<<title<<endl;
|
||||
// cout<<"blackListTimeCount: "<<blackListTimeCount<<endl;
|
||||
}
|
||||
return 0;
|
||||
#pragma comment(linker, "/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")
|
||||
#include<windows.h>
|
||||
#include<iostream>
|
||||
#include<cstdlib>
|
||||
#include<cstring>
|
||||
#include<fstream>
|
||||
#include<sstream>
|
||||
#include<iomanip>
|
||||
#include<string>
|
||||
#include<thread>
|
||||
#include<vector>
|
||||
#include<ctime>
|
||||
#include<map>
|
||||
using namespace std;
|
||||
|
||||
ofstream logFile; // <20><>־<EFBFBD>ļ<EFBFBD>
|
||||
vector<string> blackList; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int blackListTimeCount = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const int MAX_BLACKLIST_TIME_COUNT = 1800; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
const int TOLENT_MORE_TIME = 1200; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ʱ<E0B3A4><CAB1><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
|
||||
const int PUNISH_CLICKS = 20; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴκ<D9B4><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const int PUNISH_CLICKS_RND = 10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void getBlackList(string str){
|
||||
if(str.substr(0, 10)!="BLACK_LIST") return;
|
||||
str = str.substr(str.find("=")+1);
|
||||
stringstream ss(str); string item;
|
||||
while(ss>>quoted(item)){
|
||||
if(item==",") continue;
|
||||
blackList.push_back(item);
|
||||
}
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
void saveData(){
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䵽save.txt
|
||||
FILE *fp = fopen("save.txt", "w");
|
||||
if(fp!=NULL){
|
||||
time_t timeNow = time(0);
|
||||
tm *curTime = localtime(&timeNow);
|
||||
if(curTime->tm_hour<4){
|
||||
timeNow -= 86400;
|
||||
curTime = localtime(&timeNow);
|
||||
}
|
||||
fprintf(fp, "%d %d %d %d", blackListTimeCount,curTime->tm_year,curTime->tm_mon,curTime->tm_mday);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
// <20><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
void loadData(){
|
||||
FILE *fp = fopen("save.txt", "r");
|
||||
if(fp!=NULL){
|
||||
int curYear,curMonth,curDay;
|
||||
fscanf(fp, "%d%d%d%d", &blackListTimeCount,&curYear,&curMonth,&curDay);
|
||||
time_t timeNow = time(0);
|
||||
tm *curTime = localtime(&timeNow);
|
||||
if(curTime->tm_hour<4){
|
||||
timeNow -= 86400;
|
||||
curTime = localtime(&timeNow);
|
||||
}
|
||||
if(curTime->tm_year!=curYear||curTime->tm_mon!=curMonth||curTime->tm_mday!=curDay){
|
||||
blackListTimeCount = 0;
|
||||
}
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
// <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
string getTimeStr(){
|
||||
time_t now = time(0);
|
||||
tm *ltm = localtime(&now);
|
||||
char timeStr[1024];
|
||||
strftime(timeStr, sizeof(timeStr), "[%Y-%m-%d %H:%M:%S]", ltm);
|
||||
return (string)timeStr;
|
||||
}
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void initMonitor(){
|
||||
ShowWindow(GetConsoleWindow(), SW_HIDE); // <20><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>
|
||||
system("chcp 936 >>nul"); // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>ΪGBK
|
||||
FreeConsole(); // <20><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>
|
||||
srand((unsigned)time(0)); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
logFile.open("selfMonitor.log", ios::out); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD>ļ<EFBFBD>
|
||||
ifstream ifs(".env");
|
||||
if(ifs.is_open()){
|
||||
string line;
|
||||
while(getline(ifs, line))
|
||||
getBlackList(line);
|
||||
ifs.close();
|
||||
}
|
||||
loadData();
|
||||
logFile<<getTimeStr()<<"- INFO: <20>Լ<EFBFBD><D4BC>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʺã<CABA>"<<endl;
|
||||
logFile<<getTimeStr()<<"- INFO: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
||||
for(int i=0;i<blackList.size();i++)
|
||||
logFile<<'\"'<<blackList[i]<<'\"'<<endl;
|
||||
logFile<<getTimeStr()<<"- INFO: <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<blackListTimeCount<<endl;
|
||||
}
|
||||
|
||||
bool beginWithMuteFlag=false;
|
||||
// TODO: <20><><EFBFBD><EFBFBD> muteAll <20><> unmuteAll <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD>
|
||||
void muteAll(){ // ĿǰЧ<C7B0><D0A7>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ѹ<EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
// keybd_event(VK_SPACE, 0, 0, 0); Sleep(1);
|
||||
// keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);
|
||||
}
|
||||
void unmuteAll(){muteAll();}
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
|
||||
inline bool judgeEarlyMorning(){
|
||||
time_t now = time(0);
|
||||
tm *ltm = localtime(&now);
|
||||
if(ltm->tm_hour==4&<m->tm_min<5)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD>
|
||||
string getForegroundTitle(HWND hwnd){
|
||||
char title[1024];
|
||||
if (hwnd == NULL) return "";
|
||||
if(GetWindowTextA(hwnd, title, 1024) == 0){
|
||||
logFile<<getTimeStr()<<"- WARN: GetWindowTextW failed at hwnd: "<<hwnd<<endl;
|
||||
logFile<<getTimeStr()<<"- WARN: Error content: "<<GetLastError()<<endl;
|
||||
return "";
|
||||
}
|
||||
return (string)title;
|
||||
}
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool inBlackList(string title){
|
||||
if(title=="") return false;
|
||||
bool isInBlackList = false;
|
||||
for(string blackTitle:blackList)
|
||||
if(title.find(blackTitle)!=string::npos)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
// <20>رչ<D8B1><D5B9>̣<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ӵIJ<D3B5><C4B2><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>û<EFBFBD>˼<EFBFBD><CBBC><EFBFBD>Ƿ<EFBFBD>Ӧ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool closingGame(HWND hwnd){
|
||||
bool isContinue = MessageBoxA(hwnd, "<EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_YESNO) == IDYES;
|
||||
if(!isContinue) return false;
|
||||
MessageBoxA(hwnd, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷѡ<EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>취<EFBFBD><EFBFBD>", MB_OK);
|
||||
for(int i=PUNISH_CLICKS+rand()%(PUNISH_CLICKS_RND+1);i>0;i--){
|
||||
if(rand()&1) isContinue = MessageBoxA(hwnd, "<EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>һ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>Եı<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>ȷ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>", MB_YESNO) == IDYES;
|
||||
else isContinue = MessageBoxA(hwnd, "<EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>һ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>Եı<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>ȡ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>", MB_YESNO) == IDNO;
|
||||
if(!isContinue){
|
||||
MessageBoxA(hwnd, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㲢û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><EFBFBD><EFBFBD>", "̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
map<HWND,thread> warningSet;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>Գ<EFBFBD><D4B3><EFBFBD>
|
||||
void operateTimeExceeded(HWND hwnd){
|
||||
logFile<<getTimeStr()<<"- WARN: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䳬<EFBFBD><E4B3AC>"<<MAX_BLACKLIST_TIME_COUNT<<"<EFBFBD>룬<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
||||
if(warningSet.find(hwnd)!=warningSet.end()) return;
|
||||
warningSet[hwnd] = thread([hwnd](){
|
||||
muteAll();
|
||||
if(closingGame(hwnd)){
|
||||
MessageBoxA(hwnd, "<EFBFBD>ðɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷʵ<EFBFBD>м<EFBFBD><EFBFBD>£<EFBFBD>ȥæ<EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD>", MB_OK);
|
||||
blackListTimeCount = MAX_BLACKLIST_TIME_COUNT - TOLENT_MORE_TIME;
|
||||
}else{
|
||||
MessageBoxA(hwnd, "<EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>첻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD>ƹص<EFBFBD><EFBFBD><EFBFBD>","True Ending",MB_OK);
|
||||
Sleep(5*1000);
|
||||
PostMessageA(hwnd, WM_CLOSE, 0, 0);
|
||||
}
|
||||
unmuteAll();
|
||||
warningSet.erase(hwnd);
|
||||
});
|
||||
warningSet[hwnd].detach();
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѳ<EFBFBD><D1B3><EFBFBD>
|
||||
void operateTimeWarning(HWND hwnd,string warningMsg){
|
||||
logFile<<getTimeStr()<<"- INFO: <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD>"<<blackListTimeCount<<"<EFBFBD>룬<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ѳ<EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
||||
if(warningSet.find(hwnd)!=warningSet.end()) return;
|
||||
warningSet[hwnd] = thread([hwnd,warningMsg](){
|
||||
muteAll();
|
||||
MessageBoxA(hwnd, warningMsg.c_str(), "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK);
|
||||
unmuteAll();
|
||||
warningSet.erase(hwnd);
|
||||
});
|
||||
warningSet[hwnd].detach();
|
||||
}
|
||||
int main(){
|
||||
initMonitor();
|
||||
while(true){
|
||||
if(judgeEarlyMorning())
|
||||
blackListTimeCount = 0;
|
||||
HWND hwnd = GetForegroundWindow(); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
||||
string title=getForegroundTitle(hwnd); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>
|
||||
if(inBlackList(title)){ // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
blackListTimeCount++;
|
||||
if(blackListTimeCount>=MAX_BLACKLIST_TIME_COUNT)
|
||||
operateTimeExceeded(hwnd);
|
||||
else if (blackListTimeCount%600==0)
|
||||
operateTimeWarning(hwnd,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>£<EFBFBD>");
|
||||
else if (blackListTimeCount%300==0)
|
||||
operateTimeWarning(hwnd,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>Ϣ");
|
||||
}
|
||||
Sleep(1000); // <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
|
||||
static int clockCount = 0; // <20>浵<EFBFBD><E6B5B5>ʱ<EFBFBD><CAB1>
|
||||
if((++clockCount)%60==0) // ÿ<><C3BF><EFBFBD>Ӵ浵һ<E6B5B5><D2BB>
|
||||
saveData();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
2
template.env
Normal file
2
template.env
Normal file
@@ -0,0 +1,2 @@
|
||||
# <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϊ .env<6E><76><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>Ŀ<EFBFBD><C4BF>Ŀ¼<C4BF><C2BC>
|
||||
BLACK_LIST = "ProgramName" "\"ProgramWithQuotesAndBackSlashes\"\\"
|
||||
Reference in New Issue
Block a user