读书人

苦闷了半天才解决

发布时间: 2013-11-18 00:11:49 作者: rapoo

郁闷了半天才解决.
不多说.直接上代码
int main()
{
DWORD pid;
if(!GetProcessIdByName("smss.exe",&pid))// 错误点
cout<<"没有找到进程!!!\n";
else
cout<<"找到了进程!!!\n";
system("pause");
}
//通过进程名获取进程PID
BOOL GetProcessIdByName(LPSTR szProcessName,LPDWORD lpPID)
{
//变量及初始化
PROCESSENTRY32 ps;
HANDLE hSnapshot;
ZeroMemory(&ps,sizeof(PROCESSENTRY32));
ps.dwSize=sizeof(PROCESSENTRY32);
//遍历进程
hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hSnapshot==INVALID_HANDLE_VALUE)
{
return FALSE;
}if(!Process32First(hSnapshot,&ps))
{
return FALSE;
}
do
{
// 比较进程名
if(lstrcmpiA((LPCSTR)ps.szExeFile,szProcessName)==0)
{
//找到了
*lpPID=ps.th32ProcessID;
CloseHandle(hSnapshot);
cout<<"找到了此:" <<ps.szExeFile<<"进程"<<endl;
return TRUE;
}
}while(Process32Next(hSnapshot,&ps));
//没找到
CloseHandle(hSnapshot);
return FALSE;
};
Unicode字符问题 请看过的学弟们多多注意
[解决办法]
估计默认的是UNICODE编码的话。

" "包含的字符串会以宽字节保存。

所以调用的类型不对。

该系统工程编码类型。或者转换你的指针类型。


建议以后编写直接使用通用类型。

TCHAR LPTSTR LPCTSTR _T

读书人网 >C++

热点推荐