写
WritePrivateProfileStringA
BOOL WritePrivateProfileStringA(
[in] LPCSTR lpAppName, 区域的名字
[in] LPCSTR lpKeyName, 键名
[in] LPCSTR lpString, 键值 ,如果为NULL,则删除键名
[in] LPCSTR lpFileName 配置(ini)文件的地址
);
读
GetPrivateProfileStringA
DWORD GetPrivateProfileStringA(
[in] LPCSTR lpAppName, 区域的名字
[in] LPCSTR lpKeyName, 键名
[in] LPCSTR lpDefault, 如果键名不存在默认返回的值 eg: not found
[out] LPSTR lpReturnedString, 传出键值
[in] DWORD nSize, 读取大小
[in] LPCSTR lpFileName 配置(ini)文件的地址
);
此外还有 GetPrivateProfileInt ,GetPrivateProfileSection ,GetPrivateProfileSectionA 等。
此外相关一些api函数:
获取当前进程的目录GetCurrentDirectoryA
DWORD GetCurrentDirectory(
[in] DWORD nBufferLength, 读取长度
[out] LPTSTR lpBuffer 传出地址
);
获取当前进程的模块文件路径GetModuleFileNameA
DWORD GetModuleFileNameA(
[in, optional] HMODULE hModule, 加载的模块句柄,为NULL默认读取进程的可只执行文件
[out] LPSTR lpFilename, 传出参数
[in] DWORD nSize 读取大小
);
若要查找由另一个进程加载的模块的文件,请使用 GetModuleFileNameEx 函数。
例程代码
#include<windows.h>
#include<stdio.h>
const char appName[] = "Good";
int main()
{
WritePrivateProfileStringA(appName, "count_1", "This is one", "./good.ini");
WritePrivateProfileStringA(appName, "count_2", "This is two", "./good.ini");
WritePrivateProfileStringA("Bad", "count_1", "This is one", "./good.ini");
char msg[256];
GetPrivateProfileStringA(appName, "count_1", "not found the key", msg, 256, "./good.ini");
printf("%s : count_1 -> %s\n", appName, msg);
GetCurrentDirectoryA(256, msg);
printf("file's ditectory is %s\n", msg);
GetModuleFileNameA(NULL, msg, 256);
printf("exe's name is %s\n", msg);
return 0;
}
配置文件