我在练习DLL注入 ,下面是有关路径的问题
下面的代码是可以运行的         TCHAR tcPath[MAX_PATH];
TCHAR *lastPath = "dll.dll";
TCHAR *fullPath; GetModuleFileName(NULL, (LPTSTR)&tcPath, MAX_PATH);   
for   (size_t i = _tcslen(tcPath); i; i--)   
{   
if   (tcPath[i-1]  ==  _T('\\') || tcPath[i-1] == _T(':'))   
{   
tcPath[i] = 0;   
break;   
}   
} fullPath = strcat( tcPath, lastPath );

CString msg("");
msg.Format( "%s", fullPath );
MessageBox( msg );现在我想把上面封装成一个函数
在其他地方调用传入最后的路径 就可以得到全路径的函数static char* MakeFullPath( TCHAR *inputPath );
static BOOL MakeFullPath( TCHAR *fullPath, TCHAR *inputPath );这是我写的 但怎么样都不行
还有调用要怎么传入实参我写来写去都出去感觉对指针 引用 还有字符串的概念不熟悉;

解决方案 »

  1.   

    把函数声明改成:
    static BOOL MakeFullPath(TCHAR* fullPath);函数体改成:
    BOOL MakeFullPath(TCHAR* fullPath)
    {
        TCHAR tcPath[MAX_PATH]; 
        TCHAR *lastPath = "dll.dll"; 
         GetModuleFileName(NULL, (LPTSTR)&tcPath, MAX_PATH);  
        for  (size_t i = _tcslen(tcPath); i; i--)  
        {  
     if  (tcPath[i-1]  ==  _T('\\') || tcPath[i-1] == _T(':'))  
     {  
    tcPath[i] = 0;  
    break;  
     }  
        }     strcat( tcPath, lastPath ); 
        strcpy(fullPath,tcPath);
        CString msg(""); 
        msg.Format( "%s", fullPath ); 
        ::MessageBox(NULL,msg.GetBuffer(msg.GetLength()),_T("消息"),MB_OK);
        msg.ReleaseBuffer();
        return TRUE;
    }调用代码如下:
    TCHAR szPath[MAX_PATH]={0};
    MakeFullPath(szPath);