nhập môn điện toán,nguyễn trung hiệp,dhbkhcm 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 tr[.]
Trang 1Trang 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 2Trang 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