-----------------------------------------------------------

New Message on BDOTNET

-----------------------------------------------------------
From: Vinu Desai
Message 4 in Discussion



Hi,
 
Easier way
of doing this would be to use


if(System.Diagnostics.Process.GetProcessesByName("").Length>1)

{

System.Diagnostics.Process.GetCurrentProcess().Kill();

}

Regards

Vinay

  
  -----Original Message-----
From: BDOTNET
  [mailto:[EMAIL PROTECTED] 
Sent: Friday, October 31, 2003 9:09
  AM
To: [EMAIL PROTECTED]
Subject: Re: How to restrict
  a C# EXE to only one instance ?


  
    
      
      New Message on BDOTNET
    
      

  How to
    restrict a C# EXE to only one instance ?


    
      
      
        Reply

        
          
            
            
               
              Recommend 
              Message 3 in
                Discussion 
      
        
          
            
            
              From: saileshsaha 
            
              

                Hi Mr
                BabuRaj,
                 
                The following code shows how to
                make sure that there is only one instance of your Windows Forms
                application running. The code first searches for processes with
                the same name as the and if one is found it makes sure that was
                ran from the same location. If it decides that there is another
                instance running, it shows that main window of the other
                instance, otherwise it runs another instance of the main
                form.
                 
                using System;
using
                System.Runtime.InteropServices;
using
                System.Windows.Forms;
using System.Diagnostics;
using
                System.Reflection;

 public class
                OneInstnace
 {
                
                
 [STAThread]
 public static void
                Main()
 {
 //Get the running
                instance.
 Process instance =
                RunningInstance();
 if (instance ==
                null)
 {
 //There isn't another instance, show
                our form.
 Application.Run (new
                Form());
 }
 else
 {
 //There is
                another instance of this
                process.
 HandleRunningInstance(instance);
 }
 }
 public
                static Process RunningInstance()
 {
 Process
                current = Process.GetCurrentProcess();
 Process[]
                processes = Process.GetProcessesByName
                (current.ProcessName);
                
 //Loop through the running processes in
                with the same name
 foreach (Process process in
                processes)
 {
 //Ignore the current
                process
 if (process.Id !=
                current.Id)
 {
 //Make sure that the process is
                running from the exe file.
 if
                (Assembly.GetExecutingAssembly().Location.Replace("/", "\\")
                ==
 current.MainModule.FileName)
 {
 //Return
                the other process instance.
 return
                process;
 }
 }
 }
                
 //No other instance was found, return
                null.
 return null;
 }
                

 public static void
                HandleRunningInstance(Process
                instance)
 {
 //Make sure the window is not
                minimized or maximized
 ShowWindowAsync
                (instance.MainWindowHandle , WS_SHOWNORMAL);
                
 //Set the real intance to foreground
                window
 SetForegroundWindow
                (instance.MainWindowHandle);
 }
                
 [DllImport("User32.dll")] 
                
private static extern bool
                ShowWindowAsync(
 IntPtr hWnd, int
                cmdShow);
 [DllImport("User32.dll")] private static
                extern bool
 SetForegroundWindow(IntPtr
                hWnd);
 private const int WS_SHOWNORMAL =
                1;
 }

                
 
                
Thanks and Regards,
                
Sailesh
View other groups in this
    category. 



-----------------------------------------------------------

To stop getting this e-mail, or change how often it arrives, go to your E-mail 
Settings.
http://groups.msn.com/BDotNet/_emailsettings.msnw

Need help? If you've forgotten your password, please go to Passport Member Services.
http://groups.msn.com/_passportredir.msnw?ppmprop=help

For other questions or feedback, go to our Contact Us page.
http://groups.msn.com/contact

If you do not want to receive future e-mail from this MSN group, or if you received 
this message by mistake, please click the "Remove" link below. On the pre-addressed 
e-mail message that opens, simply click "Send". Your e-mail address will be deleted 
from this group's mailing list.
mailto:[EMAIL PROTECTED]

Reply via email to