2008-11-18 33 views
22

Các phần của ứng dụng của tôi là trong C++ dưới cửa sổ. Tôi cần id quá trình cho quá trình hiện tại. Có suy nghĩ gì không?ms C++ nhận pid của quá trình hiện tại

+0

câu hỏi hay về thực tế –

+2

Lần đầu tiên tôi đọc nó là "loại bỏ quy trình hiện tại" :) – Otherside

+0

@Otherside khiến tôi nhìn vào từ vựng – SerG

Trả lời

33

Chức năng GetCurrentProcessId sẽ thực hiện việc này.

+3

yup, đã thực hiện điều đó; funny như thế nào mơ hồ thông tin này là ... –

+0

Ngoài ra còn có '_getpid()' - http://msdn.microsoft.com/en-us/library/t2y34y40%28v=vs.80%29.aspx – user93353

+1

'_getpid () 'chỉ cần gọi' GetCurrentProcessId() '. Chỉ có một process id và hàm mức thấp nhất trả về nó là 'GetCurrentProcessId()'. –

5

Đã trưởng thành quen với việc nhìn thấy bãi và bãi mã để hoàn thành các nhiệm vụ dường như đơn giản, tôi đã rất ngạc nhiên trước sự trực tiếp của GetCurrentProcessId. Đầu ngày hôm nay, tôi đã xem nó chạy trong một trình gỡ lỗi, khi tôi đang theo dõi một đoạn mã mới trong một quy trình DllMain kết hợp ID tiến trình với một GUID được nhúng để tạo một tên duy nhất cục bộ cho một mutex.

Sau đây là toàn bộ quy trình, cả ba hướng dẫn máy.

mov   eax,fs:[00000018] 
mov   eax,dword ptr [eax+20h] 
ret 

BTW, hai hàm API của Windows blessedly đơn giản khác là GetLastErrorSetLastError; thực sự, cả hai đều khá giống với cái này.

+0

Tôi quên đề cập đến trong đó "ngắn, ngọt" nhóm là GetProcessHeap. –

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