2012-05-18 22 views
1

在Native C++中,如何獲取當前進程名稱和日期時間。我不是C++程序員。如何獲取本機C++中的進程名稱和日期時間戳

在C#中,這是很容易做到這樣的:

進程名稱:

Process.GetCurrentProcess().ProcessName 

日期時間:

DateTime.Now.ToString("yyyy-MM-dd_HH.mm.ss.ff") 

他們如何在C++本地檢索?

+0

僅適用於Windows?如果是這樣,標記q –

+0

yes僅適用於Windows – olidev

+0

好的我已經爲你添加了必要的標籤 –

回答

2

爲了得到當前進程的名稱,你可以使用GetModuleFileName()

char exe_path[MAX_PATH]; 
GetModuleFileName(NULL, exe_path, MAX_PATH); 

然後,您可以最後\字符後提取exe_path的一部分。

要獲取當前時間,可以使用std::time()

+0

'GetModuleFileNameW':無法將參數2從'char [260]'轉換爲'LPWCH' – olidev

+1

您必須在您的構建中定位到UNICODE。使用'wchar_t'而不是'char'或者明確使用ANSI版本'GetModuleFileNameA'。 – hmjd

+0

謝謝。正確地說,我得到了包括擴展名的完整路徑。謝謝 – olidev

1

進程名稱:

char name[256]; 
GetProcessImageFileName(GetCurrentProcess(),name,256); 

您也可以通過命令行參數

而且從time.h中的日期採用本地時間()得到它,例如here

+0

我無法找到:C++中的GetProcessImageFileName? – olidev

+0

@olidev是的,你需要包括windows.h –

+0

是的,我做了,但它不可用。 – olidev

2

GetSystemTime

語法

void WINAPI GetSystemTime(
    __out LPSYSTEMTIME lpSystemTime 
); 

參數: lpSystemTime [OUT]

指向一個SYSTEMTIME結構以接收當前系統日期 和時間。 lpSystemTime參數不能爲NULL。使用NULL將導致訪問衝突 。

返回值:此函數不返回值或提供擴展的錯誤信息。

備註:要設置當前系統日期和時間,請使用SetSystemTime函數。

要求:最低支持的客戶端Windows 2000專業版

最低支持的服務器: Windows 2000 Server的

標題: WINBASE.H(包括WINDOWS.H)

庫: Kernel32。LIB

DLL:的Kernel32.dll

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724390(v=vs.85).aspx

而對於進程名稱:

QueryFullProcessImageName function

GetModuleFileNameEx function

Process and Thread Functions can be found here

相關問題