2012年11月16日

イベントログを扱う

2005/11/01(Tue) 14:00
やっぱり奴は天才だ。C#は素晴らしい。.netは素晴らしい。勤怠を入力するとき、イベントログの停止時間を書いている。このときイベントビューアを開いてIDをフィルタするのだが、どのログだっけ、IDは何だっけ、とわからなくなる。そこでよーし、イベントログ停止を抽出するプログラムを作ろう、と思い立った。WEBで探してみると、あまり参考になる情報がない。あっても古い。せっかくVC++を買ったので、まずこいつかなと思ったのだが、わけがわからん。まるごとコピーしたのにDWORDが*DWORDがどうのこうのとエラーになる。なんとかコンパイルを通したが、さて、じゃあ中身を表示させようというところでまたわけわからん。あきらめてDelphiに挑戦するが、困難さはあまり変わらず・・・と、C#ではあっさり、下記のようにして実現できた。
自分で書いたのはbutton1.clickの中だけ。それもコード補完される候補を直感的に選んでほとんどできる。あとは、日付を見て選択するとかをつければ完璧だ。

2005/11/01(Tue) 14:04

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace eventlog2
{
public class WinForm : System.Windows.Forms.Form
{
private System.ComponentModel.Container components = null;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.TextBox textBox1;

public WinForm()
{
InitializeComponent();

}

protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}

private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(520, 40);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(96, 48);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// richTextBox1
//
this.richTextBox1.Location = new System.Drawing.Point(40, 24);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(424, 400);
this.richTextBox1.TabIndex = 1;
this.richTextBox1.Text = "richTextBox1";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(504, 128);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 2;
this.textBox1.Text = "6006";
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(640, 462);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.richTextBox1);
this.Controls.Add(this.button1);
this.Name = "WinForm";
this.Text = "WinForm";
this.ResumeLayout(false);
}
#endregion

[STAThread]
static void Main()
{
Application.Run(new WinForm());
}

private void button1_Click(object sender, System.EventArgs e)
{
richTextBox1.Clear();
button1.Text="please wait...";
button1.Update();


System.Diagnostics.EventLog[] logs;
logs=System.Diagnostics.EventLog.GetEventLogs();

foreach(System.Diagnostics.EventLog log in logs)
{
richTextBox1.AppendText(log.Log+"\n");
foreach (System.Diagnostics.EventLogEntry entry in log.Entries)
{
// richTextBox1.AppendText(entry.Message);
// dtNow.ToString("yyyy/MM/dd (ddd) HH:mm:ss");
int aaa = int.Parse(textBox1.Text);
if (entry.EventID.Equals(aaa))
{
richTextBox1.AppendText(entry.EventID.ToString()+" ");
richTextBox1.AppendText(entry.TimeWritten.ToString("yyyy/MM/dd HH:mm"));
richTextBox1.AppendText("\n");

}


}
}
button1.Text="done";
button1.Update();
}

private void textBox1_TextChanged(object sender, System.EventArgs e)
{

}
}
}


posted by delsoli at 17:57| C# | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。