- [C#] Hướng dẫn giải nén file *.rar với tiến trình progress bar winform
- [C#] Chia sẻ source code make Crazy Error Message Effect Bomb Windows
- [C#] Lập trình ứng dụng theo mô hình MVP Model-View-Presenter Pattern Winform
- [C#] Giới thiệu và những thứ hay ho từ thư viện System.Reactive của Microsoft
- [C#] Hướng dẫn tạo ứng dụng Chat với GPT sử dụng Open AI API
- [DEVEXPRESS] Tạo month picker trên DateEdit Winform C#
- [DATABASE] Cách sử dụng và lưu ý khi sử dụng khóa ngoại (Foreign Key) trong Sqlserver
- [C#] Garbage Collector (GC) là gì? Cách giải phóng bộ nhớ trên ứng dụng Winform khi các đối tượng không còn sử dụng
- [C#] Cách tính độ tương phản màu sắc Contrast Color mà con người có thể nhìn thấy được
- [C#] Hướng dẫn mã hóa mật khẩu tài khoản ứng dụng đúng chuẩn Men
- [C#] Sử dụng Open AI Chat GPT viết ứng dụng Count down timer có hiệu ứng trên winform
- [DATABASE] Chia sẻ dữ liệu Pantone Color sql và json api
- [SQLSERVER] Tạo mã sản phẩm tự động như: SP0001, SP0002, SP0003... sử dụng Trigger
- [C#] Hướng dẫn kiểm tra phiên bản NET Framework cài đặt ở máy tính
- [C#] Hướng dẫn đọc file excel đơn giản sử dụng thư viện Epplus
- [C#] ConcurrentBag là gì và cách sử dụng nó trong lập trình bất đồng bộ
- [C#] AutoResetEvent là gì và cách sử dụng
- [DEVEXPRESS] Chia sẻ source code cách tạo biểu đồ sơ đồ tổ chức công ty Org Chart trên Winform C#
- [C#] Hướng dẫn tạo Auto Number trên Datagridview winform
- [DATABASE] Hướng dẫn tạo Procedure String Split in Mysql
[C#] Bắt sự kiện bật, tắt chương trình. Event start, stop process
C# hỗ trợ người lập trình biết được chương trình nào vừa được bắt đầu, chương trình nào vừa kết thúc thông qua sự kiện EventArrivedEventHandler
của ManagementEventWatcher
nằm trong bộ thư viện System.Management.
Để bắt được các sự kiện này, đầu tiên chương trình phải có quyền admin. Để thực hiện gán quyền admin cho chương trình xem thêm .
[C#] Hướng dẫn chạy ứng dụng dưới quyền Administrator trong lập trình csharp
Sau khi thêm quyền admin cho chương trình, ta thoát visual ra và chạy lại nó với quyền admin
Chú ý: nếu không sử dụng được ManagementEventWatcher thì phải thực hiện Add reference System.Management bằng tay
Rồi, ok code như sau:
1. Bắt sự kiện chương trình mới được bật lên
void ChuongTrinhBat()
{
WqlEventQuery q = new WqlEventQuery("Win32_ProcessStartTrace");
ManagementEventWatcher w = new ManagementEventWatcher(q);
w.EventArrived += new EventArrivedEventHandler(voidChuongTrinhBat);
w.Start();
}
private void voidChuongTrinhTat(object sender, EventArrivedEventArgs e)
{
string s = "";
foreach (var pd in e.NewEvent.Properties)
if(pd.Value != null)
if (pd.Name == "ProcessName")// ngoai ra con co ProcessID, TIME_CREATED
s += pd.Value.ToString() + "
";
MessageBox.Show("Co mot chuong trinh vua moi tat
" + s);
}
2. Bắt sự kiện chương trình bị tắt đi
void ChuongTrinhTat()
{
ManagementEventWatcher w1 = new ManagementEventWatcher("select ProcessName from Win32_ProcessStopTrace");
w1.EventArrived += new EventArrivedEventHandler(voidChuongTrinhTat);
w1.Start();
}
private void voidChuongTrinhBat(object sender, EventArrivedEventArgs e)
{
string s = "";
foreach (var pd in e.NewEvent.Properties)
if (pd.Value != null)
if (pd.Name == "ProcessName")// ngoai ra con co ProcessID, TIME_CREATED
s += pd.Value.ToString() + "
";
MessageBox.Show("Co mot chuong trinh vua moi bat
" + s);
}
- Ngoài ra có thể chỉnh lại cái đoạn select một chút để lấy những giá trị cần thiết như:
+ Lấy ProcessName: select ProcessName from Win32_ProcessStopTrace
+ Lấy thời gian: select TIME_CREATE from Win32_ProcessStartTrace
Theo http://thuvienwinform.blogspot.com