您的位置:首页 > 其它

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

2014-09-11 14:20 573 查看
[cpp]
view plaincopyprint?

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;
}

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

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