/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // // Event.cs -- Demonstrates using the Microsoft.SystemEvents class to intercept // an event generated by the system. // // Compile this program with the following command line: // C:>csc Event.cs // namespace nsEvent { using System; using System.Windows.Forms; using Microsoft.Win32; public class Event { // // Define the delegate public delegate void UserEventHandler (object obj, UserPreferenceChangedEventArgs args); // // Declare a variable that will hold the delegate static public event UserEventHandler ShowEvent; static public void Main () { // // Create the delegate using the event handler (below) ShowEvent = new UserEventHandler (EvHandler); // // Creeate the event handler using the new operator UserPreferenceChangedEventHandler handler = new UserPreferenceChangedEventHandler(ShowEvent); // // Add the delegate to the system delegate list. This is a multi-cast delegate // and you must use the += operator to add the delegate. Use the -= operator // to remove the delegate SystemEvents.UserPreferenceChanged += handler; // // Show a message box to keep the program alive while you cause an event MessageBox.Show ("Hey! C Sharp", "System Events"); // // Remove the delegate from the system delegate list SystemEvents.UserPreferenceChanged -= handler; } // // Declare and define the method that will be used as the event handler function static void EvHandler (object obj, UserPreferenceChangedEventArgs args) { /* Retrieve the category of the change */ UserPreferenceCategory cat = args.Category; /* Build a string for the message box */ string str = "User changed the " + cat.ToString() + " category"; /* Show the change event */ MessageBox.Show (str, " event category"); } } }