该定时关机主要是三种定时模式(仅定时一次,每天一次和每周一次)和三种定时操作(定时关机,定时重启和定时注销)可以将其最小化到托盘或隐藏在后台运行,设置好以后按“设置定时”将使得定时选择按钮不可用,只有按“取消定时”后方能再重新设置定时参数,为了保证定时模式“每天一次”和“每周一次”能够正常关机,必须将关机的各种参数写到配置文件中去,这样才能让关机再开机后打开软件(在本软件中设置为开机启动)还能够“记得以前的设置”。

但是在本软件的开发过程中遇到了这样一个问题,我在如鹏网上也提出来了,就是软件开机自动启动时读取配置文件失败,经过多方查质料,先将相关知识讲一下:
用vc写程序时经常要获取程序的路径主要有以下三种方法
1,.\\是的到应用程序的当前目录,但当前目录不一定等于应用程序执行文件的所在目录,一个应用程序被启动时,当前目录是可以被任意设置的。
2,GetCurrentDirectory同.\\
3,GetModuleFileName()得到模块的完整路径名,例如,你载入c:\windows\system32\mfc.dll,得到模块句柄h,则你可以用GetModuleFileName()得到h模块的完整路径名
其中1和2获取的是路径名,而3获取的是全路径名(包括文件名)
这里我犯的错误就是用GetCurrentDirectory获取当前目录,但是请注意这里的目录不一定是当前可执行程序的目录,例如,开机该软件自动启动会创建一个Svhost.exe进程来运行本软件,那么 此时GetCurrentDirectory获得的路径就是C:\Windows\System32,这就是为什么正常情况下可以读取配置文件,但是关机重启以后就出现打开错误

那么应该怎样正确的获得配置文件的全路径名呢
方法有两种:
1.

//定义一个字符串数据,长度为MAX_PATH ,MAX_PATH是预定义的宏,一般是个数字常量如256
char szCurPath[MAX_PATH];GetModuleFileName(NULL,szCurPath,_MAX_PATH);char* p = szCurPath;while(strchr(p,'\\'))
{p = strchr(p,'\\');p++;
}*p = '\0';
CString strSwfname = szCurPath; 

szCurPath就是去除文件名的路径名
2.
用GetModuleFileName和_splitpath函数

TCHAR sthPath[MAX_PATH] ;                                      //程序本身路径
TCHAR szBuffer[MAX_PATH] ;                                     //临时存储可执行文件全路径
TCHAR szDrive[10] ;                                            //可执行文件盘符
TCHAR szDir[256] ;                                             //可执行文件目录
TCHAR szFilename[64] ;                                         //可执行文件文件名
TCHAR szExt[10] ;                                              //可执行文件文件后缀GetModuleFileName(NULL, szBuffer, MAX_PATH) ;
_splitpath(szBuffer, szDrive, szDir, szFilename, szExt) ;      //分割全路径
wsprintf(sthPath, "%s%sshutdown.dat", szDrive, szDir) ;        //得到配置文件路径    

最新定时关机软件可执行文件和源代码链接

原创,转载请注明来自http://blog.csdn.net/wenzhou1219

