在主main()里,我用GetCurrentDirectory调用时,获得的却是dll里的debug路径
请问高手,我应该怎样才能获得主main的路径呢

解决方案 »

  1.   

    取得当前进程的id,然后得到进程handle,然后EnumProcessModules,对每个module调用GetModuleFileNameEx,得到module的名称。一般最后名称为exe的就是你要的。但是这个方法不能绝对保证你得到的结果是正确的。有可能该进程模块了有两个exe,一般情况下也可以凑合用。另外就是让exe自己取得路径告诉dll。
      

  2.   

    GetModuleBaseName
    EnumProcessModules
    这些函数使用时,需要加些什么东西吗,为什么编译的时候undeclared identifier
      

  3.   

    Cannot open include file: 'Psapi.h': No such file or directory
      

  4.   

    恩恩恩
    vc6是没有,sdk和Microsoft Visual Studio .NET 2003都有。
    如果你装了的话,直接include他们的,同时还有相应的lib如果没有的话就要用LoadLibrary和GetProcAddr来取得了。这两个函数在psapi.dll里。
    指针可以这样定义:
    BOOL (WINAPI *lpfEnumProcessModules)( HANDLE, HMODULE *,DWORD, LPDWORD );
    DWORD (WINAPI *lpfGetModuleFileNameEx)( HANDLE, HMODULE,LPTSTR, DWORD );