By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,241 Members | 2,074 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,241 IT Pros & Developers. It's quick & easy.

Bring To Front of a Process/Other application

P: n/a
Hi,

I want my application to bring another application to the Front.

I thought best way to do this was by the Process-model:
Dim c As Process = Process.GetCurrentProcess()
Dim p As Process
For Each p In Process.GetProcessesByName("EXTRA")
If Left(p.MainWindowTitle, 4) = "Appl" Then
'Here I should be able to Bring the Process to the Front!!!
Exit Function
End If
Next p

Does anybody nows how to do this? Or another solution?

Thanks!

Pieter
Nov 20 '05 #1
Share this Question
Share on Google+
9 Replies


P: n/a
Windows Forms Tips and Tricks explains how to maintain a single instance of
an application and bring it to the front when it's activated.

http://www.bobpowell.net/tipstricks.htm
--
Bob Powell [MVP]
Visual C#, System.Drawing

Image transition effects, automatic persistent configuration and
design time mouse operations all in April's issue of Well Formed
http://www.bobpowell.net/wellformed.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/gdiplus_faq.htm

The GDI+ FAQ RSS feed: http://www.bobpowell.net/faqfeed.xml
Windows Forms Tips and Tricks RSS: http://www.bobpowell.net/tipstricks.xml
Bob's Blog: http://royo.is-a-geek.com/siteFeeder...aspx?FeedId=41

"DraguVaso" <pi**********@hotmail.com> wrote in message
news:O3**************@TK2MSFTNGP09.phx.gbl...
Hi,

I want my application to bring another application to the Front.

I thought best way to do this was by the Process-model:
Dim c As Process = Process.GetCurrentProcess()
Dim p As Process
For Each p In Process.GetProcessesByName("EXTRA")
If Left(p.MainWindowTitle, 4) = "Appl" Then
'Here I should be able to Bring the Process to the Front!!! Exit Function
End If
Next p

Does anybody nows how to do this? Or another solution?

Thanks!

Pieter

Nov 20 '05 #2

P: n/a
Thanks!

I just found it myself like this:

Dim handle As IntPtr = prcSiclid.MainWindowHandle
Dim Win32Help As New Win32Helper
If Not IntPtr.Zero.Equals(handle) Then
Win32Helper.ShowWindow(handle, 1)
Win32Helper.SetForegroundWindow(handle)
End If

Public NotInheritable Class Win32Helper
<System.Runtime.InteropServices.DllImport("user32. dll", _
EntryPoint:="SetForegroundWindow", _
CallingConvention:=Runtime.InteropServices.Calling Convention.StdCall, _
CharSet:=Runtime.InteropServices.CharSet.Unicode, SetLastError:=True)> _
Public Shared Function _
SetForegroundWindow(ByVal handle As IntPtr) As Boolean
' Leave function empty
End Function

<System.Runtime.InteropServices.DllImport("user32. dll", _
EntryPoint:="ShowWindow", _
CallingConvention:=Runtime.InteropServices.Calling Convention.StdCall, _
CharSet:=Runtime.InteropServices.CharSet.Unicode, SetLastError:=True)> _
Public Shared Function ShowWindow(ByVal handle As IntPtr, _
ByVal nCmd As Int32) As Boolean
' Leave function empty
End Function

End Class ' End Win32Helper
"Bob Powell [MVP]" <bob@_spamkiller_bobpowell.net> wrote in message
news:uo*************@TK2MSFTNGP10.phx.gbl...
Windows Forms Tips and Tricks explains how to maintain a single instance of an application and bring it to the front when it's activated.

http://www.bobpowell.net/tipstricks.htm
--
Bob Powell [MVP]
Visual C#, System.Drawing

Image transition effects, automatic persistent configuration and
design time mouse operations all in April's issue of Well Formed
http://www.bobpowell.net/wellformed.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/gdiplus_faq.htm

The GDI+ FAQ RSS feed: http://www.bobpowell.net/faqfeed.xml
Windows Forms Tips and Tricks RSS: http://www.bobpowell.net/tipstricks.xml
Bob's Blog: http://royo.is-a-geek.com/siteFeeder...aspx?FeedId=41

"DraguVaso" <pi**********@hotmail.com> wrote in message
news:O3**************@TK2MSFTNGP09.phx.gbl...
Hi,

I want my application to bring another application to the Front.

I thought best way to do this was by the Process-model:
Dim c As Process = Process.GetCurrentProcess()
Dim p As Process
For Each p In Process.GetProcessesByName("EXTRA")
If Left(p.MainWindowTitle, 4) = "Appl" Then
'Here I should be able to Bring the Process to the

Front!!!
Exit Function
End If
Next p

Does anybody nows how to do this? Or another solution?

Thanks!

Pieter


Nov 20 '05 #3

P: n/a
Hi Pieter,

I don't know, I did not really check everything you wrote, however did you
look already to the forms TopMost property?

Cor
Nov 20 '05 #4

P: n/a
TopMost works in the application itself, but I don't think you can use it to
put another appliation on Top.
Even in the application itself TopMost doesn't always work fine. But the
"SetForegroundWindow" works always :-)

Thansk anyways :-)

"Cor Ligthert" <no**********@planet.nl> wrote in message
news:uW**************@TK2MSFTNGP12.phx.gbl...
Hi Pieter,

I don't know, I did not really check everything you wrote, however did you
look already to the forms TopMost property?

Cor

Nov 20 '05 #5

P: n/a
* "Cor Ligthert" <no**********@planet.nl> scripsit:
I don't know, I did not really check everything you wrote, however did you
look already to the forms TopMost property?


This will make the window stay "always on top".

--
Herfried K. Wagner [MVP]
<URL:http://dotnet.mvps.org/>
Nov 20 '05 #6

