[置顶] [分享]牛牛截图控件最终版

摘要: 实现牛牛截图控件的初衷,是想在学习的同时,实现一个具备当前主流截图功能的插件,方便集成进不同的应用系统中,节省开发时间。一直以来,都对目前各主流即时通讯软件的截图效果比较喜欢,前段时间专门花时间进行了一些研究,实现了自己的一个截图控件,我给它取名叫“牛牛截图”;此控件可免费使用,开放了调用的接口,有兴趣的朋友可以试一下,具体的调用方法及使用示例见下文。1.本控件实现的基本功能及特点如下1).支持窗口区域的自动识别2).支持矩形、圆形、箭头、文字的绘制以及撤销3).可另存为png、jpg、bmp等格式4).支持鼠标所在区域的图像放大功能,以便精准定位5).窗口大小、鼠标坐标显示以及光标处的颜色拾 阅读全文
posted @ 2014-03-16 20:18 tragicguy 阅读(1536) 评论(0) 推荐(1)

在SQL脚本中的注释引起的奇怪问题

摘要: 在数据库安装包中,我们通过osql.exe这个工具来对相关的数据库脚本进行更新,昨天突然发现安装包报错了,说脚本错误,但我们将脚本拿到数据库查询分析器中执行,一切OK。问题出在哪里呢?通过使用osql单独来执行报错的脚本,打印相关信息:osql.exe -S .\SQLDEV -U sa -P MyRoot -b -n -r 1 -i ".\UpdateTable.sql" -o "c:\hahah.txt"@echo %errorlevel%@pause得到如下错误信息:osql Missing end comment mark "*/&qu 阅读全文
posted @ 2013-11-01 17:30 tragicguy 阅读(220) 评论(0) 推荐(0)

一个CFile::Remove引起的奇怪问题

摘要: 今天收到测试的一个反馈,我们的一个程序,在WIN7、WIN8下安装后,运行不起来,在进程列表中可以看到,但就是不出来窗口,同样的程序在XP下正常,在UAC关闭的情况下也正常,在以管理员权限运行时也正常。现象有点奇怪,但也有一个规律,就是在UAC开启的情况下,如果不是以管理员权限运行,则会出问题,根据程序现象,我从代码上排查,发现就在程序启动的代码部分即“挂起”,这里的现象类似于挂起,因为是程序运行到某一处就不再往下运行了,我们可以确定的是单实例运行互斥的代码没有被执行到。到这里就好跟了,因为往上走的代码是较少的,接下来通过逐段调试的方式,发现最终问题在于调用了一个MFC的类的静态函数导致:CF 阅读全文
posted @ 2013-07-30 23:26 tragicguy 阅读(308) 评论(0) 推荐(0)

一个疑惑的的问题-ntvdm.exe进程

摘要: 今天测试反馈了一个问题,在启动我们程序某个模块的程序时,会立即出现一个ntvdm.exe进程,此进程会占用大量的系统资源,导致系统卡住。当第一眼看到这个现象时,以为是电脑中毒了,所以立即在网上查。了解到这个进程是WINDOWS为了兼容16位的应用程序而启动的一个虚拟机应用,可是我们的项目中,全都是32位的应用程序啊,问题出在哪里了呢?后来跟踪发现原因如下:启动的这个模块,会动态的从服务器上下载一个自解压的exe程序,然后运行它,将其解压出来,而其下载的这个自解压EXE,由于我们在打包时遗漏了,其下载时,找不到这个文件,存储成的exe中的实际内容却是部分的http返回信息,这样运行这个EXE时, 阅读全文
posted @ 2013-07-26 00:10 tragicguy 阅读(543) 评论(0) 推荐(0)

软件集成安全软件自动扫描功能

摘要: 最近一个项目中,由于客户认为我们的文件传输功能可能导致一方传输病毒,不放心。结过讨论,客户最终认可如下方案:在文件传输完毕后,自动调用本机上安装好的安全软件对该文件进行扫描。对此功能进行了简单的调研,以下列出两款软件的调用接口:启动杀毒命令:360杀毒:C:\Program Files\360\360sd\360sd.exe "c:\test.exe"瑞星:C:\Program Files\Rising\Rav\ravlite.exe "c:\test.exe"在C++中,只需要在需要启动扫描时,按如下方法调用即可:CString strScanFile 阅读全文
posted @ 2013-07-02 19:10 tragicguy 阅读(188) 评论(0) 推荐(0)

