VS2010类型转换

饭fan有引力 2011-08-18 02:32:29

PROCESSENTRY32 pe32;
HANDLE hSnaphot;
HANDLE hApp;
DWORD dProcess = 0;

hSnaphot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); // 获取进程快照
Process32First(hSnaphot, &pe32); // 指向第一个进程
do
{
if (lstrcmpi(pe32.szExeFile,"notepad.exe")==0) // 查找进程名称为 NotePad.exe (记事本的程序)
{
dProcess = pe32.th32ProcessID;
break;
}
}while(Process32Next(hSnaphot, &pe32)); // 不断循环直到取不到进程

hApp= OpenProcess(PROCESS_VM_OPERATION|SYNCHRONIZE,FALSE,dProcess);
// 根据进程 ID 获取程序的句柄
if (!WaitForSingleObject(hApp,INFINITE))// 等待记事本程序关闭
{
cout << " 记事本已经关闭!" << endl;
}

想要得到一个程序被关闭的事件,我的代码如上,在VC6可以正常运行,可是在VS2010却编译不过去,提示错误语句是:lstrcmpi(pe32.szExeFile,"notepad.exe")==0
错误提示是:error C2664: “lstrcmpiW”: 不能将参数 2 从“const char [12]”转换为“LPCWSTR”与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换

我试过转换类型,可是这下子代码编译过去了,就是没有得到正确的结果,请问这个是什么原因,要怎么修改
...全文
237 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
饭fan有引力 2011-08-18
  • 打赏
  • 举报
回复
感谢各位,已经处理好了
luciferisnotsatan 2011-08-18
  • 打赏
  • 举报
回复
把工程设成多字节码。
或者
L"notepad.exe"或_T("notepad.exe")
L说明宽字节
_T根据是否设为UNICODE,对应宽字符或窄字符
贪食蛇男 2011-08-18
  • 打赏
  • 举报
回复
工程设置成非UNICODE工程就行了。
ouyh12345 2011-08-18
  • 打赏
  • 举报
回复
可以设置字符集
或者在字符串前加_T

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