Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: cho mình hỏi về thao tác giữa hai mảng

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    1

    Wink cho mình hỏi về thao tác giữa hai mảng

    Mình đang làm một ứng dụng trong đó có liên quan đến vấn đề về xử lý 2 mảng
    khi sự kiện load của form được thi hành nó sẽ tự động nạp vào một MANGBANDAU danh sách các process
    Sau đó mình dùng Timer để quét cứ 3 giây quét một lần sau đó danh sách process tự động được cập nhật vào MANGHIENTAI
    mình muốn hỏi trong C# hàm nào hổ trợ mình lọc được các thành phần chỉ có trong MANGHIENTAI mà KHÔNG có trong MANGBANDAU. Có nghĩa là mình muốn phát hiện process mới được thêm vào
    VÍ DỤ : khi mình chạy chương trình , form của nó vừa được đưa lên , sau đó mình mở Windows Media Player lập tức MANGHIENTAI cập nhật được có thêm process wmplayer mà MANGBANDAU không có
    Và dùng hàm nào đó (hàm nào đây mình đang cần sự gợi ý????) để "LỌC" được process wmplayer nhanh chóng ??????
    Lúc trước mình cũng nghĩ đến cách dùng 2 vòng lập for để so sánh 2 mảng. Tìm process wmplayer nhưng mình nghĩ nó không tối ưu (hay nói cách khác là quá tệ) vì phải chạy tới 2 vòng lặp
    Mong các bạn tư vấn cho mình biết đó là hàm nào (nếu có???) chỉ cần gợi ý thôi cũng được Mình sắp phải nộp bài rồi

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    HCM
    Bài viết
    365

    Trời,tất cả các lớp array,arraylis, list,collection... đều hỗ trợ method search,contains,IndexOf ..hết

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà nội
    Bài viết
    77

    Trích dẫn Nguyên bản được gửi bởi nguyen_lt Xem bài viết
    Mình đang làm một ứng dụng trong đó có liên quan đến vấn đề về xử lý 2 mảng
    khi sự kiện load của form được thi hành nó sẽ tự động nạp vào một MANGBANDAU danh sách các process
    Sau đó mình dùng Timer để quét cứ 3 giây quét một lần sau đó danh sách process tự động được cập nhật vào MANGHIENTAI
    mình muốn hỏi trong C# hàm nào hổ trợ mình lọc được các thành phần chỉ có trong MANGHIENTAI mà KHÔNG có trong MANGBANDAU. Có nghĩa là mình muốn phát hiện process mới được thêm vào
    VÍ DỤ : khi mình chạy chương trình , form của nó vừa được đưa lên , sau đó mình mở Windows Media Player lập tức MANGHIENTAI cập nhật được có thêm process wmplayer mà MANGBANDAU không có
    Và dùng hàm nào đó (hàm nào đây mình đang cần sự gợi ý????) để "LỌC" được process wmplayer nhanh chóng ??????
    Lúc trước mình cũng nghĩ đến cách dùng 2 vòng lập for để so sánh 2 mảng. Tìm process wmplayer nhưng mình nghĩ nó không tối ưu (hay nói cách khác là quá tệ) vì phải chạy tới 2 vòng lặp
    Mong các bạn tư vấn cho mình biết đó là hàm nào (nếu có???) chỉ cần gợi ý thôi cũng được Mình sắp phải nộp bài rồi
    nếu cậu đã lấy các process khi nó được nạp thì cần gì phải lọc nữa nhỉ,vì cậu chỉ đưa nó vào mảng hiện tại,đâu có liên quan đến mảng ban đầu,như vậy 2 mảng hoàn toàn độc lập,cứ lấy các phần tử trong mảng hiện tại thôi
    còn khi cậu muốn lấy toàn bộ các process thì ghép 2 mảng lại với nhau
    Sống ở trên đời cần có một TẤM LÒNG để lúc đói còn có chỗ mà nhét THỨC ĂN

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

    ý mình là mình dùng timer quét cứ 3 giây quét một lần
    Code:
    Process[] MANGHIENTAI=Process.GetProcesses();
    như vậy cứ 3 giây MANGHIENTAI lại được cập nhật danh sách process mới như vậy thì làm sao mình PHÁT HIỆN được có process mới (ví dụ như wmplayer mới thêm vào) so với MANGBANDAU

  5. #5
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Vậy cậu cho hỏi tí, cậu cần biết có process mới xuất hiện để làm gì ?
    Keep moving forward!

    ... Retired ...

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

    Mặc định cho mình hỏi về thao tác giữa hai mảng

    Mình không hiểu ý của bạn thanhlv ơi !!
    MANGHIENTAI của mình là MANGBANDAU được mở rộng.
    MANGHIENTAI luôn thay đổi do cứ 3 giây timer quét một lần
    MANGBANDAU thì số lượng process không bao giờ thay đổi do được nạp vào trong sự kiện Load
    MANGHIENTAI vừa chứa các process của MANGBANDAU vừa chứa luôn các process của chương trình mà người dùng bật lên
    Câu hỏi đặt ra là :
    Hàm nào có thể tự động so sánh thành phần của 2 mảng sau đó trả về cho
    ta cho ta thành phần chỉ có trong MANGHIENTAI mà không có trong MANGBANDAU -> nói chung là tìm process mới được thêm vào
    Chương trình của mình là chương trình quản lý game, quản lý các chương trình khác
    Lúc trước mình định quét process cứ 3 giây quét một lần
    Sau đó từ danh sách các process tìm ra danh sách đường dẫn của process rồi lấy thông tin về kích cỡ các file. So sánh cứ trùng size là kill luôn
    Mình nhận thấy cách làm này thì hao tài nguyên quá nên mình định làm cách này.
    Làm sao để lấy được danh sách process mà người dùng vừa mới kích hoạt vào. vd : media player,jet audio, các game , firefox ......Sau đó từ danh sách đó lấy đường dần file, lấy thông tin file để kill nhanh chóng đỡ hao tài nguyên.

    Đây là code của mình về tìm đường dẫn của process. Mình đã thử rồi nó chạy đúng (nếu bạn nào có code hay hơn cho mình xin với để tham khảo).
    Rất mong nhận được ý kiến của các bạn
    Code:
    Process[] blockprocs = Process.GetProcesses();
                    foreach (Process u in blockprocs)
                    {
                    String[] properties = { "Name", "ExecutablePath" };
                    SelectQuery s = new SelectQuery("Win32_Process","Name = '"+ u.ProcessName+".exe' ", properties);
                    ManagementObjectSearcher searcher = new ManagementObjectSearcher(s);
                    foreach (ManagementObject o in searcher.Get())
                    {
                       listBox3.Items.Add(o["ExecutablePath"]);
                    }

  7. #7
    Ngày gia nhập
    11 2007
    Bài viết
    1

    Đây là bai tutorial của bạn neverland87 về Arraylist
    Mình đã tham khảo thử rồi nhưng không có hàm mình cần tìm

    PUBLIC PROPERTIES – CÔNG DỤNG
    Capacity : trả về hoặc cho thiết đặt số phần tử mà ArrayList có thể chứa.
    Count : cho biết số phần tử hiện có trong ArrayList
    IsFixedSize: trả về một trị bool cho biết liệu ArrayList mang kích thước cố định hay không
    IsReadOnly: trả về 1 trị bool cho biết liệu xem ArrayList thuộc loại ReadOnly hay không
    Item: trả về hoặc thiết đặt phần tử mảng về chỉ mục được chỉ định. Trên C#, thuộc tính này là indexer (bộ rảo chỉ mục) đối với class ArrayList

    PUBLIC METHODS – CÔNG DỤNG
    Add: thêm 1 đối tượng vào cuối ArrayList
    AddRange: thêm các phần tử của một Icolletion vào cuối ArrayList
    BinarySearch: sử dụng giải thuật binary search để xác định vị trí của một phần tử hoặc một phần trên ArrayList đã được sắp xếp
    Clear: xóa sạch ArrayList
    Clone: tạo 1 bản sao của ArrayList
    Contains: xác định 1 phần tử nào đó có nằm trong ArrayList hay không
    CopyTo: Sao chép ArrayList hoặc 1 phần tử nào đó sang mảng 1 chiều
    IndexOf: trả về zero-based index của sự xuất hiện đầu tiên của 1 trị trên ArrayList hoặc trên 1 phần mảng
    Insert: chèn thêm 1 phần tử vào ArrayList tại chỉ mục được chỉ định
    InsertRange: chèn các phần tử của 1 collection vào ArrayList tại chỉ mục được chỉ định
    LastIndexOf: trả về zero-based index của sự xuất hiện cuối cùng của 1 trị trên ArrayList hoặc trên 1 phần mảng
    Remove: gỡ bỏ sự xuất hiện đầu tiên của một specific object ra khỏi ArrayList
    RemoveAt: gỡ bỏ những phần tử tại chỉ mục được chỉ định của ArrayList
    RemoveRange: gỡ bỏ 1 khoảng phần tử từ ArrayList
    Reverse: đảo ngược thứ tự của các phần tử trên ArrayList.
    SetRange: sao chép các phần tử của một collection chồng lên 1 phần phần tử trên ArrayList
    Sort: sắp xếp các phần tử trên ArrayList hoặc trên 1 phần mảng
    ToArray: sao chép các phần tử của ArrayList về 1 bản dãy
    TrimToSize: thiết đặt khả năng về số phần tử hiện hành trên ArrayList
    Nếu mình dùng hàm Contains xác dịnh phần tử có nằm trong MANGHIENTAI
    vd như là : wmplayer
    nếu người dùng đổi tên file trên thành abc.exe thì làm sao có thể phát hiện được nó
    Đã được chỉnh sửa lần cuối bởi nhc1987 : 11-01-2008 lúc 01:05 PM.

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    HCM
    Bài viết
    365

    Chương trình đang chạy thì đổi tên sao đc,nếu nhiều instance cùng kích hoạt vs dụ có nhiều cửa sổ media player thì PID cũng luôn khác nhau
    phương án đơn giản là add vô 1 collection với key là PID khi cần kiểm tra xem process có trong collection ko thì dùng collection.contains( PID), chịu khó tìm hiểu lại chút là được, tất cả các class arraylist, array, hasteable,list đều xài được hết và áp dụng tốt trong hợp của bạn.Tuy nhiên dùng generic collection sẽ tiện nhất.

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