精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Powerbuilder>>使用API>>如何找出当前活动窗口?

主题:如何找出当前活动窗口?
发信人: ilike()
整理人: leitiger(2002-06-05 23:49:05), 站内信件
【 在 flyingmist (飘雾) 的大作中提到: 】
: 请教一个问题,如何找出当前活动窗口(非本应用内的窗口)并且关闭它。
: 这个窗口可能是Response类型的,例如报告打印机缺纸的那个弹出窗口
: 啦。
: 我试过用FindWindowA()不行。
:    .......

试试看下面的windows API:
GetActiveWindow():取得当前进程的活动窗口句柄
GetForegroundWindow ( ):取得当前可以响应用户输入的窗口句柄
FindWindowEx():使用这个可以遍历所有的窗口

GetWindowlong:这个根据窗口句柄可以取得窗口的各种参数,例如标题之类的。

DestroyWindow:可以关闭指定窗口句柄。

-
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.156.11]


发信人: flyingmist (飘雾), 信区: Powerbuilder
标  题: Re: 如何找出当前活动窗口?
发信站: 网易虚拟社区 (Wed Dec 22 23:31:10 1999), 站内信件

谢谢两位指点。我的试验结果是这样的:

GetActiveWindow():当缺纸窗口弹出时,返回零。我想那是因为不是当前进
程的缘故吧。所以这个是肯定不行了。

GetForegroundWindow ( ):可以返回句柄。问题是缺纸窗口是在好几秒之后
才弹出的,而这过程中用户可能切换窗口,因此不知道是不是想关闭的那个。
可以配合GetWindowlong来使用。

FindWindowA():我说错了,它也行的。(在用户那里不行,回来就行了,气死
我!)如果已知窗口标题(即已知平台版本)的话,用它倒是最保险。

但是......用DestroyWindow()关闭不了那个窗口,返回值为零。

所以最后我用的是keybd_event ()来模拟按ESC键,成功了!


【 在 ilike (自在飞花) 的大作中提到: 】
:    .......

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 203.93.7.52]

[关闭][返回]