配置文件操作(获取路径、及取得相应数据)
1.获取当前dll或者exe的路径:
方法一、
void GetNowDllPath(CString & strPath)
{
Char szPath[100]={0};
CWinApp *pApp = AfxGetApp();
//szPath结果看下面示例截图,一目了然;pApp->m_hInstance为当前模块的句柄
GetModuleFileName(pApp? pApp->m_hInstance: NULL, szPath, sizeof(szPath));
Char *pDest = strrchr(szPath, ‘\\’);//找到字符串szPath中最后一个单斜线的位置
If(pDest != NULL)
{
*pDest = ‘\0’;//最后一个单斜线的位置,置为结束符
}
strPath = szPath;
}
方法二、
void GetNowDllPath(CString & strPath)
{
char szPath[260]={0};
GetCurrentDirectory(511,szPath);
CString dllHome;
dllHome = szPath;
int p1 = dllHome.ReverseFind('/');
int p2 = dllHome.ReverseFind('\\');
int pos = max(p1,p2);
if(pos > 0)
dllHome = dllHome.Left(pos+1);
strPath = dllHome;
}
GetModuleFileName 与 GetCurrentDirectory 区别:
GetModuleFileName 函数指定当前进程模块的路径.它仅仅操作当前进程下的模块.如果想获取其他进程下的模块信息, 则需使用 GetModuleFileNameEx 函数。
GetCurrentDirectory 返回当前进程的当前目录,并不一定返回你的应用程序的目录。如果你在应用程序中调用了打开文件对话框,你选择了一个文件,那么,这个文件所在的目录就成了当前进程的当前目录了。
2.获取当前DLL下配置文件的信息:
CString HomePath;
GetNowDllPath(HomePath);
CString InitPath = HomePath + “\\scistock.ini”;
Char g_szMongoDBHost[128]={0};
Int g_nMongoDBPort = 0;
GetPrivateProfileString(“MongoDB”, ”HOST”, “127.0.0.1”, g_szMongoDBHost , 128, IniPath);
g_nMongoDBPort = GetPrivateProfileInt(“MongoDB”, “PORT”, 27017, IniPath);
示例图片:


GetPrivateProfileString、GetPrivateProfileInt的原型: DWORD GetPrivateProfileString( LPCTSTR lpAppName, //配置文件的section名 LPCTSTR lpKeyName, //配置文件的key名 LPCTSTR lpDefault, //默认返回值 LPTSTR lpReturnedString, //返回值 DWORD nSize, //返回值最大长度 LPCTSTR lpFileName //配置文件路径 ); UINT WINAPI GetPrivateProfileInt ( _In_LPCTSTR lpAppName, //配置文件的section名 _In_LPCTSTR lpKeyName, //配置文件的key名 _In_INT nDefault, //默认返回值 _In_LPCTSTR lpFileName //配置文件路径 );
配置文件截图:


浙公网安备 33010602011771号