首页

DNE LightWeight Filter导致的虚拟机ping不通的问题  

今天被一个问题折腾了一整天了,怒写一篇文章以示纪念。 问题 虚拟机采用桥接方式接入到网络,并通过DHCP服务器获取动态IP。 宿主通过有线方式接入网络并通过DHCP获取到动态IP。 虚拟机中无法ping通宿主机,同时宿主机也ping不通虚拟机。 尝试过的方法 1) 修改虚拟机桥接方式,不适用自动绑定网卡,而是绑定到一个具体的宿主机网卡,无效。 2) 修改虚拟机中的网卡工作方式,从1Gbps修改为1...

实战经验:在Windows平台编译x264  

最近想研究一下大名鼎鼎的x264库,由于本人功力实在薄弱,单单是为了能在Windows平台编译这玩意,也花了不少功夫。在摸爬滚打的过程中,也碰到了一些坑,这里记录下来,希望能帮助有需要的朋友。 一. MSYS2配置 1) 首先去MSYS2官网安装包,因为我的电脑是64位系统,所以,这里我选择x86_64版本。MSYS2可以根据需要安装32位和64位版本的mingw和编译工具链,而且还有个十分好用的...

实战经验:WM_COPYDATA在不同权限进程中的接收问题

问题 在一次开发中,需要使用到WM_COPYDATA方式来实现两个进程之间的数据传输。在网络上可以找到很多关于WM_COPYDATA的示例代码,而且代码结构也比较简单易懂,所以WM_COPYDATA的示例代码不是今天要详细讨论的内容。 今天的问题存在于两个不同权限的进程,例如发送端进程运行在普通用户账户下,而接收端进程则运行在管理员账户下。在这种情况下,发送端发送的WM_COPYDATA消息,将不...

实战经验:给应用程序添加代码签名  

问题 在一次开发过程中,碰到了这样一个问题:应用程序在VS2010中已经启用了”需要管理员权限”,但是当UAC提示框出现时,应用程序因为Windows安全机制的限制,无法访问UAC,也即应用程序无法使用SendInput来模拟鼠标和键盘操作。经过一番研究,发现应用程序需要做如下的配置,才能实现UAC界面的访问: 1) 强制应用程序以管理员权限启动,这个可以在VS2010中设...

实战经验:使用CFileDialog实现多个文件选择  

问题 最近需要实现文件选择的功能,要求是需要弹出系统标准的文件选择对话框,另外,允许用户选择多个文件。 解决方法 MFC中有一个类CFileDialog就是用来做这件事的,而且功能还挺丰富,今天只是使用它的一小部分特性。 直接上代码 以下代码实现了一个方法,该方法弹出文件选择对话框,允许用户选择多个文件,让点击确定时,以列表的形式,返回用户选择的所有文件。 vector<CString&...

实战经验:CRichEditCtrl插入图片(不止是位图)

问题 在一次功能开发中,我希望可以在CRichEditCtrl控件中插入一些图片,这些图片可能是位图(bmp),也可能是其他格式(jpg, png等)。   以下是一种思路 1) 图片文件可以通过GDI+中的Bitmap类来加载。 2) 如果要插入图片到CRichEditCtrl,则需要涉及到OLE对象的插入。可以这样理解,每一个图片文件都是一个OLE对象,这些OLE对象通过CRichE...

实战经验:通过类成员函数指针实现类方法调用

在开发中,有时候可能需要使用到类成员指针来调用类的方法。例如,可能会有一个函数调用表格,根据不同的情况调用表格中不同的类成员函数。今天使用一个简单的例子来讲述如何使用类成员函数指针。 类成员函数指针定义 因为函数是一个类的成员,所以它的指针定义有别于全局函数,格式如下: typedef 返回值(类名::*函数指针类型名称)(参数列表); 需要注意的地方 1) 使用typedef创建一个用户自定义类...

实战经验:通过WMI获取硬件序列号

如何标识一台机器 在开发中,有时候我们需要获取唯一标识本机的序列号,你可能会想到如下几种 1) MAC地址 2) CPU ID 3) 硬盘ID MAC地址 因为MAC地址可能会被修改,而且本机可能会有多张网卡,同时网卡的数量会随着网卡被启用或禁用而发生变化,所以暂时就不考虑使用MAC地址作为本机硬件标识了。 CPU ID 这个看起来不错,但是有个问题:CPU厂商有时候为了规避隐私问题,会对同一批次...

实战经验:ON_CONTROL_REFLECT(_EX)的在CEdit扩展中的使用

MFC提供了编辑框控件CEdit,可以基本满足我们的一般性编辑需求,但是如果想对CEdit进行定制,例如重新设计其边框,对用户输入做预处理的时候,我们需要扩展CEdit。今天来看看ON_CONTROL_REFLECT和ON_CONTROL_REFLECT_EX这两个反射宏在CEdit扩展中的使用。 ON_CONTROL_REFLECT 从名称上来看,ON_CONTROL_REFLECT是一个反射宏...

实战经验:在Windows 8.1/10上获取具体的系统版本号

碰到这样一个问题,需要获取当前运行系统的版本号。 对于Windows系统来说,主要需要关注的是两个版本号:主版本,次版本。例如:Windows 7系统的版本号为:6.1。Windows 10的版本号为:10.0。过去我们可以使用Windows API GetVersionEx来获取系统版本,但是从Windows8.1开始,如果程序没有进行Manifest(原谅我也不知道怎么翻译这个词比较合适,所以...