Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VB.net中激活窗口_Vb.net_Outlook - Fatal编程技术网

在VB.net中激活窗口

在VB.net中激活窗口,vb.net,outlook,Vb.net,Outlook,我用VBA将应用程序编写到Outlook,现在我想在VB.net中再次编写它(使其成为独立的应用程序)。 我有一个我找不到答案的具体问题——要在outlook资源管理器中导航,我编写了一个过程,该过程激活资源管理器,向下发送键,然后再次激活表单。当我在Visual Studio中启动应用程序时,此过程非常有效,但当我关闭VS并运行单个exe时,Outlook资源管理器不会激活-它只是在任务栏上闪烁,然后sendkey不工作,并且未选择下一封电子邮件。代码如下: Private Sub Butto

我用VBA将应用程序编写到Outlook,现在我想在VB.net中再次编写它(使其成为独立的应用程序)。 我有一个我找不到答案的具体问题——要在outlook资源管理器中导航,我编写了一个过程,该过程激活资源管理器,向下发送键,然后再次激活表单。当我在Visual Studio中启动应用程序时,此过程非常有效,但当我关闭VS并运行单个exe时,Outlook资源管理器不会激活-它只是在任务栏上闪烁,然后sendkey不工作,并且未选择下一封电子邮件。代码如下:

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()