Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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
Appactivate方法没有';t work vb.net_Vb.net - Fatal编程技术网

Appactivate方法没有';t work vb.net

Appactivate方法没有';t work vb.net,vb.net,Vb.net,我有一个从vb6移植的vb.net桌面应用程序 有一个按钮单击Shell或Prcess.Start方法启动exe 现在用户调整exe窗口的大小 我想再次点击按钮将启动或刷新已存在的exe窗口中的exe。不应打开任何新窗口,且窗口大小应保持用户设置的大小 使用AppActivate方法,但它仅将焦点设置为现有的exe窗口,而不刷新窗口上的exe 有没有办法做到这一点。 提前谢谢 您需要实现这一点 这里有一个片段。刚刚测试过,似乎效果不错 Imports System.Diagnostics Imp

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

有一个按钮单击Shell或Prcess.Start方法启动exe

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

我想再次点击按钮将启动或刷新已存在的exe窗口中的exe。不应打开任何新窗口,且窗口大小应保持用户设置的大小

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

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

您需要实现这一点

这里有一个片段。刚刚测试过,似乎效果不错

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
导入系统诊断
导入System.Runtime.InteropServices
公共类ProcessStuff
私有进程作为进程运行
公共子StartOrActivate()
如果进程运行不算什么
_processRunning='参数启动进程并检索对象
其他的
“激活进程”主窗口
SetForegroundWindow(_processRunning.MainWindowHandle)
如果结束
端接头
私有共享函数SetForegroundWindow(hWnd作为IntPtr)作为布尔值
端函数
末级
编辑:

正如我对你上次评论的理解,你希望这个过程是正确的


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

我用processnotepad.exe测试了这个。我打开一个记事本,然后写在什么东西上。然后再次打开记事本,但它不会重新启动记事本,而是只显示上一个记事本。然后发布一些代码。您的应用程序在VB6中是如何工作的?此外,这句话对我来说并不清楚:“我希望再次单击按钮将启动或刷新已经存在的exe窗口中的exe”。我的意思是,如果我再次启动相同的进程。然后,它不应该打开新窗口,而是应该在现有窗口中启动新实例。