通过句柄获取执行文件路径 请问我错在那里了?(40分)

  • 主题发起人 beckjiang
  • 开始时间
B

beckjiang

Unregistered / Unconfirmed
GUEST, unregistred user!
HANDLE h;
char szname[1024];
HANDLE h2;
h=FindWindowA(NULL,"FlashFXP");
if (h==NULL)
return;
h2= (HINSTANCE)::GetClassLong(h,GCL_HMODULE);
if (h2==NULL)
return;
GetModuleFileName(h2, szname, 1024);
Edit3->Text = szname;
DWORD dwProcessId = NULL ;

GetWindowThreadProcessId(h,&dwProcessId);
if(dwProcessId == NULL)
{
return;
;
}
HANDLE hProcess = OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE,false,dwProcessId);
if(hProcess == NULL)
{
return;;
}
GetModuleFileNameEx(hProcess,h,szname,1024);
Edit4->Text = szname;
//---------------------------------------------------------------------------

这段代码执行下来以后,程序得到的两个值都是程序的路径,而不是FlashFXP相对应的路径,请问一下,为什么。通过GetModuleFileNameEx得到的路径前的盘符是个"?"号,而不是正常的盘符。
如:
GetModuleFileName得到的路径:
C:/Documents and Settings/Administrator/桌面/test/Project1.exe
GetModuleFileNameEx得到的路径:
?:/Documents and Settings/Administrator/桌面/test/Project1.exe
 
顶部