【发布时间】:2016-11-04 16:44:47
【问题描述】:
我在 vba 中使用 Shell 命令来启动应用程序。然后我使用 WIN32 API 挂钩应用程序,以便我可以控制它。
这一切都很好,但有一个小细节:我想将焦点返回到 excel 仪表板,在那里我有控制应用程序的按钮,在应用程序启动后,我需要点击电子表格,然后我才能点击任何按钮。
我尝试通过SendMessage 使用AppActivate Application.ActiveWindow.Caption 和SetForegroundWindow、SetFocus 和WM_IME_SETCONTEXT 和WM_IME_NOTIFY,但似乎没有任何效果。我还尝试了工作表Activate 方法以及范围Activate 方法,但是我仍然必须先单击工作表才能单击按钮。
我原以为这是可能的,因为我正在从 excel 进程发送消息,如何激活电子表格?
【问题讨论】:
-
你能发布你的shell命令吗?你用
vbNormalNoFocus打开shell吗? -
嗨@Tim,shell命令只有路径参数。
-
@Tim,我意识到我的评论是模棱两可的:我的意思是我只是用一个参数来称呼它......当我回到办公桌时我会尝试你的建议。
-
@Tim,感谢您的建议,但遗憾的是没有解决问题。当应用程序窗口打开时,它会自行激活并取代 Shell 正在执行的操作。如果您有兴趣,请在下面查看我的答案...