P: n/a
* "DraguVaso" <pi**********@hotmail.com> scripsit:
I want my application to bring another application to the Front.

I thought best way to do this was by the Process-model:
Dim c As Process = Process.GetCurrentProcess()
Dim p As Process
For Each p In Process.GetProcessesByName("EXTRA")
If Left(p.MainWindowTitle, 4) = "Appl" Then
'Here I should be able to Bring the Process to the Front!!!
Exit Function
End If
Next p

Does anybody nows how to do this? Or another solution?


'AppActivate'.

--
Herfried K. Wagner [MVP]
<URL:http://dotnet.mvps.org/>
Nov 20 '05 #7

P: n/a
I tried Bob's C# code in his "Only one instance of an application"
article.
It didn't work for me in Windows 2000.

I then tried to email you about it Bob, but you are running FrontPage
extensions on your site, which didn't work for me. Presumably my
company firewall doesn't like them. Why you need FrontPage extensions
to handle a simple form is beyond me.

I am still looking for a solution to this problem. All I have found
on the net so far are solutions which don't work reliably, or guesses
from people (even Microsofties) who haven't tried what they are
suggesting.

Don't know if the barrier is .net, or Win2K/XP. I suspect the latter.

Ken.
Nov 20 '05 #8

P: n/a
I tried Bob's C# code in his "Only one instance of an application"
article.
It didn't work for me in Windows 2000.

I then tried to email you about it Bob, but you are running FrontPage
extensions on your site, which didn't work for me. Presumably my
company firewall doesn't like them. Why you need FrontPage extensions
to handle a simple form is beyond me.

I am still looking for a solution to this problem. All I have found
on the net so far are solutions which don't work reliably, or guesses
from people (even Microsofties) who haven't tried what they are
suggesting.

Don't know if the barrier is .net, or Win2K/XP. I suspect the latter.

Ken.
Nov 20 '05 #9

P: n/a
Hi,

I used this to bring another application to the Front:

Hope this helps,

Pieter

Public Sub BringExtraToFront()
Dim prc As Process
Dim clsProc As New clsProcesses
prc = clsProc.ProcessExtra 'gets me the
process based on the name
Dim handle As IntPtr = prc.MainWindowHandle
Dim Win32Help As New Win32Helper
If Not IntPtr.Zero.Equals(handle) Then
Win32Helper.ShowWindow(handle, 1)
Win32Helper.SetForegroundWindow(handle)
End If
End Sub
Option Explicit On

Public Class clsProcesses

Public Shared Function PrevInstance() As Process
Dim c As Process = Process.GetCurrentProcess()

' Durchlaufen aller Prozesse mit gleichem Namen.
Dim p As Process
For Each p In Process.GetProcessesByName(c.ProcessName)

' Aktuellen Prozess nicht beachten.
If p.Id <> c.Id Then

' Es kann mehrere Prozesse gleichen Namens geben, die von
' unterschiedlichen Programmen stammen.
If p.MainModule.FileName = c.MainModule.FileName Then

' Prozess der ersten gefundenen anderen Instanz
' zurückgeben.
Return p
End If
End If
Next p

' Keine andere Instanz gefunden.
Return Nothing
End Function

Public Shared Function ExtraOpen() As Boolean
' Durchlaufen aller Prozesse mit gleichem Namen.
Dim p As Process
For Each p In Process.GetProcessesByName("EXTRA")
If Left(p.MainWindowTitle, 4) = SessionName Then
Return True
Exit Function
End If
Next p
Return False
End Function

Public Shared Function ProcessExtra() As Process
' Durchlaufen aller Prozesse mit gleichem Namen.
Dim p As Process
For Each p In Process.GetProcessesByName("EXTRA")
If Left(p.MainWindowTitle, 4) = SessionName Then
Return p
Exit Function
End If
Next p
Return Nothing
End Function

Public Sub New()
'error-handler die alle errors voor zn rekening neemt
AddHandler System.Windows.Forms.Application.ThreadException,
AddressOf GlobalErrorHandler
End Sub
End Class

Public NotInheritable Class Win32Helper
<System.Runtime.InteropServices.DllImport("user32. dll", _
EntryPoint:="SetForegroundWindow", _
CallingConvention:=Runtime.InteropServices.Calling Convention.StdCall, _
CharSet:=Runtime.InteropServices.CharSet.Unicode, SetLastError:=True)> _
Public Shared Function _
SetForegroundWindow(ByVal handle As IntPtr) As Boolean
' Leave function empty
End Function

<System.Runtime.InteropServices.DllImport("user32. dll", _
EntryPoint:="ShowWindow", _
CallingConvention:=Runtime.InteropServices.Calling Convention.StdCall, _
CharSet:=Runtime.InteropServices.CharSet.Unicode, SetLastError:=True)> _
Public Shared Function ShowWindow(ByVal handle As IntPtr, _
ByVal nCmd As Int32) As Boolean
' Leave function empty
End Function

End Class ' End Win32Helper

"Ken Wagnitz" <kw******@bigfoot.com> wrote in message
news:21*************************@posting.google.co m...
I tried Bob's C# code in his "Only one instance of an application"
article.
It didn't work for me in Windows 2000.

I then tried to email you about it Bob, but you are running FrontPage
extensions on your site, which didn't work for me. Presumably my
company firewall doesn't like them. Why you need FrontPage extensions
to handle a simple form is beyond me.

I am still looking for a solution to this problem. All I have found
on the net so far are solutions which don't work reliably, or guesses
from people (even Microsofties) who haven't tried what they are
suggesting.

Don't know if the barrier is .net, or Win2K/XP. I suspect the latter.

Ken.

Nov 20 '05 #10

This discussion thread is closed

Replies have been disabled for this discussion.