VC++如何获得文件路径?
我想用MFC编写一个程序,这个程序其中一个功能是打开另一个程序(被打开的程序和打开它的程序在同一个文件夹里面)。刚开始我用WinExec函数实现,但是WinExec函数的...
我想用MFC编写一个程序,这个程序其中一个功能是打开另一个程序(被打开的程序和打开它的程序在同一个文件夹里面)。
刚开始我用WinExec函数实现,但是 WinExec函数的路径是固定的,也就是说,如果文件夹被移动位置的话(例如从D盘移动到E盘),路径就不可用了。
所以我想我问问有没有一种函数可以打开一个指定程序(这个指定的程序与打开它的程序在同一个文件夹里)而不受路径的影响。 展开
刚开始我用WinExec函数实现,但是 WinExec函数的路径是固定的,也就是说,如果文件夹被移动位置的话(例如从D盘移动到E盘),路径就不可用了。
所以我想我问问有没有一种函数可以打开一个指定程序(这个指定的程序与打开它的程序在同一个文件夹里)而不受路径的影响。 展开
1个回答
展开全部
int GetProgramPathDir( char *szPath, const UINT nSize )
{
char szExePath[ MAX_PATH ]; //exe路径
char *pTemp = NULL; //指针
if( NULL == szPath || nSize < 1 )
{
return -2;
}
memset( szExePath, 0, sizeof( szExePath ));
int nRetSize = GetModuleFileNameA( NULL, szExePath, MAX_PATH );
if( 0 == nRetSize )
{
return -1;
}
if( nRetSize == MAX_PATH && GetLastError() == ERROR_INSUFFICIENT_BUFFER )
{
return -3;
}
pTemp = strrchr( szExePath, '\\' );
if( pTemp )
{
*pTemp = '\0';
}
if( strlen( szExePath ) > nSize )
{
return -3;
}
strncpy_s( szPath, nSize, szExePath, nSize );
return 0;
}
使用该函数获取exe文件目录。
{
char szExePath[ MAX_PATH ]; //exe路径
char *pTemp = NULL; //指针
if( NULL == szPath || nSize < 1 )
{
return -2;
}
memset( szExePath, 0, sizeof( szExePath ));
int nRetSize = GetModuleFileNameA( NULL, szExePath, MAX_PATH );
if( 0 == nRetSize )
{
return -1;
}
if( nRetSize == MAX_PATH && GetLastError() == ERROR_INSUFFICIENT_BUFFER )
{
return -3;
}
pTemp = strrchr( szExePath, '\\' );
if( pTemp )
{
*pTemp = '\0';
}
if( strlen( szExePath ) > nSize )
{
return -3;
}
strncpy_s( szPath, nSize, szExePath, nSize );
return 0;
}
使用该函数获取exe文件目录。
追问
关键是获得的路径中间是单斜杠(\)表示的,而打开文件的函数WinExec则需要的是双斜杠(\\),请问这个问题又该如何解决呢?
追答
连C语言下的转义都不明白吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询