zoukankan      html  css  js  c++  java
  • VS2010--不能将参数 2 从“const char [12]”转换为“LPCWSTR”与指向的类型无关

    1. PROCESSENTRY32 pe32;  
    2. HANDLE hSnaphot;  
    3. HANDLE hApp;  
    4. DWORD dProcess = 0;  
    5.               
    6. hSnaphot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); // 获取进程快照   
    7. Process32First(hSnaphot, &pe32); // 指向第一个进程   
    8. do  
    9. {  
    10.       if (lstrcmpi(pe32.szExeFile,"notepad.exe")==0) // 查找进程名称为 NotePad.exe (记事本的程序)   
    11.       {  
    12.             dProcess = pe32.th32ProcessID;  
    13.             break;  
    14.       }  
    15. }while(Process32Next(hSnaphot, &pe32)); // 不断循环直到取不到进程   
    16.               
    17. hApp= OpenProcess(PROCESS_VM_OPERATION|SYNCHRONIZE,FALSE,dProcess);  
    18. // 根据进程 ID 获取程序的句柄   
    19. if (!WaitForSingleObject(hApp,INFINITE))// 等待记事本程序关闭   
    20. {  
    21.        cout << " 记事本已经关闭!" << endl;  
    22. }  
    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出错,一般是内存泄漏的问题,指针没有释放,数组越界

  • 相关阅读:
    NHibernate 中in的使用方法,以及使用sql表达式
    C#调用存储过程,并且获得返回值和OutPut字符串
    NHibernate 中delete的使用方法
    SQL中Case when 方法的使用
    NHibernate 根据Model ID获取对象
    C# Excel导出数据和Excel导入数据帮助类
    查询五个月前到现在的数据
    NHibernate 中Between的使用方法
    jquery操作滚动条滚动到指定位置
    将DataReader转换为DataTable
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318248.html
Copyright © 2011-2022 走看看