2013-04-02 79 views
1

我已經在C中編寫了一個代碼,它將使用Process32First()API來獲取有關該過程的信息。所有的信息都存儲在這裏所定義的PROCESSENTRY32結構:將C中的Const Char與WCHAR字符串進行比較?

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684839%28v=vs.85%29.aspx

PE32是PROCESSENTRY32結構的名稱。 進程名稱將是:pe32.szExeFile

我可以打印這樣說:

_tprintf(TEXT("Process name: %s\n"),pe32.szExeFile); 

現在,我想的進程名有類似explorer.exe的特定進程

這是比較我在做什麼:

if(!wcscmp(pe32.szExeFile, _T("explorer.exe")) 
{ 
perform some action here; 
} 

它不起作用。

在MS Visual Studio 2008中,爲對PROCESSENTRY32結構的szExeFile構件的數據類型是:WCHAR tagPROCESSENTRY32 :: szExeFile [260]

所以,我認爲它是一個寬字符串?

和explorer.exe是一個普通的字符串(const char *),指向一個字符數組的指針。

如何將szExeFile與普通字符串進行比較?

我發現這些數據類型相當混亂,我希望通過這個例子更好地理解它們。

謝謝。

回答

4

更改,如果使用寬字符串"explorer.exe"作爲

if(!wcscmp(pe32.szExeFile, L"explorer.exe") 

即使用L"explorer.exe"與寬字符串比較。

你也可以在你的VC項目中使用UNICODE字符集的設置,通過Project-> Settings-> Configuration Properties-> General

+0

謝謝:)它現在的作品:) –