ATL实现windows右键菜单扩展(ContextMenu)

右键菜单,即用户右击shell对象时弹出的上下文菜单(context menu)。本文记录了如何创建右键菜单的基本过程,跟着步骤一步一步来,即可创建出一个右键菜单工程。

第一步,新建一个ATL工程

Visual Studio—>新建项目—>ATL—>使用默认配置(一直按[……]

继续阅读

解决程序在xp系统总是莫名奇妙的崩溃问题(/Zc:threadSafeInit- )

现象:

程序在xp系统上面总是莫名其妙的崩溃,检查代码看不出任何问题,感觉代码都很好。即使你远程调试,找到了崩溃的点,当你注释了崩溃点之后,还是会崩溃到别的地方。

当你遇到了这种情况的时候,不妨参照一下下面的方法看看,说不定可以解决问题。

如何解决?

将崩溃程序相关的所有工程[……]

继续阅读

VC的ATL工程向导同时生成一个PS工程是做什么的?可以不要吗?

例如,我用VC2015的工程向导新建一个ATL的工程名字叫myAtl,那么VC会同时给我生成一个叫做myAtlPS的工程。这个myAtlPS工程是做什么的?什么情况下可以不需要它?什么情况下它又是必须存在的?

PS工程是什么?可以不要吗?

这个PS工程叫做代理与存根(proxy&nbsp[……]

继续阅读

使用GDI、MFC_GDI、GDI+绘制数组RGBA序列

学习ffmpeg时遇到一个问题,ffmpeg解码出RGB颜色后怎么绘制到屏幕上,于是将GDI、MFC_GDI、GDI+等方式都记录一下

1:注意按windows的要求,R、G、B、A顺序要调整为B、G、R、A 。

2:GDI不支持透明通道A,透明通道A的值读进去以后没有作用。想要支持透明[……]

继续阅读

c++获取程序的最后使用时间

杀软的软件管家里面,卸载列表会显示出软件的最近使用时间,以帮助用户清晰的查看该软件的使用频次,那这个时间是怎么获取到的呢。其实系统在打开一个软件时基本都有记录打开时间,当然并不是每一个可执行程序都能得到这个时间。

我们可以从注册表和Prefetch文件夹中获取最近打开时间,下面的例子我会优先选[……]

继续阅读

C++获取windows桌面图标的位置信息

要获取windows桌面图标的位置,大致是下面几个步骤,具体请参阅后面的代码:

  • 1:获取桌面图标层的窗口句柄,也就是SysListView32层,当然xp系统和非xp系统父窗口是不同的,具体请看GetIconRect中的代码。
  • 2:根据窗口句柄获取到进程id,然后往进程中分配一块内存,用于存储图[……]

    继续阅读