社区
PowerBuilder
帖子详情
如何获取打开的窗口的数量
mengqifeng
2006-01-20 04:38:57
请问一下,怎样才能得到在一个application中打开的窗口的数量,搜索了很久都没有发现有类似的问题,希望高手能够解答一下。
...全文
590
11
打赏
收藏
如何获取打开的窗口的数量
请问一下,怎样才能得到在一个application中打开的窗口的数量,搜索了很久都没有发现有类似的问题,希望高手能够解答一下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
msgtogcra
2006-02-14
打赏
举报
回复
如何遍历用 OpenSheet() 打开的窗口可以参考:
http://community.csdn.net/Expert/topic/4544/4544724.xml?temp=.6323358
msgtogcra
2006-02-10
打赏
举报
回复
索性好人做到底,of_get_OpenedWnd() 的代码如下:
不过注意了,我这里滤掉的系统进程仅适用于 win95,其它版本大家自己搞定吧!
/*
功能:
得到当前进程打开的窗口
参数:
aia_openedhwnd[]: 存储打开的窗口句柄数组(输出)
返回值:
成功返回窗口句柄数组的大小;错误返回 -1
*/
ulong ll_processid,ll_buf
uint lia_hwnd[]
int nloop,count,count2=0
string ls_buf
ll_processid = GetCurrentProcessId()
count = of_get_AllWnd(lia_hwnd)
for nloop = 1 to count
GetWindowThreadProcessId(lia_hwnd[nloop], ll_buf)
if ll_buf = ll_processid then
ls_buf = Space(32)
GetWindowText(lia_hwnd[nloop], ls_buf, 32)
choose case ls_buf
case "Default IME", "DDE Server Window", "OleMainThreadWndName"
//
case else
count2 ++
aia_openedhwnd[count2] = lia_hwnd[nloop]
end choose
end if
next
return count2
msgtogcra
2006-02-09
打赏
举报
回复
其实这些 API 都不复杂,稍微麻烦一点就是如何获得所有桌面窗口;
下面就给出 of_get_AllWnd() 的代码
/*
功能:
得到所有正在运行的窗口(除桌面窗口本身)
参数:
aia_hwnd[]: 存储正在运行的窗口句柄(输出)
返回值:
成功返回窗口句柄数组的大小;错误返回 -1
*/
uint hwnd
int count=0
do
count ++
if count = 1 then
hwnd = GetWindow(GetDesktopWindow(), 5) // 得到桌面的第一个子窗口
else
hwnd = GetWindow(hwnd, 2) // 得到子窗口的所有兄弟窗口
end if
if hwnd <> 0 then
aia_hwnd[count] = hwnd
else
count --
end if
loop while hwnd <> 0
return count
mengqifeng
2006-02-09
打赏
举报
回复
我对这些API的用法不熟,不知道有没有那位兄弟姐妹给个例子。
wwq103
2006-02-08
打赏
举报
回复
用API吧,这样通用并且方便些,楼主如果解决了记得来说一声有什么心得和需要注意的地方,造福后人啊^^
mengqifeng
2006-02-05
打赏
举报
回复
to qlyscf()
考虑过用计数器,但是窗口多而且杂,很不好判断,所以后来决定不用。
to msgtogcra()
我先试试看
to li_d_s(我是小鬼-日货?送我都不要,哪怕是丰田和日产的轿车)
大部分都不是mdi窗口
distancehalf
2006-01-23
打赏
举报
回复
建議你最好是用API
bbdx2523
2006-01-23
打赏
举报
回复
楼上的方法可以考虑
qlyscf
2006-01-23
打赏
举报
回复
非常简单的办法可以一试,设一全局变量计数器,初值为0,不管什么打开窗口,计数器加1,关闭窗口,计数器减一,如此可否???
msgtogcra
2006-01-23
打赏
举报
回复
其实方法还是有,利用以下 API 可以得到当前进程相关的窗口句柄,自然也就知道数量:
FUNCTION ulong GetWindowThreadProcessId(ulong hwnd,ref ulong lpdwProcessId) LIBRARY "user32.dll"
FUNCTION ulong GetDesktopWindow() LIBRARY "user32.dll"
FUNCTION ulong GetWindow(ulong hwnd,ulong wCmd) LIBRARY "user32.dll"
FUNCTION ulong GetCurrentProcessId() LIBRARY "kernel32.dll"
FUNCTION ulong GetWindowText(ulong hwnd,ref string lpString,ulong cch) LIBRARY "user32.dll" ALIAS FOR "GetWindowTextA"
原理是:
取得所有在桌面上运行的窗口,获得该窗口的相关进程标识,与当前应用的进程标识进行比较,可以得到哪些窗口是与当前进程相关的(调试状态下当前进程是 pb 编译器);找到的这些窗口当中有一些是系统进程,通过判断窗口标题,如 Default IME, DDE Server Window, OleMainThreadWndName;过滤掉它们,剩下的就是应用中打开的窗口了。
li_d_s
2006-01-21
打赏
举报
回复
如果是mdi还好作,否则恐怕只能自己登记窗口了
MySQL8之
窗口
函数实战&应用
由浅入深的将
窗口
函数相关知识讲解清楚,为了能够让读者轻松掌握
窗口
函数,本课程具备以下特点。引入相关的数据表数据和项目需求,让读者感觉自己在实现真实的项目。淡化纯理论的概念,重在实践。知识点由浅入深,将复杂的知识简单化。基于MySQL8的官方英文文档进行知识点的抽取。对比没有
窗口
函数和有
窗口
函数时的方案实现,意在让读者能够明白
窗口
函数的引入意义。
IDEA
打开
窗口
的
数量
及
打开
窗口
的排列方式调整
IDEA
打开
窗口
的
数量
及
打开
窗口
的排列方式调整 在我们项目的开发过程中,由于项目涉及的类过多,以至于我们会
打开
很多的
窗口
。使用IDEA默认的配置,个人觉的十分不便。但我们可以对
窗口
的排列方式和
打开
窗口
的排列方式进行设置。(默认设置为一行展示所有
窗口
,
窗口
数量
限制10个) 修改IDEA编译器展示页面,使其能够堆叠显示,不在横着一排 //默认的设置为在一行显示 File --> Setting --> Editor --> General --> Editor Tabs //
IDEA设置
打开
窗口
的
数量
按照我的截图可直接设置
窗口
数量
IDEA设置
窗口
打开
最大
数量
idea默认Tab Limit是10个,即
打开
超过十个文件后前面的
窗口
会自动关闭,若想展示所有
打开
窗口
只需更改Tab Limit为想要的数目
自定义idea
窗口
数量
设置
idea
窗口
打开
数量
设置 idea默认能够
打开
的
窗口
数量
是10,超过将会关闭未使用的
窗口
,设置
窗口
打开
的
数量
如下(idea版本为2021.1):
PowerBuilder
1,077
社区成员
66,438
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章