1.自动关机软件1.0-自动开机时如何获得全路径相关推荐

  1. 如何在计算机自动开机时选择用户,bios如何设置电脑定时自动开机/关机-bios设置电脑定时自动开机/关机的饭方法 - 河东软件园...

    许多熟悉电脑的用户对于"bios"一定不陌生,这是计算机的基本输入输出系统,它为用户提供了最基本的硬件/软件的设置与控制,在实际的使用中BIOS有许多的妙用,最简单的就是通过BIO ...

  2. android 4.0.3开机时不能收到广播

    ============问题描述============ 在android 4.0.3的手机上,receiver在手机开机后收不到启动广播,代码如下: 配置文件:    <receiver an ...

  3. Ubuntu18.04设置在开机时自动链接蓝牙键盘

    简介 系统升级到Ubuntu18.04时,启动后蓝牙键盘不能自动连接,需要虚拟键盘登录后手动连接蓝牙键盘后,才能正常使用.如何在开机时自动链接键盘? 查找蓝牙键盘的Address地址 在Setting ...

  4. Android开机时长优化

    文章目录 一.背景说明 二.开机流程介绍 三.分析方法&工具 3.1 手动秒表计时 3.2 bootchart 3.2.1 生成log文件 3.2.2 生成bootchart.png 3.2. ...

  5. php设置自动关机开机,设置电脑自动开机关机方法介绍

    有特殊需求的朋友会用到设置电脑自动开机,可以通过电脑自带的功能,也可以借助软件来实现电脑自动开机. 自动定时开机的实现:首先在启动计算机时,按"Delete"键进入BIOS界面.在 ...

  6. 计算机打开音乐,怎么让电脑自动开机播放音乐教程 以及自动关机计划任务设置...

    很多朋友问怎么在电脑关机的情况下使用闹钟软件,但是软件在关机的情况下是无法运行的,所以这是不可行的~~但是,我们却可以让电脑在指定的时间启动,然后再将闹钟设置为开机启动,就可以达到自动开机并启动的效果 ...

  7. 开机时自动运行shell_病毒究竟是怎么自动执行的(上)?

    电脑病毒一旦入侵到我们的电脑中,需要加载才能造成破坏,因为一个没有加载启动的病毒是没有什么危害的.那么,病毒在进入电脑系统之后,不通过用户双击,会有怎样的办法让自己自动加载执行呢? 我们今天就来看一下 ...

  8. 禁止开机时软件自启动的三种方法

    禁止开机时软件自启动的三种方法 目前常用的方法一般有三种:用软件禁止:用Windows命令禁止:直接修改注册表.那么就让我们分别来看一下. 一.使用软件禁止软件的自动启动 现在有很多的软件可以禁止开机 ...

  9. 计算机音乐夜里,电脑自动开机播放音乐叫你起床,并晚上自动关机

    电脑自动开机并播放音乐提醒你起床,并且晚上自动关机: 使用电脑的自动开机,哇,好爽,并且音乐可以随便你定哦,一天都有好的心情. 1.自动定时开机此功能需要在BIOS中设定,并且你的主板的高级电源管理设 ...

最新文章

  1. ios怎么安装python3.7_Python3、PyCharm的安装及使用方法(Mac版)
  2. Hadoop常见异常
  3. c# winform窗体如何设置才可以不能随意拖动大小
  4. 作业,输入名字密码,按dict插入到list,非法字符显示*
  5. AUCAD自定义[2006.9.22]
  6. 今天需要修复的bug
  7. Airflow 中文文档:数据分析
  8. JavaScript学习(四十三)—构造方法创建对象的图解和注意事项
  9. 轻量化神经网络篇(SqueezeNet、Xception、MobileNet、ShuffleNet)
  10. java lock可重入_一文彻底理解ReentrantLock可重入锁的使用
  11. LotusScript (转)
  12. 使用 Chrome Timeline 来优化页面性能 1
  13. splash : mouse_click()方法
  14. SNF快速开发平台2019-权限管理模型-记录级-字段级权限实践
  15. 我们错过了那么多机会,怎么办
  16. Cadence 简易使用教程
  17. Educoder头歌单总线CPU设计(定长指令周期3级时序)(HUST)谭志虎 华中科技大学计算机组成原理实验计算机硬件系统设计
  18. 期货成交量与持仓量(期货成交量与持仓量的秘密)
  19. TMC5160 静音驱动器
  20. 全国省份、地级市数据库

热门文章

  1. 让生活更智能,十款智能电表给你充充电
  2. 在markdown中使用LaTex数学公式
  3. ​​​​​​​测试用例编写指南
  4. 我是开源社 v.2020
  5. 网络营销实战课-文案实操2
  6. wps演示弧形文字框_wpsppt弧形文字怎么做
  7. 相继上一篇,thingsboard的二次开发环境配置和简单的logo替换
  8. qrobot开发总结之android手势识别
  9. 东华软件测试题,东华大学软件测试作业整理.docx
  10. Python 利用requests+BeautifulSoup4编写原生爬虫,爬取电影天堂最新电影,并打造最新电影下载及查询器