在应用程序打开的HADNLE,如何保存下来,要在DLL里面向这个HANDLE写数据保存的INI文件代码如下:
memset(szBuf, 0, sizeof(szBuf));
sprintf(szBuf, "%s", pstInfo->m_hVcom);
WritePrivateProfileStringA("SETTING", "VComHandle", szBuf, strFile);
这样出错,要如何改还有读取时也要如何转换,谢谢!

解决方案 »

  1.   

    在INI文件中保存HANDLE干嘛?HANDLE是运行期产物,不能永久保存。
      

  2.   


        sprintf(szBuf, "%x", pstInfo->m_hVcom);
       
      

  3.   

    保存的HANDEL是没有用的,你可以通过DLL传递HANDEL,
    但是你的handle打开时,必须要有可继承性!!
    比如打开文件
    HANDLE CreateFile(
      LPCTSTR lpFileName,
      DWORD dwDesiredAccess,
      DWORD dwShareMode,
      LPSECURITY_ATTRIBUTES lpSecurityAttributes,//这个可设置继承性
      DWORD dwCreationDisposition,
      DWORD dwFlagsAndAttributes,
      HANDLE hTemplateFile
    );
      

  4.   

    HANDLE 保存下来有什么用?关闭了就不能用啦,dll的话直接提供函数让外面传进去就行了。
      

  5.   

    sprintf(szBuf, "0x%08x", pstInfo->m_hVcom);
      

  6.   

    WritePrivateProfileStringA("SETTING", "VComHandle", itoa(pstInfo->m_hVcom), strFile);楼主的主要错误在于 sprintf(szBuf, 【"%s"】, pstInfo->m_hVcom);
    你要把一个整数print到字符串中,不是一个字符串,使用%d,%x什么的都可以,你偏偏要用%s...
      

  7.   

    为什么要存到INI文件?DLL导出一个函数SetHandle(HANDLE),程序调用一下把handle传过去就可以了。
      

  8.   

    HANDLE是个内核对象指针等,这个数据对你没有什么意义,保存下来不知道为什么...
      

  9.   

    你获得的句柄值是该进程的句柄描述表中的handle的索引 在退出该进程后 该表会被销毁
    你不能用这个handle对应的二进制值来做任何事情
    估计你创建的是内核对象 创建时置为可继承的即可