每次开机看到360的开机小助手,都非常羡慕,要是自己写一个多好啊。

今天,pearry就带大家来自己动手写开机小助手。

主要知识:

1.获取系统运行时间

涉及的API函数:GetTickCount() //获取系统运行时间(毫秒)

2.计时器

每秒刷新数据。

涉及的API函数:SetTimer、KillTimer

3.获取文件路径

设置开机启动时使用

涉及的API函数: GetCurrentDirectory(); //获取程序的当前目录

4.注册表操作

添加注册表到自动启动项、删除注册表。

涉及的API函数:

打开注册表:RegOpenKeyEx

设置注册表项:RegSetValueEx

删除指定值:RegDeleteValue

了解了这些,我们就可以动手开始编写代码了。

建立MFC项目,我这里叫WinStart。

布置界面,如下图一:

在WinStartDlg.h中添加函数声明void GetTimer(); //用来获取运行时间

在CPP文件中实现:

voidCWinStartDlg::GetTimer()
{
CString s;
DWORDk=::GetTickCount();//获取毫秒级数目
inthm=k/3600000;//hm为小时数
intms=(k-3600000*hm)/60000;//ms为分钟数
intse=(k-3600000*hm-60000*ms)/1000;//se为秒数(除以1000是因为k精确到毫秒)   
s.Format("%d:%d:%d",hm,ms,se);//输出时、分、秒
const char* ch = (LPCTSTR)s;
SetDlgItemText(IDC_EDIT1,ch);
}

 

在初始化函数BOOL CWinStartDlg::OnInitDialog()中添加计时器:

 

this->SetTimer(0,1000,NULL);

 

然后用类向导建立消息响应函数OnTimer来响应SetTimer发出的WM_TIMER:

voidCWinStartDlg::OnTimer(UINTnIDEvent)
{
// TODO: Add your message handler code here and/or call default
GetTimer();
CDialog::OnTimer(nIDEvent);
}

 

在OnCancel中KillTimer:

voidCWinStartDlg::OnCancel()
{
// TODO: Add extra cleanup here
this->KillTimer(0);
CDialog::OnCancel();
}

这样,一个基本的程序就做好了。下面我们来导入注册表,设置它为开机启动。

首先我们来获取当前程序路径,放到“导入注册表”按钮中实现:

charpBuf[MAX_PATH];       //存放路径的变量
GetCurrentDirectory(MAX_PATH,pBuf);    //获取程序的当前目录
strcat(pBuf,"\\");
strcat(pBuf,AfxGetApp()->m_pszExeName);
strcat(pBuf,".exe");

然后,开始注册表操作,首先在指定项下创建一个键值:

HKEY hKey;
//添加注册表,并且打开
RegCreateKey(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
&hKey);
//设置值
inttemp = RegSetValueEx(hKey,_T("WinStart"), 0,REG_SZ, _T((unsignedchar*)ch),strlen(ch) );
if(temp == 0)
{
MessageBox(_T("导入注册表成功!"));
RegCloseKey(hKey);
}
else
{
MessageBox(_T("导入失败!"));
}

这样我们导入功能就实现了。接下来我们来完成“删除注册表”按钮:

void CWinStartDlg::OnButton2()
{
// TODO: Add your control notification handler code here
HKEY hKey;
//打开注册表
if(ERROR_SUCCESS !=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE ,&hKey))
{
MessageBox(_T("打开注册表失败,或不存在该项!"));
}
else
{
if(!RegDeleteValue(hKey,"WinStart"))
{
MessageBox(_T("删除注册表成功!"));
RegCloseKey(hKey);
}
else
{
MessageBox(_T("删除失败!"));
}
}
}

好了,我们的功能就这样基本实现了 ,赶快自己动手试试吧

欢迎拍砖~~~

