首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VB6中等待进程退出后恢复窗口

在VB6中等待进程退出后恢复窗口
EN

Stack Overflow用户
提问于 2012-09-25 13:43:23
回答 2查看 1.1K关注 0票数 3

我在win7 64位操作系统中使用VB6。此应用程序是从xp迁移过来的。

代码语言:javascript
运行
复制
Me.WindowState = vbMinimized
WaitForProcess Shell(launchapp, vbNormalFocus)
Me.WindowState = vbNormal

在启动启动章节之前,我的代码最小化了主应用程序,并将启动一个可执行文件。一旦用户关闭了exe,我的主应用程序就必须从最小化状态返回到正常状态。这在xp中工作得很好,但在Win7中,我的主应用程序被最小化了,它只是闪烁,并再次回到最小化状态。

有什么想法吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-09-25 20:01:34

正如documentation中解释的那样,Windows7将不允许应用程序使用SetForegroundWindow来抢占焦点。请参阅备注。

一种解决方法是暂时AttachThreadInput到具有焦点的线程,将焦点交给自己,然后再次分离。Karl E Peterson提供了一个drop-in module来完成此任务,here附带magazine article

免责声明: Windows专家Raymond Chen指出,在某些情况下,这种解决方法是can cause your program to stop responding。然而,我自己从来没有遇到过这些bug。YMMV.

票数 1
EN

Stack Overflow用户

发布于 2012-09-25 15:01:46

我们正在使用Win32应用程序接口函数SetForegroundWindow来解决类似的问题(一些窗口,特别是进程外的窗口,将保留在我们W7上的主应用程序窗口之后)。

代码语言:javascript
运行
复制
Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long

这是API声明,在google上搜索用法。这里有一些信息:VBA interaction with Internet Explorer。如果你需要在不同的进程中控制窗口,你也需要另一个API - AllowSetForegroundWindow。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12576821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档