EnumWindows问题

z15881328993 2009-05-03 12:06:44
EnumWindows(EnumWindowsProc,NULL);

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lparam)
{
char name[255];
GetWindowText(hwnd,name,255);
printf("%s\n",name);
return TRUE ;
}
为什么枚举结果那么多,很多窗口就不存在?怎么枚举出任务管理器应用程序那一栏
...全文
112 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
z15881328993 2009-05-03
  • 打赏
  • 举报
回复
枚举进程我会,我枚举应用程序时得到很多结果,什么窗口名为:请等待。。都出来了,我要的效果是任务管理的应用程序表列
mengde007 2009-05-03
  • 打赏
  • 举报
回复
给你一段代码参考一下:

CString str=_T(""),str1=_T(""),str2=_T("");
TCHAR a[100]=_T("");
HANDLE handle0=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,arrayin[m]);
DWORD cbNeededModule =0;
HMODULE hMods[100]={0};
char szModuleName[100]={0};
//HANDLE handle0=::OpenProcess(PROCESS_VM_READ,FALSE,arrayin[m]);
// 枚举进程模块信息
::EnumProcessModules(handle0, hMods, sizeof(hMods), &cbNeededModule);
// 取得主模块全名,每个进程的第一模块即为进程主模块,这里使用ANSI版
::GetModuleFileNameExA(handle0,hMods[0],szModuleName,sizeof(szModuleName)) ;
//::GetModuleFileNameExA(handle0,NULL,szModuleName,sizeof(szModuleName)) ;
str.Format(L"%d",arrayin[m]);
//str1.Format(L"%s",szModuleName);
str1=szModuleName;

int pos=str1.ReverseFind(L'\\');
str2=str1.Mid(pos+1,str1.GetLength());
str.Append(L" ");
str.Append(str2);
listbox.AddString(str);
::CloseHandle(handle0);

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