3

我在 win7 64 位操作系统中使用 VB6。此应用程序是从 xp..

Me.WindowState = vbMinimized
WaitForProcess Shell(launchapp, vbNormalFocus)
Me.WindowState = vbNormal

在启动启动应用程序之前,我的代码会最小化主应用程序并将启动一个 exe。用户关闭 exe 后,我的主应用程序必须从最小化状态恢复正常。这在 xp 中运行良好,但在 win 7 中,我最小化的主应用程序只是闪烁并再次回到最小化状态。

有任何想法吗?

谢谢。

4

2 回答 2

1

如文档中所述,Windows 7 将不允许应用程序使用 SetForegroundWindow 获取焦点。见备注。

一种解决方法是暂时AttachThreadInput转到具有焦点的线程,给自己焦点,然后再次分离。Karl E Peterson 提供了一个插入模块来执行此操作并附有杂志文章

免责声明:Windows 大师 Raymond Chen 指出,这种解决方法可能会导致您的程序在某些情况下停止响应。但是,我自己从未遇到过这些错误。YMMV。

于 2012-09-25T12:01:34.060 回答
0

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

Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long

这是 API 声明,搜索 google 使用。这里有一些信息:VBA 与 Internet Explorer 的交互。如果您需要控制不同进程中的窗口,则还需要另一个 API - AllowSetForegroundWindow。

于 2012-09-25T07:01:45.803 回答