得到一个窗口的句柄后,怎么才能得到这个可执行文件的路径?
解决方案 »
- NMCUSTOMDRAW消息可以改变字体颜色,如何改变字体大小?
- 如何下ATA Command讀寫SATA硬盤
- MSCOMM控件和线程问题
- 怎么去掉listctrl某项被选中时默认的阴影效果?
- 关于切分窗口的问题,请高手指点一定公平给分
- 200分求msc 5.0 or 6.0 的有效下载,或者发email夜可以
- 请问:执行编译时出现missing ';' before '*'错误是怎么回事。
- CListCtrl 与 CListView 有什么区别吗?
- mfc实现Ping功能时的时间问题
- 一个关于移动硬盘格式化的问题
- ★★★★★★请问如何从void函数中或过程中中途退出★★★★★★
- 请帮忙看一看这段代码
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
);
TCHAR szPath[MAX_PATH];
GetModuleFileName(handle, szPath, MAX_PATH);
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
);
1。GetWindowThreadProcessId()//获得进程ID
2。OpenProcess()//获得进程句柄
3。EnumProcessModules()//获得模块把柄
4。GetModuleFileNameEx()//获得应用程序路径
1。GetWindowThreadProcessId()//获得进程ID
2。OpenProcess()//获得进程句柄
3。EnumProcessModules()//获得模块把柄
4。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
);
需要的是进程的句柄,怎么办呢??怎么把窗口句柄转换成进程句柄??
2。OpenProcess()//获得进程句柄
3。EnumProcessModules()//获得模块把柄
4。GetModuleFileNameEx()//获得应用程序路径写的不是很详细吗?
GetModuleFileName(GetModuleHandle(NULL), buff, MAX_PATH);
clp:bool;
WinProcID:DWORD;
fp32:tprocessentry32;
fshandle:thandle; ...
GetWindowThreadProcessId(hwnd, @WinProcID);
fshandle:=CreateToolhelp32Snapshot(th32cs_snapprocess,0);
fp32.dwsize:=sizeof(fp32);
clp:=process32first(fshandle,fp32);
while (integer(clp)<>0) and (fp32.th32processid<>WinProcId) do
begin
clp:=process32next(fshandle,fp32);
end;
closehandle(fshandle);
...fp32.szexefile就是窗口(句柄为hwnd)对应的文件的文件说明符。祥见:
http://www.csdn.net/expert/topic/955/955153.xml?temp=.1657678