社区
C++ Builder
帖子详情
高分求怎样枚举桌面上的所有主窗口???
sun_wyz
2005-01-21 03:55:10
怎样枚举桌面上的所有主窗口???
还有怎么样枚举包括子窗口的所有窗口?(不包括按钮工具栏那些所谓的窗口)
还有怎么样判断一个窗口是不是子窗口???
请给出代码!谢谢!分不够再加。。
...全文
282
12
打赏
收藏
高分求怎样枚举桌面上的所有主窗口???
怎样枚举桌面上的所有主窗口??? 还有怎么样枚举包括子窗口的所有窗口?(不包括按钮工具栏那些所谓的窗口) 还有怎么样判断一个窗口是不是子窗口??? 请给出代码!谢谢!分不够再加。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
特招
2005-01-24
打赏
举报
回复
up
constantine
2005-01-22
打赏
举报
回复
constantine.vicp.net
csdnbcb
123456
有一个xitong的文件里面就有了
sun_wyz
2005-01-22
打赏
举报
回复
非常感谢楼上!!!明天考完式我就去下载!!!
僵哥
2005-01-21
打赏
举报
回复
!GetParent(hwnd)就表示是主窗体
僵哥
2005-01-21
打赏
举报
回复
BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
{
unsigned long *pPid;
unsigned long result;
void *hg;
unsigned long id;
if(hwnd==NULL)
return false;
hg=GlobalAlloc(GMEM_SHARE,sizeof(unsigned long));
pPid=(unsigned long *)GlobalLock(hg);
result=GetWindowThreadProcessId(hwnd,pPid);
if(result)
{
char title[110];
char classname[95];
char totalstr[256];
bool isShow=true;
int len;
len=GetClassName(hwnd,classname,95);
classname[len]='\0';
len=GetWindowText(hwnd,title,110);
title[len]='\0';
AnsiString ch=AnsiString(title).Trim().SubString(1,3);
char buf[MAX_PATH+1]="";
char buf1[MAX_PATH+1]="";
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,FALSE,*pPid);
if( NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if( EnumProcessModules( hProcess, &hMod, sizeof( hMod ),
&cbNeeded ) )
{
len=GetModuleFileNameEx( hProcess, hMod,buf,sizeof buf);
buf[len]='\0';
len=GetModuleBaseName( hProcess, hMod,buf1,sizeof buf1);
buf1[len]='\0';
}
CloseHandle(hProcess);
}
if(GetParent(hwnd)!=NULL&&Form1->RMain->Checked)//是否只显示主窗体
isShow=false;
if(!IsWindowVisible(hwnd)&&Form1->RShow->Checked)//是否显示隐藏窗体
isShow=false;
if(isShow&&AnsiString(buf)!=Application->ExeName)//非本就用程序
{
TListItem *lListItems;
lListItems=Form1->ListView1->Items->Add();
lListItems->Caption=AnsiString(buf1);
lListItems->Data=hwnd;
lListItems->Checked=IsWindowVisible(hwnd);
lListItems->SubItems->Add(AnsiString(title));
lListItems->SubItems->Add(IsWindowVisible(hwnd)?"可见":"隐藏");
lListItems->SubItems->Add("0x"+IntToHex((int)hwnd,2));
lListItems->SubItems->Add(AnsiString(classname));
lListItems->SubItems->Add(IntToStr(*pPid));
lListItems->ImageIndex=GetNormalIcon(AnsiString(buf));
lListItems->SubItems->Add(AnsiString(buf));
}
}
else
{
GlobalUnlock(hg);
GlobalFree(hg);
return false;
}
GlobalUnlock(hg);
GlobalFree(hg);
return true;
}
BeRoy
2005-01-21
打赏
举报
回复
在cb茶馆里找嘛,有他发的帖子
sun_wyz
2005-01-21
打赏
举报
回复
楼上的兄弟!你的ftp在哪里啊???
constantine
2005-01-21
打赏
举报
回复
我的ftp里面有一个,好想在哪个62个例子那里
Maconel
2005-01-21
打赏
举报
回复
用GetWindow一层一层找。
可以通过窗体所属的类型来分辨是窗口还是按纽文本框什么的。
JetKingLau
2005-01-21
打赏
举报
回复
偶的一个例子,楼主试试
//---------------------------------------------------------------------------
static BOOL CALLBACK EnumWindowsProcess(HWND hwnd,LPARAM lParam)
{
TStrings *list = (TStrings*)lParam;
char buf[256];
::GetWindowText(hwnd,buf,256);
if( GetParent(hwnd) == NULL &&
IsWindowVisible(hwnd) &&
strlen(buf) > 0 &&
list->IndexOf(buf) == -1 ) {//判断是否是自己要的窗口
list->Add(buf);
}
return true;
}
//---------------------------------------------------------------------------
Boolean TitleOfVisibleWindows(TStrings *list)//列把所有可见的窗口标题
{
if( list == NULL )
return(false);
FARPROC EnumProcInstance =
MakeProcInstance(
(FARPROC)EnumWindowsProcess,
AfxGetInstanceHandle()
);
bool Return = EnumWindows((WNDENUMPROC)EnumProcInstance,(LPARAM)list);
FreeProcInstance(EnumProcInstance);
return(Return && list->Count > 0);
}
//---------------------------------------------------------------------------
JetKingLau
2005-01-21
打赏
举报
回复
忘记了,大概就是这两个函数:
EnumWindow
EnumChildWindow
【Qt】Qt中
枚举
释义
因为Qt中的
枚举
变量非常多,可以根据标题使用CSDN的文章导航到自己想要了解的部分。
实现
桌面
动态壁纸(一)
本文章以在 Windows
桌面
管理层
窗口
(
桌面
图标后面)嵌入第三方
窗口
为主题,主要针对动态壁纸实现原理进行讲解。
【CEF】《CEF
桌面
软件开发实战》笔记-汇总
【CEF】《CEF
桌面
软件开发实战》笔记-汇总
基础
各位兄弟,在SDK编程中如果实现
窗口
分割呢?请问怎么得到一个函数的执行时间,单位毫秒!如何调试asp组件呀。用vc++调试编制的组件怎样画一个箭头?
高分
请教如何限制程序运行的方法?
求
助:通过编程DirectX抓屏------>masterz:再麻烦你一下,谢谢熟悉RichEdit的朋友过来看一下,RichEdit的几个问题.如何对 I/O 端口进行操作?有了该问题就有了思考(100分 献礼!)如何
在Delphi中开发使用多显示器的应用程序
Windows 可以将多个显示器映射为虚拟
桌面
,使我们可以利用这一点设计出方便工作的应用程序。例如 PowerPoint 就充分发挥了双显示器的优势(大多数的笔记本电脑都支持),它可以在一个显示器上播放幻灯片,而在另一个显示器上显示备注,可以控制播放的进程,使使用者做商务演说的时候非常等心应手。那么我们怎么开发这种应用程序呢?这篇文章将向你展示如果用 Delphi 实现使用多显示器的应用程序。 ...
C++ Builder
13,825
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章