QQ登录

只需一步,快速开始

193上位机VC MFC实现开机自动运行功能

[ 复制链接 ]

193上位机VC MFC实现开机自动运行功能

193上位机VC MFC实现开机自动运行功能
193上位机VC MFC实现开机自动运行功能
功能展示
很多软件在电脑启动时也会随之启动运行,比如360电脑一开机就运行,比如腾讯QQ可以设置开机自动运行,我们当前例程也实现自己编写的程序在电脑开机自动运行功能,效果如图;
要点提示
程序开机自动运行功能分为两步:
1.用函数RegCreateKey()创建注册表Software\\Microsoft\\Windows\\CurrentVersion\\Run路径;
2.再用函数RegSetValueEx()将要自动启动程序的绝对路径写入以注册表中便可;此函的第二参数为程序名,如例程程序名为gkbc8 第五参数为程序的绝对路径;
一,RegCreateKey(
hKey Long//要打开项的句柄,或者一个标准项名
lpSubKey String//欲创建的新子项。可同时创建多个项,只需用反斜杠将它们分隔开即可。例如 level1\level2\newkey
phkResult Long//指定一个变量,用于装载新子项的句柄
)函数用于创建或打开注册表项。默认为创建,当注册表中有此项时。为打开
二, LONG RegSetValueEx(
    HKEY hKey,
    LPCTSTR lpValueName,
    DWORD Reserved,
    DWORD dwType,
    CONST BYTE *lpData,
    DWORD cbData
);
hKey一个已打开项的句柄,或指定一个标准项名。
lpValueName指向一个字符串的指针,该字符串包含了欲设置值的名称。
若拥有该值名称的值并不存在于指定的注册表项中,则此函数将其加入到该项。如果此值是NULL,或指向空字符串,
则此函数为该项的默认值或未命名值设置类型和数据。
Reserved保留值,必须强制为0。
dwType指定将被存储的数据类型,
该参数可以为
REG_BINARY 任何形式的二进制数据
REG_DWORD 一个32位的数字
REG_DWORD_LITTLE_ENDIAN 一个“低字节在前”格式的32位数字
REG_DWORD_BIG_ENDIAN 一个“高字节在前”格式的32位数字
REG_EXPAND_SZ一个以0结尾的字符串,该字符串包含对环境变量 如“%PAHT”)的未扩展引用
REG_LINK 一个Unicode格式的带符号链接
REG_MULTI_SZ 一个以0结尾的字符串数组,该数组以连接两个0为终止符
REG_NONE 未定义值类型
REG_RESOURCE_LIST 一个设备驱动器资源列表
REG_SZ一个以0结尾的字符串
lpData指向一个缓冲区,该缓冲区包含了欲为指定值名称存储的数据。
cbData指定由lpData参数所指向的数据的大小,
单位是字节。
实现功能
1.新建基于对话框的应用程序
2.拖拽一按钮实现重启电脑测试用,添加自定义函数GetPrivilege()获取重启电脑权限用,此函数在程序初始时调用一下;
拖拽一选择框Id为IDC_CHECK1用于选择是否自动运行程序,双击关联选择触发函数
  1. void CGkbc8Dlg::GetPrivilege()//获得权限
  2. {
  3.         static HANDLE hToken;   
  4.         static TOKEN_PRIVILEGES tp;
  5.         static LUID luid;                                                               
  6.         OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
  7.         LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
  8.         tp.PrivilegeCount =1;
  9.         tp.Privileges [0].Luid =luid;
  10.         tp.Privileges [0].Attributes =SE_PRIVILEGE_ENABLED;
  11.         AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),NULL, NULL);
  12. }

  13. void CGkbc8Dlg::OnReboot() //重启
  14. {
  15.         ExitWindowsEx(EWX_REBOOT,0);        
  16. }
复制代码
  1. void CGkbc8Dlg::OnCheck1()
  2. {
  3.         char buf[MAX_PATH];
  4.         ::GetModuleFileName(NULL,buf,MAX_PATH);//EXE此程序的绝对路径
  5.         //
  6.         CString skey= "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
  7.         HKEY sub;
  8.         ::RegCreateKey(HKEY_LOCAL_MACHINE,skey,&sub);
  9.         //
  10.         CButton* pCheck = (CButton*)GetDlgItem(IDC_CHECK1);
  11.         if(pCheck->GetCheck()==0)//未选中
  12.                 ::RegSetValueEx(sub,"gkbc8",NULL,REG_SZ,(const BYTE*)buf,MAX_PATH);
  13.         else if(pCheck->GetCheck()==1)//选中开机自动运行
  14.                 ::RegDeleteValue(sub,"gkbc8");
  15. }
复制代码
3.在WIN7上运行时还得以管理员权限运行,或加载例程RES目录下AppName.exe.manifest文件到工程文件夹名设置为24,资源ID改为1,重新编译便可;
我们来演示整个功能实现过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:193.上位机VC MFC实现开机自动运行功能.rar 
文件大小:137.56 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索