【问题标题】:Clean up AppBar after process kill进程终止后清理 AppBar
【发布时间】:2010-09-23 09:16:27
【问题描述】:

我已经编写了一个应用程序桌面工具栏(又名 AppBar),它工作得很好,除了如果我终止进程,AppBar 代码永远不会有机会通过发送 ABM_REMOVE 来清理。问题是这基本上把用户的桌面搞砸了。 AppBar 是使用互操作代码在 .NET 中编写的。

有没有人知道清理这个资源的方法,即使是在 TaskManager 杀死进程的情况下?

【问题讨论】:

    标签: c# .net appbar


    【解决方案1】:

    当从任务管理器中终止进程时,该应用程序中不会引发任何事件。通常使用单独的帮助应用程序来侦听进程的 Win32_ProcessStopTrace 事件。您可以使用 WqlEventQuery,它是 System.Management 的一部分。

    这是来自a MegaSolutions post 的一些示例代码。

    using System;
    using System.Collections.Generic; 
    using System.Text; 
    using System.Management; 
    
    
    class ProcessObserver : IDisposable 
    { 
        ManagementEventWatcher m_processStartEvent = null; 
        ManagementEventWatcher m_processStopEvent = null; 
    
    
        public ProcessObserver(string processName, EventArrivedEventHandler onStart, EventArrivedEventHandler onStop) 
        { 
            WqlEventQuery startQuery = new WqlEventQuery("Win32_ProcessStartTrace", String.Format("ProcessName='{0}'", processName)); 
            m_processStartEvent = new ManagementEventWatcher(startQuery); 
    
    
            WqlEventQuery stopQuery = new WqlEventQuery("Win32_ProcessStopTrace", String.Format("ProcessName='{0}'", processName)); 
            m_processStopEvent = new ManagementEventWatcher(stopQuery); 
    
    
            if (onStart != null) 
                m_processStartEvent.EventArrived += onStart; 
    
    
            if (onStop != null) 
                m_processStopEvent.EventArrived += onStop; 
        } 
    
    
        public void Start() 
        { 
            m_processStartEvent.Start(); 
            m_processStopEvent.Start(); 
        } 
    
    
        public void Dispose() 
        { 
            m_processStartEvent.Dispose(); 
            m_processStopEvent.Dispose(); 
        } 
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-09
      • 2015-12-05
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      相关资源
      最近更新 更多