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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值