mfc 被调用的dll程序中能获取到调用该dll应用软件的途径吗

mfc 被调用的dll程序中能获取到调用该dll应用软件的路径吗
mfc 被调用的dll程序中能获取到调用该dll应用软件的路径吗?
如:
test.dll和一个app.exe,在app.exe加载完毕test.dll后,执行到test.dll中的代码后,我想在test.dll中获取app.exe的当前路径,能获取到吗?
------解决方案--------------------
GetModuleFileName试试。
------解决方案--------------------
GetModuleFileName
The GetModuleFileName function retrieves the full path and filename for the executable file containing the specified module. 

Windows 95: The GetModuleFilename function will return long filenames when an application's version number is greater than or equal to 4.00 and the long filename is available. Otherwise, it returns only 8.3 format filenames.

DWORD GetModuleFileName(
  HMODULE hModule,    // handle to module to find filename for
  LPTSTR lpFilename,  // pointer to buffer to receive module path
  DWORD nSize         // size of buffer, in characters
);
 
Parameters
hModule 
Handle to the module whose executable filename is being requested. If this parameter is NULL, GetModuleFileName returns the path for the file used to create the calling process. 
lpFilename 
Pointer to a buffer that is filled in with the path and filename of the given module. 
nSize 
Specifies the length, in characters, of the lpFilename buffer. If the length of the path and filename exceeds this limit, the string is truncated. 
Return Values
If the function succeeds, the return value is the length, in characters, of the string copied to the buffer.

If the function fails, the return value is zero. To get extended error information, call GetLastError. 

Remarks
If a module is loaded in two processes, its module filename in one process may differ in case from its module filename in the other process.

QuickInfo
  Windows NT: Requires version 3.1 or later.
  Windows: Requires Windows 95 or later.
  Windows CE: Unsupported.
  Header: Declared in winbase.h.
  Import Library: Use kernel32.lib.
  Unicode: Implemented as Unicode and ANSI versions on Windows NT.

See Also
Dynamic-Link Libraries Overview, Dynamic-Link Library Functions, GetModuleHandle, LoadLibrary 

 

------解决方案--------------------
GetModuleFileNameEx
The GetModuleFileNameEx function retrieves the fully qualified path for the specified module. 

DWORD GetModuleFileNameEx(
  HANDLE hProcess,    // handle to the process
  HMODULE hModule,    // handle to the module
  LPTSTR lpFilename,  // buffer that receives the path
  DWORD nSize         // size of the buffer
);
 
Parameters
hProcess 
Handle to the process that contains the module. 
hModule 
Handle to the module. 
lpFilename 
Pointer to the buffer that receives the fully qualified path to the module. 
nSize 
Specifies the size, in bytes, of the lpFilename buffer. 
Return Value
If the function succeeds, the return value specifies the length of the string copied to the buffer. 

If the function fails, the return value is zero. To get extended error information, call GetLastError. 

See Also
Process Status Helper Overview, PSAPI Functions, EnumProcesses, GetModuleBaseName 

 

------解决方案--------------------
可以看下这篇文章,http://www.codeproject.com/Articles/8810/Own-Crash-Minidump-with-Call-Stack,前段时间我也在弄这个,不过我的是这样子的,比如一个test.dll是被其他dll调用,就是要回溯,来判断那个dll是不是信任的,信任的才给调用我的函数。靠GetModuleFileName估计做不到,这个只能获取APP路径。