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

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出错,一般是内存泄漏的问题,指针没有释放,数组越界

你可能感兴趣的:(c,2010)