Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Exception thrown when start listening to window event

Posted on 2009-07-15
1
1,517 Views
Last Modified: 2013-12-17
Hi Experts,

I am trying to get the event everytime user invokes a window application.  For example, my application should get the event when user runs notepad.exe

I am using WMI to capture the windows event asynchronously, however, I got exception thrown (Exception from HRESULT: 0x80042002) everytime I starts to listen to the window event.

I would like to seek for your advice and guidence on solving this issue.
Thank you!



I am using C# 2005 and .Net Framework 2.0.

The following are the exception detail:
System.Runtime.InteropServices.COMException was unhandled
  Message="Exception from HRESULT: 0x80042002"
  Source="mscorlib"
  ErrorCode=-2147213310
  StackTrace:
       at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
       at System.Management.ManagementEventWatcher.Start()
       at EventMonitoring.WindowEventWatcher.Start() in C:\Projects\AppMonitoring\WindowEventWatcher.cs:line 54
       at EventMonitoring.FrmAppSelect..ctor() in C:\Projects\AppMonitoring\FrmAppSelect.cs:line 29
       at EventMonitoring.Program.Main() in C:\Projects\AppMonitoring\Program.cs:line 17
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()

WqlEventQuery m_eventQuery = new WqlEventQuery("__InstanceCreationEvent", "TargetInstance isa \"Win32_Process\"");
private ManagementEventWatcher m_eventWatcher = new ManagementEventWatcher(m_eventQuery);
m_eventWatcher.EventArrived += new EventArrivedEventHandler(HandleEvent);
 
m_eventWatcher.Start();            // Exception thrown!!! (Exception from HRESULT: 0x80042002)

Open in new window

0
Comment
Question by:cskiong
1 Comment
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 250 total points
ID: 24866704
Not sure...this works for me (I'm definitely no WMI expert!).  Note the extra parameter of a TimeSpan to the constructor of WqlEventQuery.
See: http://msdn.microsoft.com/en-us/library/6s90836x(VS.80).aspx
    public partial class Form1 : Form
    {
 
        private delegate void CreatedDelegate(EventArrivedEventArgs e);
        private ManagementEventWatcher watcherCreation;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            WqlEventQuery queryCreation = new WqlEventQuery("__InstanceCreationEvent",
                new TimeSpan(0, 0, 1), "TargetInstance isa \"Win32_Process\"");
            watcherCreation = new ManagementEventWatcher(queryCreation);
            watcherCreation.EventArrived += new EventArrivedEventHandler(watcherCreation_EventArrived);
            watcherCreation.Start();
        }
 
        void watcherCreation_EventArrived(object sender, EventArrivedEventArgs e)
        {
            if (this.InvokeRequired)
                this.Invoke(new CreatedDelegate(ProcessStarted), new Object[] { e });
            else
                ProcessStarted(e);
        }
 
        private void ProcessStarted(EventArrivedEventArgs e)
        {
            // do something in here...
            Console.WriteLine("Process Started @ " + DateTime.Now.ToString());
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            watcherCreation.Stop();
        }
 
    }

Open in new window

0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Batch, VBS, and scripts in general are incredibly useful for repetitive tasks.  Some tasks can take a while to complete and it can be annoying to check back only to discover that your script finished 5 minutes ago.  Some scripts may complete nearly …
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
Learn the basics of while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

808 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question