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ố 16 kết quả

Đề tài: [C#] Vấn đề về process

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

    Mặc định [C#] Vấn đề về process

    Mình đang định làm chương trình quản lý game, trong chương trình sẽ cho ta add những games mình muốn quản lý, và sẽ quy định số giờ chơi cho games đó. Khi ta chạy games đó thì chương trình sẽ bắt process của games đó và bắt đầu đếm thời gian, sắp hết thời gian thì máy sẽ báo = âm thanh trong thùng máy chứ ko phải âm thanh phát = loa, và khi hết giờ thì kill process đó đi.

    Mình ko bít phải bắt process của game đó = cách nào, vì nếu quản lý game theo tên tức là bắt process byname ( VD: như War3.exe) thì sợ người chơi sẽ thay đổi tên file. Mình có dùng thử 2 soft chức năng tương tự là Stopgame và BaothoFilter nhưng 2 soft này hình như cũng ko hoàn chỉnh lắm, có những game (ở đây là có những games chứ ko phải games nào cũng vậy nghen) add vào rồi nhưng ta đổi tên file thì nó vẫn chạy mà ko có sự quản lý của chương trình.

    Ngoài ra mún làm phần âm thanh trong máy thì nên xem phần nào.

    Thanks mọi người đã quan tâm.
    Đã được chỉnh sửa lần cuối bởi Jaychen : 07-12-2007 lúc 06:08 AM.

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

    Để liệt kê các process đang chạy bạn nên tìm hiểu namespace System.Diagnostics, ví dụ sau liệt kê các process
    Code:
                System.Diagnostics.Process[] pr;
                pr = System.Diagnostics.Process.GetProcesses();
    
                foreach (System.Diagnostics.Process p in pr)
                {
                    MessageBox.Show(p.ProcessName);
                }
    Để phòng trường hợp tên appication bị thay đổi ta dùng cách sau, thay vì lưu thông tin theo name, ta lưu thông tin game theo file ID, từ process đọc ra đường dẫn của file chạy, đọc 1 dãy 10byte theo 1 offset nào đó ví dụ 1088
    rùi lưu các byte ID cùng với các thông số khác như manufature name, description, dùng 1 thread hoặc timer quét các process đang chạy, process nào có ID trùng thì kill luôn, như vậy giải quyết triệt để.
    Còn phát âm thì có source sẵn của member tenlbh ,bạn tìm lại nhé

  3. #3
    Ngày gia nhập
    10 2007
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi phamtiensinh Xem bài viết
    Để liệt kê các process đang chạy bạn nên tìm hiểu namespace System.Diagnostics, ví dụ sau liệt kê các process
    Code:
                System.Diagnostics.Process[] pr;
                pr = System.Diagnostics.Process.GetProcesses();
    
                foreach (System.Diagnostics.Process p in pr)
                {
                    MessageBox.Show(p.ProcessName);
                }
    Để phòng trường hợp tên appication bị thay đổi ta dùng cách sau, thay vì lưu thông tin theo name, ta lưu thông tin game theo file ID, từ process đọc ra đường dẫn của file chạy, đọc 1 dãy 10byte theo 1 offset nào đó ví dụ 1088
    rùi lưu các byte ID cùng với các thông số khác như manufature name, description, dùng 1 thread hoặc timer quét các process đang chạy, process nào có ID trùng thì kill luôn, như vậy giải quyết triệt để.
    Còn phát âm thì có source sẵn của member tenlbh ,bạn tìm lại nhé
    Thanks PhamTienSinh

    Cái file ID bạn nói mình vẫn chưa hiểu lắm, nó có giống Process ID ko? pác có tài liệu thì share mình ngâm cứu với, kiếm hoài ko ra tài liệu nào hết >.< .

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

    Bạn chưa hiểu ý của tôi , byte ID có có ý chỉ thay vì kiếm theo tên, ta kiếm theo 1 chuỗi ký tự xác địng nào đó trong exe file, giả dụ ta cấm file empires.exe, thì đầu tiên ta cần lưu các thông tin như
    FileName :
    Size : Ví dụ 344556
    Offset : 2000
    Byte ID : Là 1 mảng 10 byte chẳng hạn đươc đọc từ vị trí 2000 trong file empires.exe
    như vậy chỉ cần kiểm tra nếu process đang chạy có size và byte ID trùng với
    1 mẩu tin trong CSDL thì kill process đó(nếu size khác nhau thì không cần phải so tiếp byte ID )

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

    rùi lưu các byte ID cùng với các thông số khác như manufature name, description, dùng 1 thread hoặc timer quét các process đang chạy, process nào có ID trùng thì kill luôn, như vậy giải quyết triệt để.
    mình vừa mới học C# nên không hiểu nhiều lắm ý của bạn nói nếu lưu các thông số ở trên vào đâu hàm nào chịu trách nhiệm quản lý vậy ?
    mình đang làm quen với hàm API nên nếu có hàm quản lý loại này trong API thì cho mình biết với
    thank you hen

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

    Mặc định [C#] Vấn đề về process

    Không phải đụng API nào hết, bạn vui lòng đọc kỹ lại câu trả lơi

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

    Uhm làm theo cách của phamtiensinh có vẻ là 1 cách hay. Tránh trường hợp đổi tên file. Khả năng trùng 10 bytes là ... never
    Keep moving forward!

    ... Retired ...

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

    Ý mình muốn nói là mình đang học về hàm API nên mình muốn tận dụng triệt để các hàm này để tìm ra các process cần kill . Nên mình muốn hỏi bạn nào rành về API để làm vấn đề này trong C#

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

    Vậy hãy tìm hiểu cách sử dụng các API
    EnumProcesses
    OpenProcess
    EnumProcessModules
    CHúc bạn chế được cái bánh xe như ý

  10. #10
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Đọc 1 dãy byte tại 1 địa chỉ xác định sẽ không khả thi và không phát hiện ra game khi game đó ra new version.
    Detect thêm Version Info trong Resource, search 1 chuỗi hay byte pattern trong process memory space. Không nên hardcode.
    Vd để phát hiện OllyDbg, tui có thể quét hết các process, tìm chuỗi OllyDbg trong toàn bộ memory của exe của process (loại trừ memory của dll).

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. Thắc mắc Theo Dõi Process. Bắt một process mới hoạt động.
    Gửi bởi nguyengiaba trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 20
    Bài viết cuối: 09-11-2010, 11:28 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