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

原创 2012年03月29日 22:18:51

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


但是在本软件的开发过程中遇到了这样一个问题,我在如鹏网上也提出来了,就是软件开机自动启动时读取配置文件失败,经过多方查质料,先将相关知识讲一下:
用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

版权声明:本文为博主原创文章,未经博主允许不得转载。

自动开机和自动关机设定方法(包括linux和windows)

注:与系统无关,开机 Del 进入BOIS。   (一) linux 机器   1.关机 :   编辑 /etc/crontab添加一条并且保证crontab服务的运行即可    f1...

【转】教你电脑自动开机并播放音乐提醒你起床,并且晚上自动关机

使用电脑的自动开机,哇,好爽,并且音乐可以随便你定哦,一天都有好的心     1.自动定时开机 此功能需要在BIOS中设定,并且你的主板的高级电源管理设置必须支持这个功能,不过现在大多数的主板...
  • shaoz
  • shaoz
  • 2011年08月26日 22:26
  • 233

自动开机和自动关机设定方法(包括linux和windows)

(一) linux 机器   1.关机 : 编辑 /etc/crontab添加一条并且保证crontab服务的运行即可  f1 f2 f3 f4 f5 root sudo shutdown...

让你的电脑具有自动开机关机功能

有些人想要让自己的电脑在早上可以在早上时叫我们起床,即使电脑实现闹钟功能,大家都会想到去下载一个程序让其每天定时为你放音乐——叫你起床,但这种程序大多都是要在开机情况下才能实现的,而我们不可能让电脑2...

井拾贰自动关机软件V1.0

  • 2007年11月14日 17:15
  • 196KB
  • 下载

实现笔记本电脑自动开机的软件

  • 2009年01月06日 20:44
  • 1.22MB
  • 下载

开机后自动关机的功能 .

首先定义一个什么事都不做的Activity,作为应用的启动Activity.这个Activity一定要定义的,要不然接收不到Broadcast的。 再来就是定义一个Broadcast类,可以收到an...

防沉迷限时定时自动关机1.0

  • 2016年07月01日 17:34
  • 479KB
  • 下载

java定时自动关机软件

编写了一个自动关机的小软件。在写这个软件的过程中,主要学习了java中时间的使用、简单多线程使用。 使用的IDE工具是netBeans,界面是用这个工具画的。许多教材都给新手介绍Eclipse,我...
  • peade
  • peade
  • 2015年07月11日 22:45
  • 332
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1.自动关机软件1.0-自动开机时如何获得全路径
举报原因:
原因补充:

(最多只允许输入30个字)