谁知道如何用GetModuleFileName函数获得一个应用程序的路径?还有其它的方法吗?最好能给出代码。

解决方案 »

  1.   

    //取得启动路径
    memset( m_szStartPath, 0, 256 );
    GetModuleFileName( NULL, m_szStartPath, 240 );
    char * p = strrchr( m_szStartPath, '\\' ) + 1;
    *p = 0;
      

  2.   

    CString appPath;
    GetModuleFileName(NULL, appPath.GetBuffer(MAX_PATH), MAX_PATH);
    //注:使用该API函数得到的是程序文件完整路径文件名,去掉文件名后才是路径。
    appPath.ReleaseBuffer();
    int n = appPath.ReverseFind('\\');
    appPath = appPath.Left(n);
    TCHAR c = appPath.GetAt(n - 1);
    if(c != '\\') appFile  += "\\";
    //得到的路径名是以 "\\"结尾的
      

  3.   

    CString CDlgs::GetAppPath()
    {
    CString strPath;
    char appPath[240];
    GetModuleFileName( NULL, m_szStartPath, 240 );
    int i=strPath.GetLength();
    while((strPath.Right(1)!="\\")&&i>0)
    {
      i--;
      strPath=strPath.Left(i);
    }
    return strPath;
    }
      

  4.   

    啊!真的很感谢大家。但是各位所说的方法都使用了GetModuleFileName( NULL,...);这种形式。人为地设定了其第一个参数为NULL,而且都查找的是自身应用程序的路径。其实...其实...我想要的是如何获得其他应用程序所在的路径。比如:我编写的程序为A,同时存在一个正在运行的程序B;那么我就是要在A中查出B的路径。
    现在我的意思该是讲清楚了,希望能给我答复。
    还是在这里谢谢大家的关心了!!
      

  5.   

    使用以下几个API就能搞定:(最后匹配一下你的exe名字即可)
    EnumProcesses
    OpenProcess
    EnumProcessModules
    GetModuleFileNameExA