我想在我自己的应用程序中存储来自其他应用程序的事件。事件示例:打开Word,最小化或打开文件时。
这样的事情可能吗?
答案 0 :(得分:1)
Running a program和opening 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);
};
}