Csharp/CSharp Tutorial/Development/Application

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Application.AddMessageFilter

<source lang="csharp">using System; using System.Threading; using System.Windows.Forms;

public class BlockLeftMouseButtonMessageFilter : IMessageFilter {

   const int WM_LBUTTONDOWN = 0x201;
   
   public bool PreFilterMessage(ref Message m) {
       if(m.Msg == WM_LBUTTONDOWN)
       {
           Exception LeftButtonDownException;
           
           LeftButtonDownException = new Exception("The left mouse button was pressed.");
           Application.OnThreadException(LeftButtonDownException);
           return true;
       }
       return false;
   }

}

public class ApplicationEventHandlerClass {

   public void OnThreadException(object sender, ThreadExceptionEventArgs e)
   {
       Exception LeftButtonDownException;
       
       LeftButtonDownException = e.Exception;
       Console.WriteLine(LeftButtonDownException.Message);
   }

}

public class MainForm : Form {

   public static void Main()
   {
       ApplicationEventHandlerClass AppEvents = new ApplicationEventHandlerClass();
       MainForm MyForm = new MainForm();
       BlockLeftMouseButtonMessageFilter MsgFilter = new BlockLeftMouseButtonMessageFilter();
  
       Application.AddMessageFilter(MsgFilter);
       Application.ThreadException += new ThreadExceptionEventHandler(AppEvents.OnThreadException);
       Application.Run(MyForm);
   }
  
   public MainForm()
   {
       Text = "Application Exception Test";
   }

}</source>

Application Exit event

<source lang="csharp">using System; using System.Windows.Forms; public class MainClass : System.Windows.Forms.Form {

 public MainClass()
 {
   Application.ApplicationExit += new EventHandler(Form_OnExit);
 }
 [STAThread]
 static void Main() 
 {
   Application.Run(new MainClass());
 }
 private void Form_OnExit(object sender, EventArgs evArgs) 
 {
   Console.WriteLine("Exit");
 }

}</source>

Application Startup Path

<source lang="csharp">using System; using System.Collections.Generic; using System.Windows.Forms; static class MainClass {

   [STAThread]
   static void Main()
   {
       Console.WriteLine( Application.StartupPath);
 
   }

}</source>

C:\Java_Dev\WEB\dev\CSharp

Get CompanyName, ProductName and StartupPath from Application

<source lang="csharp">using System; using System.Windows.Forms; public class MainClass : System.Windows.Forms.Form {

 public MainClass()
 {
   Console.WriteLine("Company: " + Application.rupanyName);
   Console.WriteLine("App Name: " + Application.ProductName);
   Console.WriteLine("I live here: "+ Application.StartupPath);
 }
 [STAThread]
 static void Main() 
 {
   Application.Run(new MainClass());
 }

}</source>

Company: MainClass
App Name: MainClass
I live here: C:\Java_Dev\WEB\dev\CSharp

Working with Thread Exceptions

<source lang="csharp">using System; using System.Threading; using System.Windows.Forms;

public class BlockLeftMouseButtonMessageFilter : IMessageFilter {

   const int WM_LBUTTONDOWN = 0x201;
   
   public bool PreFilterMessage(ref Message m) {
       if(m.Msg == WM_LBUTTONDOWN)
       {
           Exception LeftButtonDownException;
           
           LeftButtonDownException = new Exception("The left mouse button was pressed.");
           Application.OnThreadException(LeftButtonDownException);
           return true;
       }
       return false;
   }

}

public class ApplicationEventHandlerClass {

   public void OnThreadException(object sender, ThreadExceptionEventArgs e)
   {
       Exception LeftButtonDownException;
       
       LeftButtonDownException = e.Exception;
       Console.WriteLine(LeftButtonDownException.Message);
   }

}

public class MainForm : Form {

   public static void Main()
   {
       ApplicationEventHandlerClass AppEvents = new ApplicationEventHandlerClass();
       MainForm MyForm = new MainForm();
       BlockLeftMouseButtonMessageFilter MsgFilter = new BlockLeftMouseButtonMessageFilter();
  
       Application.AddMessageFilter(MsgFilter);
       Application.ThreadException += new ThreadExceptionEventHandler(AppEvents.OnThreadException);
       Application.Run(MyForm);
   }
  
   public MainForm()
   {
       Text = "Application Exception Test";
   }

}</source>