Tài liệu thực hành môn Nhập môn điện toán - Bài thực hành số 3.2: Viết chương trình liệt kê các process đang chạy

Trang 1  
MÔN : NHẬP MÔN ĐIỆN TOÁN  
Bài thực hành số 3.2 : Viết chương trình liệt kê các process đang chạy  
I. Mục tiêu :  
▪
Giúp SV tìm hiểu và biết cách lập trình truy xuất danh sách các Process đang chạy  
trên Windows.  
II. Nội dung :  
▪
Xây dựng chương trình nhỏ hiển thị danh sách các Process đang chạy trên Windows.  
III. Chuẩn đầu ra :  
▪
Sinh viên nắm vững và viết thành thạo các ứng dụng xử lý Process trên Windows.  
IV. Qui trình :  
1. Dùng VS .Net, tạo 1 Project VC++ quản lý ứng dụng có 1 form giao diện, form này chứa  
1 listbox hiển thị và 1 button.  
2. Code của hàm xử lý Click trên button như sau :  
//ham tim va hien thi cac process dang chay len Listbox  
void CListProcessesDlg::OnBnClickedOk()  
{
// TODO: Add your control notification handler code here  
//khai baáo caác biïën cêìn duâng  
long lRet;  
int i;  
DWORD cbNeeded;  
DWORD cProcess;  
HANDLE hProcess;  
DWORD cb = 2048*4;  
HMODULE Modules[200];  
WCHAR ModuleName[500];  
int nSize = 500;  
DWORD *lpIDProcess = new DWORD(2048);  
int ret = 0;  
//tòm danh saách caác ID process àang chaåy  
if (EnumProcesses(lpIDProcess,cb,&cbNeeded)==0) return;  
cProcess = cbNeeded/4;  
lpIDProcess = new DWORD(cProcess);  
cb = cbNeeded;  
if (EnumProcesses(lpIDProcess,cb,&cbNeeded)==0) return;  
//duyïåt tûâng process vaâ so saánh tïn gúåi nhúá cuãa noá  
for (i = 0; i< cProcess;i++) {  
//tòm handle cuãa process  
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,  
0, lpIDProcess[i]);  
//kiïím tra  
if (hProcess != 0) {  
//tòm danh saách caác module cêëu thaânh process  
lRet = EnumProcessModules(hProcess, Modules, 200, &cbNeeded);  
//nïëu coá, tòm tïn cuãa module àêìu tiïn trong danh saách  
if (lRet != 0) {  
lRet = GetModuleFileNameExW(hProcess, Modules[0], ModuleName,  
nSize);  
if(lRet !=0) {  
//neu co thi hien thi len Listbox  
m_list.AddString(ModuleName);  
}
}
}
//àoáng handle cuãa process  
lRet = CloseHandle(hProcess);  
if (ret ==1) return;  
}
Trang 2  
return;  
CDialogEx::OnOK();  
}
3. Chọn menu Debug.Start Debugging để dịch và chạy ứng dụng. Nếu có lỗi thì phân tích  
và sửa lỗi.  
4. Nếu ứng dụng chạy, Click button OK, danh sách Process đang chạy sẽ hiển thị. Nếu có  
lỗi thì phân tích và sửa lỗi.  
doc 2 trang myanh 23060 Free
Bạn đang xem tài liệu "Tài liệu thực hành môn Nhập môn điện toán - Bài thực hành số 3.2: Viết chương trình liệt kê các process đang chạy", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • doctai_lieu_thuc_hanh_mon_nhap_mon_dien_toan_bai_thuc_hanh_so_3.doc