发信人: 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]
|
|