C++对象的JSON序列化与反序列化探索完结-列表的序列化与反序列化

摘要: 在前两篇文章中,我们已经完成对普通对象以及复杂对象嵌套的序列化与反序列化,见如下地址:C++对象的JSON序列化与反序列化探索C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化经过一番折腾,总算把带有列表的对象的序列化完成了,目前支持 list 和 vector 的列表,以及自定义的其他类型的列表,我们可以先来看看实现的效果。复杂对象及带列表对象的序列号主要有如下几种:1. 普通的list列表,如:list list testList; testList.push_back("33333333"); testList.push_back("55 阅读全文
posted @ 2013-06-25 22:57 tragicguy 阅读(1777) 评论(0) 推荐(0)

C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化

摘要: 本文是基本上一篇博文进行改进而成,上一篇请见:C++对象的JSON序列化与反序列化探索此处就不多说了,直接上代码。1. 序列化基类#pragma once#include #include #include "json/json.h"using std::string;using std::vector;struct CJsonObejectBase{protected: enum CEnumJsonTypeMap { asArray = 1, //是数组 asJsonObj, //是复杂对象 asBool, asInt, asUInt, asString, asInt64 阅读全文
posted @ 2013-06-22 23:20 tragicguy 阅读(466) 评论(0) 推荐(0)

C++对象的JSON序列化与反序列化探索

摘要: 一:背景作为一名C++开发人员,我一直很期待能够像C#与JAVA那样,可以轻松的进行对象的序列化与反序列化,但到目前为止,尚未找到相对完美的解决方案。本文旨在抛砖引玉,期待有更好的解决方案;同时向大家寻求帮助,解决本文中未解决的问题。二:相关技术介绍本方案采用JsonCpp来做具体的JSON的读入与输出,再结合类成员变量的映射,最终实现对象的JSON序列化与反序列化。本文不再讨论如何使用JsonCpp,此处将作者在应用时发现的两处问题进行说明:1. 下载Jsoncpp,编译其lib,并且引用到项目中,发现有如下错误:错误1 fatal error C1083: Cannot open comp 阅读全文
posted @ 2013-06-22 14:26 tragicguy 阅读(6143) 评论(0) 推荐(0)

数据库数据修复

摘要: 简要记录背景:1. 数据库由于硬盘问题完整性被破坏了,使用dbcc checkdb完全没有效果2. 经检查发现,有两张使用最频繁的表无法进行任何操作,其他表正常3. 通过某数据库修复工具,可以查看到那两张坏掉的表中的数据【估计还是不全】,但由于没有授权,只能查看,数据导不出来在此基础上,我们按如下办法来尽可能对数据库进行修复,修复办法如下:1. 想办法重建立一个新库,除了两张坏掉的表,其他表以复制的形式重建由于坏的表无法删除,导致整个库都无法使用,我们只能将好的数据进行转移,重建数据库。我们在将表结构建立好后,使用如下脚本,生成了库中所有需要导入的表的记录use ChargeDECLARE @ 阅读全文
posted @ 2013-06-11 16:31 tragicguy 阅读(251) 评论(0) 推荐(0)

SQL SERVER 遍历库中的表及其记录数

摘要: use 库名DECLARE @TableName varchar(255);CREATE TABLE #GetRecordingTempTable([id] [INT] IDENTITY(1,1) NOT NULL, [TableName] varchar(255) NOT NULL, [RecordingCount] INT);DECLARE Table_Cursor CURSOR FOR SELECT [name] FROM sysobjects WHERE xtype='U'; OPEN Table_Cursor;FETCH NEXT FROM Table_Cursor 阅读全文
posted @ 2013-06-10 14:48 tragicguy 阅读(191) 评论(0) 推荐(0)