新年所做,一个进程结束小软件的完成,及所用的知识,总结一下

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 

新龙年,大家新年快乐,更加牛...

故事背景嘛,是家里有台电脑,一些小屁孩都来家里玩,由于电脑是归老爸用的,看着一些小屁股用他的宝贝电脑,心痛,又不好说,更看不得别人用他的电脑玩游戏。

于是,身为程序员的我,发挥咱自力更生,自己动手的精神。

开发了这个小东西。


用到的有

ini文件操作

注册表操作

进程操作

一些UI设计(通知栏图标.....)


软件实现功能有
本地配置信息,在ini文件

读写注册表,注册开机启动

对配置添加的进程可以自动进行终止操作

操作权限,密码保护


软件截图

新年所做,一个进程结束小软件的完成,及所用的知识,总结一下_第1张图片




程序比较粗糙

新年练手了。



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 


你可能感兴趣的:(windows,Microsoft,ini,Access,Path)