本人想实现以下的功能.Public Class Class1 Public Shared Sub Main(ByVal aaa() As String) Dim asdasdas As New form1 Dim ObjMyProcess As Process() ObjMyProcess = Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName) '问了防止二重启动
If ObjMyProcess.Length > 1 Then
'第二次开始想显示在最前面.....
asdasdas.Show() Return
End End If
Dim frm As New Form1 Application.Run(frm) End Sub
End Class大家可以这么实验, 再加一个form,然后单击exe,最小化之后,再单击exe,想让form显示....请指教...提示:不要设置 topmost属性(不是显示在最前面,而是激活当前form)
If ObjMyProcess.Length > 1 Then
'第二次开始想显示在最前面.....
asdasdas.Show() Return
End End If
Dim frm As New Form1 Application.Run(frm) End Sub
End Class大家可以这么实验, 再加一个form,然后单击exe,最小化之后,再单击exe,想让form显示....请指教...提示:不要设置 topmost属性(不是显示在最前面,而是激活当前form)
asdasdas.WindowState = FormWindowState.Normal;
否则 api用消息比较好
看看最基本的吧
Public Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Integer) As Integer
If ObjMyProcess.Length > 1 Then
'第二次开始想显示在最前面.....
Application.Run(asdasdas)
Return
End End If
Dim frm As New Form1 Application.Run(frm) End Sub
楼上正解楼主可以调用FindWindowsEx api(好象是叫这个名字) 找到程序窗体的句柄 然后有了句柄 楼主爱怎样就怎样了
If ObjMyProcess.Length > 1 Then
'第二次开始想显示在最前面.....
Application.Run(asdasdas)'找到已启动的窗体句柄 然后将其显示出来Return
'
'code
' '同时将这个程序关闭
Application.Exit()
'End End If
Dim frm As New Form1 Application.Run(frm) End Sub
差不多应该是这样
Public Shared Sub Main(ByVal aaa() As String) Dim p As Process() = Process.GetProcessesByName("VBWin02") 'Process.GetCurrentProcess.ProcessName)
'防止程序启动多次,只有一个运行的实例
If p.Length > 1 Then
'将之前启动的窗体显示出来。
SetForegroundWindow(p(0).MainWindowHandle)
End '退出软件
End If
'正常情况下的窗体显示
Application.Run(New Form1())
End Sub
Public Shared Sub Main(ByVal aaa() As String) Dim p As Process() = Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName) 'Process.GetCurrentProcess.ProcessName)
'防止程序启动多次,只有一个运行的实例
If p.Length > 1 Then
'将之前启动的窗体显示出来。
SetForegroundWindow(p(0).MainWindowHandle)
End '退出软件
End If
'正常情况下的窗体显示
Application.Run(New Form1())
End Sub进程名忘记修改回来了。测试有效。