2012-05-15 37 views
1

在C#中,它是直接獲得當前的進程ID和機器名:如何讓當前進程ID和計算機名,在C++

int processID = Process.GetCurrentProcess().Id; 
string machineName = Environment.MachineName; 

我怎樣才能找回它們在本地C++?

+4

你不能因爲這不是C++標準的一部分,它依賴於操作系統 –

+0

哪個操作系統是你上? –

+4

我喜歡'native C++'部分 – Ulterior

回答

5

當你評論的平臺是Windows 7,WINAPI提供GetCurrentProcessId()GetComputerName()

GetComputerName()簡單的例子:

const int BUF_SIZE = MAX_COMPUTERNAME_LENGTH + 1; 
char buf[BUF_SIZE] = ""; 
DWORD size = BUF_SIZE; 

if (GetComputerNameA(buf, &size)) // Explicitly calling ANSI version. 
{ 
    std::string computer_name(buf, size); 
} 
else 
{ 
    // Handle failure. 
} 
+0

I我不是C++程序員,在我添加這行DWORD WINAPI GetCurrentProcessId(void)後;在頭文件中,我該如何獲得ID? – olidev

+1

添加'#包括',只是調用函數:'DWORD pid = GetCurrentProcessId();' – hmjd

+0

然後我施放:Dword爲int,是否正確? – olidev

5

getpid() & & gethostname() - 使用man學習所有關於他們...

+2

這不取決於操作系統嗎? (我正在修辭,因爲我知道它的確如此)。 – trojanfoe

+2

@mru什麼是'本地C++'? – Nim

+0

@nim我刪除了我的評論,但我認爲OP意味着他不想使用不屬於C++標準的函數。 –

0
#ifdef _WIN32 
return GetCurrentProcessId(); 
#else 
return ::getpid(); 
#endif 
相關問題