对Win.ini的访问
系统目录下的Win.ini是一种特殊的初始化文件,主要为系统提供初始化服务,在系统启动时将被系统所访问,并根据其所保存的参数值对系统进行配置。Windows专门提供了三个API函数GetProfileInt()、GetProfileString()和WriteProfileString()对Win.ini进行读写访问,其函数用法同访问私有初始化文件的那几个函数非常类似,只是不必再去指定初始化文件名。下面是这三个函数的原型声明:
UINT GetProfileInt(LPCTSTR lpAppName, // 节名地址 LPCTSTR lpKeyName, // 项名地址 INT nDefault // 在项名没有找到时返回的缺省值 ); DWORD GetProfileString(LPCTSTR lpAppName, // 节名地址 LPCTSTR lpKeyName, // 项名地址 LPCTSTR lpDefault, // 缺省字符串地址 LPTSTR lpReturnedString, // 存放字符串的缓存的地址 DWORD nSize // 缓存的大小 ); BOOL WriteProfileString(LPCTSTR lpAppName, // 节名地址 LPCTSTR lpKeyName, // 项名地址 LPCTSTR lpString // 要写入字符串的地址 ); |
只要对前面对私有初始化文件进行访问的代码稍加改动即可将程序的配置信息添加到Win.ini中,改动后的代码如下:
// 得到程序累计运行次数 UINT Time = GetProfileInt("PROGRAM", "RUNTIME", 0); // 得到上次运行日期 GetProfileString("DATE", "LAST", "2002-11-1", buffer, 1000); // 显示从初始化文件获取到的文件信息 sMsg.Format("本软件共运行过%d次,上次运行日期为%s", Time, CString(buffer)); AfxMessageBox(sMsg); // 累加运行次数,并保存到初始化文件 Time++; sTime.Format("%d", Time); WriteProfileString("PROGRAM", "RUNTIME", sTime); // 获取当前日期,并保存到初始化文件 CTime tm = CTime::GetCurrentTime(); sDate.Format("%d-%d-%d", tm.GetYear(), tm.GetMonth(), tm.GetDay()); WriteProfileString("DATE", "LAST", sDate); |
由于Win.ini文件是系统初始化文件,在程序没有运行前文件内不含“DATE”和“PROGRAM”等自定义的节以及其下各项,因此在程序第一次执行后,将由WriteProfileString()函数向Win.ini文件末尾创建相关节、项,并完成数据的写入。
|