原帖及讨论:http://bbs.bccn.net/thread-160281-1-1.html /*控制主程序control.exe*/ #include<stdio.h> #include<string.h> #include<dos.h> #define MAX 100 typedef struct { char name[30]; char path[100]; char exename[30]; char taskname[30]; } list; list gamelist[MAX]; char password[20]; int recordnum; int points; char p[70]; int initcontrol() { FILE *input,*output; char temp[80]; int i; input=fopen("Control.ini","r"); output=fopen("Control.tmp","w"); while(!feof(input)) { fgets(temp,80,input); if(temp[0]!=';') fputs(temp,output); } fclose(input); fclose(output); input=fopen("Control.tmp","r"); fscanf(input,"%d",&recordnum); for(i=0;i<recordnum;i++) fscanf(input,"%s%s%s%s",gamelist[i].name,gamelist[i].path,gamelist[i].exename,gamelist[i].taskname); fclose(input); input=fopen("Control","r"); fscanf(input,"%d%s",&points,password); fclose(input); } int startgame(int time) { int n; int i; printf("/n请选择游戏:1-%d/n",recordnum); for(i=0;i<recordnum;i++) printf("%d.%s/n",i+1,gamelist[i].name); choice: scanf("%d",&n); if(n<=recordnum && n>0) { sprintf(p," %s %d",gamelist[n-1].taskname,time); spawnl(1,"D://control//break.exe",p,NULL); chdir(gamelist[n-1].path); system(gamelist[n-1].exename); } else { printf("序号错误!请重新选择/n"); goto choice; } } int main(void) { int i=0; int n; int time; FILE *output; initcontrol(); printf("SK-CHINA 2007-2008/n"); printf("游戏总控制程序/n"); printf("Game Control BY S.K/n"); printf("请选择/n1.使用点数/n2.输入家长控制密码/n"); scanf("%d",&n); if(n==1) { printf("现有点数:%d/n你游戏的每分钟将耗点数1/n",points); printf("请设定游戏时间 [单位:分钟]/n"); re: scanf("%d",&time); if(time>points) { printf("点数不够,请重新输入/n"); goto re; } points=points-time; output=fopen("Control","w"); fprintf(output,"%d/n%s",points,password); startgame(time); } if(n==2) { printf("/n请输入家长控制密码:"); while(p[i]=getch()) { if(p[i]==13) break; if(p[i]!='/b') { printf("*"); i++; } else { printf("/b /b"); i--; } } p[i]='/0'; if(strcmp(password,p)==0) { printf("/n密码通过!"); printf("请设定游戏时间 [单位:分钟]/n"); scanf("%d",&time); startgame(time); } else { printf("/n密码错误!按任意键退出"); getch(); exit(1); } } } /*控制关闭程序break.exe*/ DEV-CPP 32位C工程 #include<stdio.h> #include<dos.h> #include<string.h> int main(int argc,char **argv) { int t; int i; char s[100]; if(argc>2) { sscanf(argv[2],"%d",&t); sleep(t*60000); sprintf(s,"taskkill /im %s /f",argv[1]); system(s); } return 0; } /*学习控制器 study.exe 比较简陋的,有待更新*/ #include<stdio.h> #include<stdlib.h> #include<time.h> #include<dir.h> int main(void) { time_t time1,time2; int n; int x; int points; char path[100]; char password[20]; FILE *input,*output; printf("你可以通过学习英语获取游戏点数,每一分钟的学习将获得一点游戏点"); printf("/n是否学习?[1.学习 2.终止]"); scanf("%d",&n); if(n==1) { getcwd(path,100); chdir("D://ruanjian//New Oriental Soft//New Oriental Words 4//"); /*这是一个学习软件的路径*/ time1=time(NULL); system("Recite4.exe"); /*学习软件的程序名*/ time2=time(NULL); x=(int)(difftime(time2,time1)/60); chdir(path); input=fopen("control","r"); fscanf(input,"%d%s",&points,password); points=points+x; fclose(input); output=fopen("control","w"); fprintf(output,"%d/n%s",points,password); fclose(output); } return 0; } /* 控制配置 control.ini 可编辑*/ ;================================================================== ;================================================================== ;记录方式:注释→ “;”后 ;游戏控制总记录 ;================================================================== ;记录总数 4 ;================================================================== ;详细记录 ;记录方式: ;游戏名 ;游戏路径 ;应用程序名 ;进程名 三国群英传II D:/SANGO2/ Sango2.exe Sango2.exe 游戏王 D:/vba/ VisualBoyAdvance.exe VisualBoyAdvance.exe 超级玛莉 D:/control/ mario.exe ntvdm.exe 吃虫子 E:/Games/休闲类/吃虫子/ runturkeyrun.exe ZapSpot.exe ;================================================================== /*密码控制 点数控制 未加密 control*/ 100 123456 编译后组成文件共有5个 分别为control.exe break.exe study.exe control.ini control 完整程序包下载: 点击下载该文件 本程序为了控制孩子学习与游戏的度,可以说是一个可以使用的雏形,如果需要应该对control加上加密算法,study也有一定的简化,应该类似control也设置study.ini |