2013-08-12 51 views
19

Tôi gặp sự cố khi nhận được PID cụ thể của quá trình, vấn đề với quy trình này là quá trình ẩn, không hiển thị trên trình quản lý tác vụ/quyền hạn, hoàn toàn bị ẩn.Tìm id tiến trình bằng tay cầm của cửa sổ

những gì tôi đã làm xa là cửa sổ chính xử lý của quá trình này, câu hỏi là, làm thế nào tôi có thể nhận được pid của nó.

những gì tôi đang cố gắng làm là đọc bộ nhớ của quá trình này và chỉnh sửa nó, nhưng không thể làm như vậy mà không có PID tôi đoán (vì tôi cần lấy địa chỉ cơ sở trong bộ nhớ).

Vì vậy, nếu có ai có cách giải quyết hoặc điều gì đó cho tôi, điều đó sẽ rất tuyệt vời.

P.S: quá trình này không hiển thị trong Process.GetProcesses().

ty!

+0

Bạn có cần id tiến trình ...? – Aravind

Trả lời

34

Bạn có thể sử dụng Windows API sau:

[DllImport("user32.dll", SetLastError=true)] 
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId); 

Bạn vượt qua trong HWND và sử dụng các tham số ra để trả lại PID.

Bạn có thể đọc thêm về chức năng này ở đây trên MSDN - http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522(v=vs.85).aspx

+0

cảm ơn rất nhiều bạn đời, làm việc như một sự quyến rũ :) –

7

Bạn sẽ cần phải sử dụng P/gọi với các API Windows.

Khai báo một hàm trong lớp học của bạn như

[DllImport("User32.dll")] 
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); 

và sau đó gọi nó trong lớp học của bạn.

Xem PInvoke.

+0

Có được từ pinvoke.net, nhưng bạn đã đúng! –

+0

Điều này thực sự trả về 0, không làm việc cho tôi nhưng cảm ơn bạn đã trả lời. –

Các vấn đề liên quan