您的位置:首页 > 其它

VS2010--不能将参数 2 从“const char [12]”转换为“LPCWSTR”与指向的类型无关

2011-08-18 15:35 459 查看
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 样式转换或函数样式转换

--------------------------------------------------------------------------

解决方法:把工程设成多字节码。





或者

L"notepad.exe"或_T("notepad.exe")

L说明宽字节

_T根据是否设为UNICODE,对应宽字符或窄字符



dubug正常release出错,一般是没初始化的问题

release正常debug出错,一般是内存泄漏的问题,指针没有释放,数组越界

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