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()等函数,因为那个窗口不一定在最前端。
还麻烦帮忙解决一下问题,不知道我前面获取进程中某一程序的句柄是否也有问题,如果有问题,还麻烦帮忙一起订正一下吧,谢啦。 展开
我想监控进程中某一程序,并且获取该程序的运行相关信息。
我首先通过进程名找到该进程的窗口句柄,代码如下:
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()等函数,因为那个窗口不一定在最前端。
还麻烦帮忙解决一下问题,不知道我前面获取进程中某一程序的句柄是否也有问题,如果有问题,还麻烦帮忙一起订正一下吧,谢啦。 展开
1个回答
展开全部
有效。
获得进程主窗口的方法:
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获得窗口标题
获得进程主窗口的方法:
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获得窗口标题
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询