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

Đề tài: Tìm process id chính xác như thế nào

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

    Mặc định Tìm process id chính xác như thế nào

    Chào các bạn. Mình muốn viết 1 chương trình, trong đó cần phải biết process id của 1 ứng dụng đã mở sẵn.
    Sau khi có window handle của ứng dụng đó, mình dùng hàm api getwindowthreadprocess để tìm process id, nhưng cái nó trả về cho mình lại là thread id chứ ko phải là id của process.
    Dùng Spy++ để tìm, thì trong tab Process ứng dụng của mình có 2 giá trị khác nhau, 1 cái là process ID, 1 cái là thread ID, và hàm trên chỉ trả lại cái thứ 2 cho mình
    Có bạn nào đã làm cái này rồi có thể chỉ cho mình cách lấy cái process ID đầu tiên của nó với

    Chương trình mình viết cho phép người dùng chọn cửa sổ ứng dụng, vì có thể có nhiều process cùng tên, rồi từ biết tên của cửa sổ ứng dụng để tìm ra window handle, rồi tìm ra process id ứng với nó, cho nên mình ko thể dùng cách tìm process ID từ process name dc :((

    Lưu ý: Không gửi 2 bài liền nhau cùng một đề tài (Posted by Dreaminess)

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

    Cậu đọc kỹ lại help của chưa.
    Trích trong MSDN:
    GetWindowThreadProcessId Function

    --------------------------------------------------------------------------------

    The GetWindowThreadProcessId function retrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window.

    Syntax

    DWORD GetWindowThreadProcessId( HWND hWnd,
    LPDWORD lpdwProcessId
    );
    Parameters

    hWnd
    [in] Handle to the window.
    lpdwProcessId
    [out] Pointer to a variable that receives the process identifier. If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable; otherwise, it does not.
    Return Value
    The return value is the identifier of the thread that created the window.

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

    Thx bạn, nhưng mình đã kiểm tra rồi, ban đầu cứ nghĩ mình lấy handle sai, nhưng hóa ra là do lấy nhầm ID của thread chứ ko phải của process :(

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

    Là sao, tui không hiểu ??? Code nó đơn giản, sao mà sai được, cậu đọc kỹ lại help chưa ?
    Code:
    DWORD dwThreadID = 0, dwProcessID = 0;
    dwThreadID = GetWindowThreadProcessId(hwnd_cua_you, &dwProcessID);
    printf("ProcessID = 0x%x\n", dwProcessID);
    printf("ThreadID = 0x%x\n", dwThreadID);
    Handle khác ID nha, đừng lẫn lộn, từ ID lấy được Handle là cả quá trình đấy (thread, process,...)
    Đã được chỉnh sửa lần cuối bởi TQN : 29-10-2007 lúc 10:51 PM.

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

    Bạn dùng tiện ích spy++ trong bộ VS2005 thử xem, nó sẽ liệt kê các window đang chạy, bạn chọn đại 1 cái rồi xem property của nó, ở tab process trong phần property sẽ hiện ra 2 cái ID, cái ở trên nó ghi là process ID, cái ở dưới ghi là thread ID.
    Khi mình dùng hàm trên thì nó luôn trả về thread ID, mà cái mình cần lấy là process ID, phải có cái này thì mới tính tiếp dc :(

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

    Mặc định Tìm process id chính xác như thế nào

    Cậu refresh lại 1 cái giùm !

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

    Ac, sry
    Sao lại ko để ý nhỉ :p
    Thx very much

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. Kill Process bằng việc Kill toàn bộ thread của Process đó trên VC++ như thế nào?
    Gửi bởi AdminPro trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 22-05-2009, 05:44 PM

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