自制360开机小助手相关推荐

  1. 360开机小助手的广告怎么关

    360开机小助手是360内的一款小工具,主要可以进行开机提速,清理掉无效的启动项.服务项,改善开机时间等等操作.那有用户问360开机小助手的广告怎么关?经常弹出的广告非常烦人.那么下面小编就来讲讲关闭 ...

  2. 原生js仿360开机小助手

    本篇博客的技术点关键在于解析json数组.动画原理.函数的封装思想和获取元素的属性等方面也是比较综合的一个案例了.学习一下对于知识点的整合很有必要. 下面贴出html的相关代码如下.注释非常详细,相信 ...

  3. 360开机小助手js循环效果出现的问题

    360开机小助手js循环效果 这里我想用这个案例探讨一下onclick和addEventListener嵌套问题,下面是案例的整体代码 <style>.box {width: 322px; ...

  4. 腾讯指责开机小助手缘于怕网民有知情权

    近期,腾讯公司通过官方微博.博客等多种方式称360对QQ电脑管家实施一键优化.360公司回应称,使用360安全卫士开机加速功能,禁止多余软件的开机启动项,完全是用户由自己选择和操作.腾讯公司之所以强烈 ...

  5. 将“360软件小助手添加到“快速启动栏”

    1)将"360软件小助手添加到"快速启动栏" 点击"360"-->软件管家-->在"软件管家"的右下角找到" ...

  6. 居家学习python自制闹铃小助手

    闹铃小助手 为了建立学习的仪式感,我自己写了一套程序,尽可能让自己避免外界因素的干扰,以达到专注的目的.现在我把代码写到博客上,与大家一起分享一下. 注意:windows下使用playsound需要修 ...

  7. win7关闭开机启动项_老司机给你传授 win7系统设置开机不启动360安全卫士只启动软件小助手的图文教程 -win7系统使用教程...

    win7旗舰版是用户量最大的一款操作系统:有不少人在使用中都遇见了win7系统设置开机不启动360安全卫士只启动软件小助手的问题,太多的用户是不想看到win7系统设置开机不启动360安全卫士只启动软件 ...

  8. 乐鑫M5GO自制睡眠小助手!新手。。。轻打脸

    M5GO自制睡眠小助手!新手...轻打脸 这一款是基于乐鑫的M5GO Lite,以及相关传感器. 编译平台选择的是UIFlow,模块性编译,好上手,对新手比较友好!下附地址: https://flow ...

  9. 360左下角软件小助手--壁纸的存储路径

    360左下角软件小助手–壁纸的存储路径 存储路径 C:\Users%USERNAME%\AppData\Roaming\360Safe\360SoftMgrLite\SMLSkin 当前使用壁纸 Ba ...

最新文章

  1. [九度][何海涛] 乐透之猜数游戏
  2. 存储服务器配置型号,存储服务器配置要求指什么
  3. Connected to an idle instance问题的小小仇恨
  4. 高性能服务器机柜,TS系列网络服务器机柜
  5. kubernetes 启动_如何启动和组织Kubernetes聚会
  6. java simpleentry_使用Java流生成对象
  7. 拖后腿了吗?工信部称8兆以上宽带占比44.4%
  8. 使用envi将遥感数据从uint16转为uint8
  9. 通用数据库连接工具--DbVisualizer的使用
  10. NB-IoT无线通信模块与Lora无线通信协议技术分析与前景展望
  11. 美国邮编大全及邮政编码规范
  12. lg相乘公式_ln公式(lg公式大全)
  13. 下载flash文件的若干方法!
  14. 美国最受欢迎的婴儿名字:女孩Sophia和男孩Liam
  15. 5分钟带你了解Python中的容器型数据类型--列表1
  16. 滴滴夜莺发布v3.3.0版本
  17. 2019牛客多校第九场 H Cutting Bamboos (二分主席树)
  18. 命令行导入mysql数据库
  19. 中国移动国际iSolutions:中国首张覆盖全球的云网络
  20. DML、DDL、DCL、CRUD指什么?

热门文章

  1. 仿百度壁纸客户端(一)——主框架搭建,自定义Tab+ViewPager+Fragment
  2. IDEA一些常用的插件
  3. 武汉ISO27001认证需满足这个硬性要求才能快速通过
  4. Linux下.gz和.tar.gz文件解压方法
  5. brupsuite靶场 学徒等级 sql注入篇
  6. Windows10右下角通知中心没有反应
  7. 电磁力电子分析称重传感器模块故障排除与维护保养
  8. (俄)快车AM3 140.0°E
  9. 原来我们很努力,也不过是为了过上普通生活.....
  10. Python调用,爬虫JS逆向——ajax类型数据,数据加密获取步骤和方法(二)