MFC如何通过窗口句柄获取窗口信息(名称)。

问题是这样。我想监控进程中某一程序,并且获取该程序的运行相关信息。我首先通过进程名找到该进程的窗口句柄,代码如下:HANDLEGetProcessHandle(intnI... 问题是这样。
我想监控进程中某一程序,并且获取该程序的运行相关信息。
我首先通过进程名找到该进程的窗口句柄,代码如下:
HANDLE GetProcessHandle(int nID)
{
return OpenProcess(PROCESS_ALL_ACCESS, FALSE, nID);
}

HANDLE GetProcessHandle(LPCTSTR pName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hSnapshot) {
return NULL;
}
PROCESSENTRY32 pe = { sizeof(pe) };
BOOL fOk;
for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)) {
if (!_tcscmp(pe.szExeFile, pName)) {
CloseHandle(hSnapshot);
return GetProcessHandle(pe.th32ProcessID);
}
}
return NULL;
}
假设,我现在要获取PPT程序的窗口句柄,则我执行:
HANLDE hprocess = GetProcessHandle("POWERPNT.EXE");
之后,就已经能将该PPT程序的窗口句柄获取下来存储到hprocess中了吧。
下面我如何利用上面得到的信息获取这个窗口的名字呢?
不用GetActiveWindow()等函数,因为那个窗口不一定在最前端。
还麻烦帮忙解决一下问题,不知道我前面获取进程中某一程序的句柄是否也有问题,如果有问题,还麻烦帮忙一起订正一下吧,谢啦。
展开
 我来答
gamespy1991
推荐于2016-02-14 · TA获得超过1262个赞
知道小有建树答主
回答量:1636
采纳率:0%
帮助的人:1202万
展开全部
有效。
获得进程主窗口的方法:
EnumWindows:http://msdn.microsoft.com/en-us/library/ms633497(VS.85).aspx
其中第一个参数是自定义的回调函数EnumWindowsProc的地址,详见http://msdn.microsoft.com/en-us/library/ms633497(VS.85).aspx

EnumWindowsProc的第一个参数就是枚举到的窗口句柄,然后用GetWindowText获得窗口标题
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式