Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Cách làm một chương trình quản lý Process đơn giản !

  1. #1
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Talking Cách làm một chương trình quản lý Process đơn giản !

    [Tutorials C#] How to create a simple Process Manager !
    Hình mẫu :







    Giả lập chương trình quản lý Process đơn giản có các chức năng :

    + Watch : xem danh sách các Process đang chạy
    + Create : tạo Process mới
    + Kill : tắt Process

    A. Design nào :
    #Các cậu xem photo design nhé ^^!

    Chú ý : _Tớ luôn đặt tên theo kiểu này : thành_phần [chữ thường] + tên [chữ hoa]
    %Ví dụ : nut Exit : btExit (-button : text = “Exit” ; Click vào là thoát -)

    #Các thành phần trong chương trình :
    + Form : mainForm
    + Button : btAbout, btCreate, btKill, btWatch,btExit
    + ListView : ltvMain

    B. Cú pháp ^^! :
    + Đầu tiên phải có thong tin các Process đang chạy chứ
    #thêm vào : using System.Diagnostics;
    #Vậy là có thể truy nhập class Process rồi
    $Tạo một object : procsBlock[] thuộc Process
    $Cách lấy các Process đang chạy :
    Code:
     Process[] procsBlock = Process.GetProcesses();
    $Cách lấy số lượng Process đang chạy
    Code:
     int procsMax = procsBlock.Length;
    $Cách lấy các Process Name hiện tại :
    Code:
     string[] procsName = new string[procsMax];
    	Int idx=0;
    	While(idx<procsMax)
    		procsName[idx] = procsBlock[idx++].ProcessName;
    $Cách lấy các Process Id
    Code:
     string[] procsId = new string[procsMax];
    	Int idx=0;
    	While(idx<procsMax)
    		procsId[idx] = procsBlock[idx].Id.ToString(); // ProcessObject[index].Id trả về kiểu int nên mình phải chuyển sang string. Nếu bạn thích có thể lấy kiểu int[] cho procsId[] cũng được
    [!—Hết phần 1--]

    <Thắc mắc xin vào hỏi đáp>
    None!

  2. #2
    Ngày gia nhập
    05 2007
    Bài viết
    6

    Mặc định Chờ ...

    Sao chưa có bài tiếp theo hở hở!!

    Code:
    string[] procsName = new string[procsMax];
    	Int idx=0;
    	While(idx<procsMax)
    		procsName[idx] = procsBlock[idx++].ProcessName;
    Làm vòng for cho khỏe hè?
    Code:
    string[] procsName = new string[procsMax];
    for(int i=0; i<procsMax; i++)
    	procsName[i] = procsBlock[i].ProcessName;

  3. #3
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Talking [Tiếp] Xử lý List View Control

    #Bị ốm mấy ngày...

    @Dùng vòng lặp nào cũng được, để tránh các trường hợp bị lỗi không mong muốn, bạn nên tham khảo "C# : Coding Standard for Programmers"

    #Bây giờ làm việc với ListView

    %Đầu tiên thêm vào các cột :
    Code:
     private void initLVColumn()
            {
                lvtProcess.Columns.Add("1.Process ID", 100, HorizontalAlignment.Left);
                lvtProcess.Columns.Add("2.Process Name", 150, HorizontalAlignment.Left);
                lvtProcess.Columns.Add("3.Session ID", 100, HorizontalAlignment.Left);
            }
    Method : listView.Columns.Add(string txt, int width, HorizontalAlignment textAlign)

    %Tiếp, khởi tạo các items và sub-items trong ListView :
    Code:
    private ListViewItem[] crtLVItem()
            {
                ListViewItem[] itemList   = new ListViewItem[procsBlock.Length];
                string[]       procsName  = new string[procsBlock.Length];
                string[]       procsId    = new string[procsBlock.Length];
                string[]       procsSesId = new string[procsBlock.Length];
    
                procsName  = getProcsNameList();
                procsId    = getProcsIDList();
                procsSesId = getProcsSesIDList();
    
                for (int idx = 0; idx < procsBlock.Length; idx++) 
                {
                    itemList[idx] = new ListViewItem();
                    /* Lay Procs Name */
                    itemList[idx].Text = procsId[idx];
                        /* Lay SubItems */
                        itemList[idx].SubItems.Add(procsName[idx]);
                        itemList[idx].SubItems.Add(procsSesId[idx]);
                }
    
                return itemList;
            }
    $Cách tạo item :
    Code:
              ListViewControl item = new ListViewControl();
    $Cách thêm vào sub-items :
    Code:
             item.SubItems.Add(string txt);
    %Tiếp, cài đặt các items và sub-items vào ListView
    Code:
    private void initLVItem()
            {
                ListViewItem[] listItem = new ListViewItem[procsBlock.Length];
                listItem = crtLVItem();
    
                lvtProcess.Items.AddRange(listItem);
            }
    %Cuối cùng kích hoạt cho ListView
    Code:
     private void initListView()
            {
                initLVColumn();
                initLVItem();
            }
    %Sau đó update vào sự kiên nút Watch
    Code:
            private void btWatch_clicked(object Sender, EventHandler e)
            {
             initListView();
             }
    %Vậy là xong việc thống kê các process đang chạy trên client

    #Bây giờ việc cài đặt thêm tính năng tạo Process hay Kill process rất đơn giản

    %Để tạo process :
    Code:
            Process myProcs = new Process();
            myProcs.Create([path]);
    %Để kill process :
    Code:
            Process myProcs = new Process();
            myProcs.Kill(procsName);
    ^Co nhiều overload cho bạn tùy chọn ...

    !<Cuối cùng bạn có sản phẩm quản lý process đơn giản rồi đó>
    Chúc may mắn ^_^!
    None!

  4. #4
    Ngày gia nhập
    03 2007
    Bài viết
    5

    đại ca pete sao không cho source luôn để anh em tham khảo chứ, hix.

  5. #5
    Ngày gia nhập
    07 2009
    Bài viết
    12

    Ôi trời, sao bạn không up Project lên, mình làm theo bạn lỗi tùm lum :
    private void initLVColumn()
    {
    lvtProcess.Columns.Add("1.Process ID", 100, HorizontalAlignment.Left);
    lvtProcess.Columns.Add("2.Process Name", 150, HorizontalAlignment.Left);
    lvtProcess.Columns.Add("3.Session ID", 100, HorizontalAlignment.Left);
    }
    Cái "lvtProcess" ở đâu ra vậy, trong các thành phần chương trình hình như chỉ có "ltvMain" thôi mà, xem lại dùm mình đi.. Thank nhiều.....
    Đã được chỉnh sửa lần cuối bởi xlawsx : 11-08-2009 lúc 08:35 AM.

  6. #6
    Ngày gia nhập
    06 2007
    Bài viết
    6

    Mặc định Cách làm một chương trình quản lý Process đơn giản !

    Bạn đổi tên ltvMain thành lvtProcess, hoặc đổi đoạn code ltvProcess thành lvtMain, chỉ là cách đặt tên .
    Vì chương trình sử dụng có 1 cái ListView mà.
    Đã được chỉnh sửa lần cuối bởi ttv520 : 12-08-2009 lúc 12:30 AM.

  7. #7
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Thử làm cái này theo hướng dẫn của anh X, nhưng do hạn chế kiến thức nên chưa tạo được chức năng Create và Kill process.

    using VS 2k8
    Attached Files Attached Files

  8. #8
    Ngày gia nhập
    07 2009
    Bài viết
    12

    Hix hix, coi xong cái project cái hiểu đc liền à, dù sao cũng cảm ơn bạn đã tạo Tut này cho anh em.

  9. #9
    Ngày gia nhập
    06 2007
    Bài viết
    182

    Hướng dẫn chi tiết vãi. Lần sau ai có hướng dẫn thì làm như thế này nhé
    Chiến thắng bằng mọi thủ đoạn. Quan trọng là kết quả.

  10. #10
    Ngày gia nhập
    12 2009
    Nơi ở
    Cần Thơ
    Bài viết
    47

    thanks a X nhiều

Các đề tài tương tự

  1. Inter Process Communication - Share Memory Multi - Process
    Gửi bởi yaiba_forever trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 20
    Bài viết cuối: 11-01-2013, 10:38 PM
  2. Trả lời: 2
    Bài viết cuối: 19-10-2012, 04:20 PM
  3. [Linux API] Hướng Dẫn Kỹ Thuật Inter Process Memory và semaphore Nhiều Process
    Gửi bởi AlexF trong diễn đàn Thủ thuật, Tutorials và Mã nguồn
    Trả lời: 0
    Bài viết cuối: 21-04-2011, 11:06 PM
  4. cách lấy kết quả của 1 process trong C# như thế nào?
    Gửi bởi quanghoa trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 16-03-2010, 02:11 PM
  5. Inter Process Communication - Share Memory Multi - Process
    Gửi bởi yaiba_forever trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 13
    Bài viết cuối: 25-12-2008, 09:45 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn