void rubyTools::funStrToWstr(string str, wstring& strw)
{
const char* pData = str.c_str();
int lengt = str.length();
UINT CodePage = ;
DWORD dwNum = MultiByteToWideChar(CodePage, ,
pData, -, NULL, );
if (dwNum == )
{
return;
} WCHAR* pwText = new WCHAR[dwNum];
memset(pwText, '\0', dwNum);
MultiByteToWideChar(CodePage, , pData, -, pwText, dwNum);
strw = pwText;
delete []pwText;
}
wstring deletePath;
funStrToWstr(mainrbPath + "\\lib", deletePath);
SHFILEOPSTRUCT FileOp = { };
FileOp.hwnd= (HWND)this->winId();
FileOp.fFlags = FOF_NOCONFIRMATION | FOF_SILENT; const wchar_t *tmp = deletePath.c_str();
wchar_t *pTmp = const_cast<wchar_t *>(tmp);
int a = wcslen(pTmp);
//pTmp[a + 1] = '\0';//暴力增加double-null terminated.这个时候字符串结尾"\0 \0 \0 \0"了(widechar) dangerous
wchar_t *tmp2 = new wchar_t[a + ];
wmemcpy(tmp2, tmp, a);
wmemcpy(tmp2 + a, L"\0\0", ); FileOp.pFrom = tmp2;
FileOp.pTo = NULL;
FileOp.wFunc = FO_DELETE;
if( SHFileOperation(&FileOp) != )
errorNum |= replaceLibError;
delete[]tmp2;

由于参数必须是must be double-null terminated,所以要这么做,不然删除文件夹会失败的

SHFileOperation 解决double-null terminated的更多相关文章

  1. java 常用类库:BigInteger大整数;BigDecimal大小数(解决double精度损失);

    大整数BigInteger package com.zmd.common_class_libraries; import java.math.BigInteger; /** * @ClassName ...

  2. Java中如何解决double和float精度不准的问题

    我们知道浮点数是无法在计算机中准确表示的,例如0.1在计算机中只是表示成了一个近似值,因此,对付点数的运算时结果具有不可预知性. 在进行数字运算时,如果有double或float类型的浮点数参与计算, ...

  3. BigDecimal 解决double精度丢失问题(加减乘除)

    package com.qcloud.component.publicservice.util; import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确 ...

  4. 解决有关null闪退及json解析数据中null的问题

    程序在获取某些数据之后莫名崩溃.其实很早就发现了原因: 由于服务器的数据库中有些字段为空, 然后以Json形式返回给客户端时就会出现这样的数据: "somevalue":null ...

  5. 安装包设计-------打包(MFC)---------知识总结

    目录: 1.选择文件夹 2.判断文件夹或文件是否存在 3.通过cmd命令行向程序中传递参数. 4.路径处理 5.文件夹以及文件的删除 6.复制文件 7.创建目录 8.从当前的应用程序中抽取资源 9.引 ...

  6. 很挫的 SHFileOperation 用法 2011-07-18 11:42

    今天编写一个局域网文件拷贝的demo .其中有一个 SHFileOperation 的用法,这个函数有个参数SHFILEOPSTRUCT.查看msdn有如下解释: pFromAddress of a ...

  7. Java中有关Null的9件事

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常 (NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我 ...

  8. 转!!Java中关于Null的9个解释(Java Null详解)

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...

  9. 详解null

    前言 在java中初始化的时候经常用到null,也经常会碰到空指针异常(NullPointerException),由于碰到的频率比较高,我认为有必要进行一下了解,揭开它的神秘面纱. 一.null是代 ...

随机推荐

  1. 防止asp马后门

    好多朋友都拿的有webshell吧,基本上都加了密的...  可是,没见到源码,很难测试它到底有没有后门, 指不定给别人打工了...  下面贴种很简单的方法,大家别扔蛋哈 (asp的哦)  在代码的最 ...

  2. web.xml配置以及一些详解

    web.xml的根元素定义如下所示(代表当前使用哪个模版): <?xml version="1.0" encoding="UTF-8"?> < ...

  3. Collection集合的三种初始化方法

    (一) java容器可以分为两大类 1)Collection其中包括List,Set,Queue 2)Map (二) Arrays.asList()方法:接受一个数组或一个逗号分隔的元素列表,并将其转 ...

  4. 利用Java获取ip地址

    方法1 public static String getIp2(HttpServletRequest request) { String ip = request.getHeader("X- ...

  5. iOS开发 SVN回退到某一个版本

    1.选择你要恢复的工程,(注意:从SVN上checkout下来的工程不要改变,移动位置) 2.找到SVN的导航栏,点击“Working Copy”--->"Revert" 3 ...

  6. UVA-315 无向图求割点个数

    题意抽象: 给定一个无向图,输出割点个数. 割点定义:删除该点后,原图变为多个连通块. 考虑一下怎么利用tarjan判定割点: 对于点u和他相连的当时还未搜到的点v,dfs后如果DFN[u]<= ...

  7. idea xml版本修改问题

    STEP 1.选中模块 STEP 2.file---->Project Structure---->Facets---->把相应模块的给删除"-"----> ...

  8. CCF-Markdown-201703-3

    这道题不存在递归结构 比如区块之间的相互嵌套 还有"[ [] ]" 链接的相互嵌套, 所以直接处理就好了 还可以 #include <bits/stdc++.h> us ...

  9. ES5与ES6中的继承

    ES5继承在ES5中没有类的概念,所以一般都是基于原型链继承,具体的继承方法有以下几种: 父类: function Father (name) { this.name = name || 'sam' ...

  10. UEFI+GPT双硬盘安装Win10+Ubuntu16.04双系统

    转载请注明出处:http://www.cnblogs.com/willnote/p/6725594.html 安装环境 SSD+HDD双盘,Win10安装在SSD里,HDD分出来60G安装Ubuntu ...