Appactivate方法不适用于vb.net

时间:2013-12-03 08:16:46

标签: vb.net

我有一个从vb6迁移的vb.net桌面应用程序。

单击按钮,Shell或Prcess.Start方法启动exe。

现在用户调整exe窗口的大小。

我希望再次单击按钮将启动或刷新已存在的exe窗口中的exe。不应打开新窗口,并保留窗口大小,因为它是由用户设置的。

使用AppActivate方法,但它只将焦点设置为现有的exe窗口,而不是刷新窗口上的exe。

有没有办法做到这一点。 提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要P/Invoke才能实现此目标。

这是一个片段。刚刚测试过,似乎工作正常。

Imports System.Diagnostics
Imports System.Runtime.InteropServices

Public Class ProcessStuff
    Private _processRunning as Process

    Public Sub StartOrActivate()
       If _processRunning Is Nothing
          _processRunning = ' Arguments to Start the process and retrieve the object
       Else
          ' Activate Process' Main Window
          SetForegroundWindow(_processRunning.MainWindowHandle)
       End If
    End Sub

    <DllImport("user32.dll")>
    Private Shared Function SetForegroundWindow(hWnd As IntPtr) As Boolean
    End Function

End Class

修改

我可以理解您的上一条评论,您希望该过程为single instanced

但是:请注意,目标应用程序(进程)必须为此做好准备!