在VB.net中激活窗口
我用VBA将应用程序编写到Outlook,现在我想在VB.net中再次编写它(使其成为独立的应用程序)。 我有一个我找不到答案的具体问题——要在outlook资源管理器中导航,我编写了一个过程,该过程激活资源管理器,向下发送键,然后再次激活表单。当我在Visual Studio中启动应用程序时,此过程非常有效,但当我关闭VS并运行单个exe时,Outlook资源管理器不会激活-它只是在任务栏上闪烁,然后sendkey不工作,并且未选择下一封电子邮件。代码如下:在VB.net中激活窗口,vb.net,outlook,Vb.net,Outlook,我用VBA将应用程序编写到Outlook,现在我想在VB.net中再次编写它(使其成为独立的应用程序)。 我有一个我找不到答案的具体问题——要在outlook资源管理器中导航,我编写了一个过程,该过程激活资源管理器,向下发送键,然后再次激活表单。当我在Visual Studio中启动应用程序时,此过程非常有效,但当我关闭VS并运行单个exe时,Outlook资源管理器不会激活-它只是在任务栏上闪烁,然后sendkey不工作,并且未选择下一封电子邮件。代码如下: Private Sub Butto
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim app As Type = Type.GetTypeFromProgID("Outlook.Application")
Dim oApp As Object = Activator.CreateInstance(app)
oApp.ActiveExplorer.Activate()
SendKeys.Send("{Down}")
Me.Activate()
End Sub
有人能帮我吗?在Visual Studio中,请尝试“调试”菜单中的“启动而不调试”。这应该相当于运行可执行文件,但您可以在调试器启动后附加调试器(“debug”菜单中的“attach to Process”),并查看是否有线索……。我是用下面的代码完成的;)
谢谢你的提示;) 不,它仍然可以正常工作。我注意到,当运行VS并启动单个exe应用程序时,它也可以完美地工作。问题是,只有当VS未运行时,您是否尝试过给它一些时间,即
Thread.Sleep
一些时间?我今天尝试过,但它也不起作用。我注意到,当我在代码开始时最小化Outlook时,该操作(也没有thread.sleep)就会起作用。然后,Outlook资源管理器被激活。如果未最小化此窗口,应用程序将假定它处于活动状态,因此不必再次激活。您是否尝试给它一些时间,即在激活后线程睡眠一段时间?
Dim p As Process
Dim window_name As String
For Each p In Process.GetProcessesByName("outlook")
window_name = p.MainWindowTitle.ToString
Next
AppActivate(window_name)
Thread.Sleep(100)
SendKeys.Send("{Up}")
Me.Activate()