欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611
新龙年,大家新年快乐,更加牛...
故事背景嘛,是家里有台电脑,一些小屁孩都来家里玩,由于电脑是归老爸用的,看着一些小屁股用他的宝贝电脑,心痛,又不好说,更看不得别人用他的电脑玩游戏。
于是,身为程序员的我,发挥咱自力更生,自己动手的精神。
开发了这个小东西。
用到的有
ini文件操作
注册表操作
进程操作
一些UI设计(通知栏图标.....)
软件实现功能有
本地配置信息,在ini文件
读写注册表,注册开机启动
对配置添加的进程可以自动进行终止操作
操作权限,密码保护
软件截图
程序比较粗糙
新年练手了。
ini文件操作:部分代码
读取ini键值并修改
for(int i=0;i<10;i++) { CString indexStr,valueTmp2; indexStr.Format("pressName%d",i); GetPrivateProfileString("killInfo",indexStr,"默认",valueTmp2.GetBuffer(MAX_PATH),MAX_PATH,"c:\\killData.ini"); if(valueTmp2 == valueTmp) { ::WritePrivateProfileString("killInfo",indexStr,"","c:\\killData.ini"); loadIniFile(); return true; } }
HKEY hKEY; HKEY hKeyRoot = HKEY_LOCAL_MACHINE; long ret0=::RegOpenKeyEx(hKeyRoot,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hKEY); if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行 { AfxMessageBox("错误:无法打开有关的注册表信息!"); RegCloseKey(hKEY); return false; } unsigned char chbuf[100]; DWORD keyType = REG_SZ; //定义数据类型 DWORD DataLen = 100; //定义数据长度 CString KeyName = _T("PressKiller"); //要查询的键名称 long ret1 = ::RegQueryValueEx(hKEY,KeyName,NULL,&keyType,chbuf,&DataLen); CString tmpValue; tmpValue.Format("%s",chbuf); if(ret1!=ERROR_SUCCESS) { AfxMessageBox("没有该注册表信息,将创建此键值,请允许操作!"); //RegCloseKey(hKEY); //return false; } if (tmpValue != exeFilePath) { CString tmp = exeFilePath; LPCTSTR strValue = (LPCTSTR)tmp.GetBuffer(tmp.GetLength()); long ret = ::RegSetValueEx(hKEY,"PressKiller",0,REG_SZ,(const BYTE *)strValue,strlen(tmp) + 1); if(ret !=ERROR_SUCCESS) { AfxMessageBox("错误:无法查询有关的注册表信息"); RegCloseKey(hKEY); return false; } } RegCloseKey(hKEY);
HANDLE han= ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //取进程快照 PROCESSENTRY32 lpp; lpp.dwSize =sizeof(PROCESSENTRY32); BOOL bo; bo=::Process32First(han,&lpp); //从快照里取第一个进程信息 TCHAR *str1,*str2; while(bo) { str1=lpp.szExeFile ; str2=_strlwr(str1); CString pressNameTmp = str2; //-----判断是否aa.exe pressNameTmp.MakeLower(); if(pressNameTmp.Find(pressName) != -1) { HANDLE hantmp=::OpenProcess(PROCESS_TERMINATE,TRUE,lpp.th32ProcessID); //取进程实例 ::TerminateProcess(hantmp,4); //关闭 } bo=::Process32Next(han,&lpp); //取下一个进程信息 } ::CloseHandle(han); //关闭快照
主要是让自己又接触到了以前比较少接触的代码。
1天完成了
1天修改BUG,完善。
然后就跑在家里的机器上面了。。。
以后有时间,维护一下。
程序下载地址请看评论地址。。。。。
转载请注明来源
muxin_hp的博客
http://blog.csdn.net/xinmuba
欢迎各位一起交流
欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611
欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611