存储其他程序的事件

时间:2011-05-13 11:27:51

标签: c# winforms events

我想在我自己的应用程序中存储来自其他应用程序的事件。事件示例:打开Word,最小化或打开文件时。

这样的事情可能吗?

2 个答案:

答案 0 :(得分:1)

Running a programopening a file是操作系统事件(它们涉及安全检查),可以使用Windows内置审核功能捕获。这些是偏离主题的,直接向ServerFault.com提出问题

最小化程序是应用程序消息的一个示例,以获取使用SetWindowsHookEx安装挂钩所需的消息。从.NET 4开始(引入并行运行时支持),可以使用C#完成,但不建议这样做。您需要注意的一个重要问题是,您的事件捕获代码必须永远不会生成自己的事件,否则您将发起连锁反应,导致所有正在运行的程序崩溃。

答案 1 :(得分:0)

使用EventLog

您必须将EnableRaisingEvents属性设置为true

当一个事件添加到指定的事件日志时  EntryWritten事件处理程序将引发

  

这是处理操作系统的最简单方法   事件

示例代码

private void frmMain_Load(object sender, EventArgs e)
{
    System.Diagnostics.EventLog s = new System.Diagnostics.EventLog("Application", ".", "");
    s.EnableRaisingEvents = true;
    s.EntryWritten += delegate(object st, System.Diagnostics.EntryWrittenEventArgs ew)
    {
        MessageBox.Show(ew.Entry.Message);
    };
}