不管对大家是否有用,起码我需要用到。
因为是需要在注入后的 DLL 中获取 DLL 的全路径,在 DLL 中使用 GetCurrentDirectory 得到的是注入后的
进程的路径而不是 DLL 的路径,转而求其次,刚好找到有根据窗口句柄找进程路径的资料,于是将注入
器 EXE 的句柄传给 DLL,然后在 DLL 中调用下面的函数从而获得该路径。
有更好方法的同学请不吝指教。
//根据窗口句柄获取该窗口 EXE 文件的全路径,成功返回 0,失败返回 GetLastError()的值
int GetExePathFromHWND(HWND hwnd, CString& ExePath)
{
TCHAR szPath[MAX_PATH];
int ErrorCode = 0;
DWORD idProcess;
GetWindowThreadProcessId(hwnd, &idProcess);
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE, idProcess );
if( NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if( EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &cbNeeded ) )
{
DWORD dw = GetModuleFileNameEx( hProcess, hMod, szPath, MAX_PATH );
if(dw > 0)
{
//printf("szPath: %S ", szPath);
//MsgBox(szPath);
- 1
- 2
前往页