<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sunflover454的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sunflover454</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sunflover454]]></copyright><item><title><![CDATA[视频播放器SunPlayer开源啦]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/70240827</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/70240827</guid><author>sunflover454</author><pubDate>Wed, 19 Apr 2017 15:06:07 +0800</pubDate><description><![CDATA[SunPlayer是我的一个练手项目，它是一个视频播放器。
核心播放部分是ffplayer（https://github.com/rockcarry/ffplayer），ffplayer是对ffmpeg的一个c封装，详情请转到github查看。
UI部分使用的Troy维护的Duilib（https://github.com/qdtroy/DuiLib_Ultimate），还有一个版本UI使用的]]></description><category></category></item><item><title><![CDATA[程序调用ShellExecuteEx打开其他程序（兼容UAC获取管理员权限）]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/61916245</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/61916245</guid><author>sunflover454</author><pubDate>Mon, 13 Mar 2017 13:32:33 +0800</pubDate><description><![CDATA[参考文章：http://blog.youkuaiyun.com/xmnathan/article/details/39498431
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 

#pragma warning(disable: 4996)   

//检查系统版本是否是Vista或更高的版本
bo]]></description><category></category></item><item><title><![CDATA[duilib CWebBrowser控件 C++调用js函数&&js中调用C++函数]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/60873557</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/60873557</guid><author>sunflover454</author><pubDate>Wed, 08 Mar 2017 15:52:38 +0800</pubDate><description><![CDATA[C++和js相互调用是个有意思的事情。
一、js中调用C++函数。函数原型int g_FunSub(int x,int y);
调用方式如下：

  
  
      
      
      
        function CallCppFunSub(x,y)  
        {
			var num = window.external.g_FunSub(x,y);]]></description><category></category></item><item><title><![CDATA[如何给程序添加超大图标（EXE大尺寸图标）]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/60868858</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/60868858</guid><author>sunflover454</author><pubDate>Wed, 08 Mar 2017 11:27:48 +0800</pubDate><description><![CDATA[自己写的程序，如果更换了图标，编译出来，超大图标显示就会发现图标并没有跟着放大。
那么问题来了，就换个图标效果就不同了，很明显时图标有问题。
用eXeScope打开vs2013编译出来的MFC对话框程序可以看到如下图：


这不止一个图标，而我们替换图标之后，编译，打开发现就只有一个图标，因此可以判断的确是ico图标的问题。
在qq群里问了下其他的朋友，有朋友提示ico图标文件可以包含]]></description><category></category></item><item><title><![CDATA[duilib WebBrowser控件执行javascript（js）]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/60570940</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/60570940</guid><author>sunflover454</author><pubDate>Mon, 06 Mar 2017 10:12:12 +0800</pubDate><description><![CDATA[执行js务必在网页加载完成时执行，示例代码片段如下：
void CWebWnd::NavigateComplete2(CWebBrowserUI* pWeb, IDispatch *pDisp,VARIANT *&url)
{
	CDuiString strUrl(url->bstrVal);

	// execute js start
	IWebBrowser2 *pIWebBrowser2]]></description><category></category></item><item><title><![CDATA[C++ url编解码类]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/53885419</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/53885419</guid><author>sunflover454</author><pubDate>Mon, 26 Dec 2016 13:33:29 +0800</pubDate><description><![CDATA[//UrlConvert.h
#ifndef __URLCONVERT_H__
#define __URLCONVERT_H__
#pragma once
/*
使用方法：
CUrlConvert url;
//Encode test
string str1 = url.UrlEncode_GBK("谷姐");
cout << "UrlEncode_GBK " << str1.c_str() <<]]></description><category></category></item><item><title><![CDATA[C++ 获取Cookie]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/53516943</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/53516943</guid><author>sunflover454</author><pubDate>Thu, 08 Dec 2016 13:31:27 +0800</pubDate><description><![CDATA[string GetCookie(const char *szURL)
{
	string strCookie;

	LPSTR lpszData = NULL;
	DWORD dwSize = 0;
	lpszData = new char[1];
	memset(lpszData, 0, 1);

retry:
	if (!InternetGetCookieA(szURL, "", lpszD]]></description><category></category></item><item><title><![CDATA[VC++获取系统信息/获取OS/获取MAC/获取本地IP/判断是否为网吧]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/51525686</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/51525686</guid><author>sunflover454</author><pubDate>Sat, 28 May 2016 16:59:36 +0800</pubDate><description><![CDATA[现在很多软件都有统计系统了，说好听点叫做统计用户习惯，改良产品，不好听点，呵呵，我就不说了。
核心我已经封装成类了，可以获取操作系统版本，MAC地址，本地IP地址，以及判定是否为网吧。
核心代码如下：
//PCInfo.h

#pragma once
#include 

class CPCInfo
{
public:
	CPCInfo(void);
	~CPCInfo(void);
pri]]></description><category></category></item><item><title><![CDATA[获取Windows系统版本号]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/51525179</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/51525179</guid><author>sunflover454</author><pubDate>Sat, 28 May 2016 15:48:18 +0800</pubDate><description><![CDATA[前言
由于前段时间比较忙，一直没有来跟大家分享交流技术，实在是抱歉，往后我会不定时跟大家分享一些C++技术。
废话
有些东西看似简单，但坑多着呢，所以大家还是要多亲自尝试，不要眼高手低。
核心代码
//读取操作系统的名称
string GetSystemName()
{
	SYSTEM_INFO info;        //用SYSTEM_INFO结构判断64位AMD处理器 
	Get]]></description><category></category></item><item><title><![CDATA[stdafx.h(38) : fatal error C1083: 无法打开包括文件:“afxcontrolbars.h”解决办法]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/51498909</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/51498909</guid><author>sunflover454</author><pubDate>Wed, 25 May 2016 15:43:40 +0800</pubDate><description><![CDATA[stdafx.h(38) : fatal error C1083: 无法打开包括文件:“afxcontrolbars.h”: No such file or directory


出现这个问题的原因是项目为VS2008Sp1建的工程，而你现在只有VS2008，没安装Sp1补丁。


解决办法：
方法1：
解决它的根本方法当然就是装SP1，去www.itellyou.cn上找到对应]]></description><category></category></item><item><title><![CDATA[Win32获取屏幕可用尺寸/获取桌面可用区域 (即除去任务栏的区域)]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/51469696</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/51469696</guid><author>sunflover454</author><pubDate>Sat, 21 May 2016 11:55:08 +0800</pubDate><description><![CDATA[//不知道为什么，这样获取的不准确
int cx = GetSystemMetrics(SM_CXFULLSCREEN);
int cy = GetSystemMetrics(SM_CYFULLSCREEN);


上面那个不知道为什么获取结果不理想，有知道的朋友麻烦告知一下我，下面这个好使。


//获取可用桌面大小
RECT rect;
SystemParametersInfo(S]]></description><category></category></item><item><title><![CDATA[十六进制转字符串StrToHex，字符串转十六进制HexToStr]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/51219472</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/51219472</guid><author>sunflover454</author><pubDate>Fri, 22 Apr 2016 13:43:24 +0800</pubDate><description><![CDATA[// HEXSTR.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 


/*
// C prototype : void StrToHex(byte *pbDest, char *pszSrc, int nLen)
// parameter(s): [OUT] pbDest - 输出缓冲区
//	[IN] pszSrc - 字符串
//]]></description><category></category></item><item><title><![CDATA[CrashReport，BugReport的核心--创建dump文件]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/51200663</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/51200663</guid><author>sunflover454</author><pubDate>Wed, 20 Apr 2016 14:45:24 +0800</pubDate><description><![CDATA[// minidmp.h
#pragma once

#include 
#include 
#include 
#include 
#pragma comment(lib, "dbghelp.lib")

inline BOOL IsDataSectionNeeded(const WCHAR *pModuleName)
{
	if(pModuleName == 0)
	{
		return FA]]></description><category></category></item><item><title><![CDATA[为什么我们的电脑/手机越来越卡了]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/51087825</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/51087825</guid><author>sunflover454</author><pubDate>Thu, 07 Apr 2016 17:43:09 +0800</pubDate><description><![CDATA[之前我一直存在一个疑问，为什么手机/电脑配置越来越好了，反而越来越卡了？

手机1GB内存不够用了，现在都2-6GB了。
电脑4GB内存不够用了，都是8GB,16GB了。

然后卡顿现象真的得到改善了吗？

我个人的感觉是没有明显得到改善，硬件配置上去了，但还是卡，那就是软件问题咯。

难道是我们软件开太多了？挂2个QQ，开十来个浏览器页面，开个LOL，开个音乐播放器，再开个36]]></description><category></category></item><item><title><![CDATA[Qt窗口居中显示]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/50923371</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/50923371</guid><author>sunflover454</author><pubDate>Fri, 18 Mar 2016 14:44:00 +0800</pubDate><description><![CDATA[在Qt下，程序运行后窗口默认就是在屏幕中央显示的，但是后来发现在XP系统下没有居中显示，需要手动调整了。
和网上其他方案一样，大多数人会用类似这样的代码：
move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2);
这段代码有两个问题：
1.这个desktop的宽高是包含了任务栏的宽]]></description><category></category></item><item><title><![CDATA[QT installEventFilter eventFilter 快捷键的设计]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/50904865</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/50904865</guid><author>sunflover454</author><pubDate>Wed, 16 Mar 2016 14:36:50 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/swqqcs/article/details/7724996


CTRL+Enter发送信息的实现

      在现在的即时聊天程序中，一般都设置有快捷键来实现一些常用的功能，类似QQ可以用CTRL+Enter来实现信息的发送。

      在QT4中，所有的事件都继承与QEvent这个类，以下是用QEvent来实现快捷键的功能。]]></description><category></category></item><item><title><![CDATA[从keyPressEvent按键事件中获取QKeySequence]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/50904815</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/50904815</guid><author>sunflover454</author><pubDate>Wed, 16 Mar 2016 14:30:40 +0800</pubDate><description><![CDATA[转自：http://www.tuicool.com/articles/UnAVbyj

【提前话】:这几天开始着手QT方面的学习了，国庆后差不多就要转战新平台了，公司的所有产品也将由Net转到QT了，对自己来说失去了一些，也得到了一些。

QKeySequence多用于快捷键，获取QKeySequence可以同按键事件的QKeyEvent获取,例如:

class Mywidget :]]></description><category></category></item><item><title><![CDATA[CImage实现的全屏PNG截图]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/50629063</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/50629063</guid><author>sunflover454</author><pubDate>Wed, 03 Feb 2016 13:39:45 +0800</pubDate><description><![CDATA[本来关于屏幕截图已经写了2篇博文了，但是效果都不是很理想，于是有了这个，直接使用CImage，代码简洁明了，比这个稳定：http://blog.youkuaiyun.com/sunflover454/article/details/49533651
最后截图生成的PNG文件保存在C:\ScreenShot文件夹下。
#include 
#include 

//截取全屏保存为png
CString Scr]]></description><category></category></item><item><title><![CDATA[log4cplus使用备忘]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/50619682</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/50619682</guid><author>sunflover454</author><pubDate>Mon, 01 Feb 2016 17:30:05 +0800</pubDate><description><![CDATA[参考文章：http://blog.youkuaiyun.com/augusdi/article/details/8989728


本文仅以log4plus静态库的编译使用做个初步了解。
我下载到的源代码为log4cplus-1.2.0.7z。解压后（我的解压路径D:\CloudSync\Source\Common\）使用vs打开log4cplus-1.2.0\msvc10下的log4cplus.sl]]></description><category></category></item><item><title><![CDATA[(开源) Ring3下的DLL注入工具 x86&x64(NtCreateThreadEx + LdrLoadDll方式实现，可以注入系统进程)]]></title><link>https://blog.youkuaiyun.com/sunflover454/article/details/50441146</link><guid>https://blog.youkuaiyun.com/sunflover454/article/details/50441146</guid><author>sunflover454</author><pubDate>Thu, 31 Dec 2015 13:40:36 +0800</pubDate><description><![CDATA[工具介绍及使用请移步：http://blog.youkuaiyun.com/sunflover454/article/details/50441014
本文首发在零日安全论坛：http://www.jmpoep.com/thread-833-1-1.html


使用NtCreateThreadEx + LdrLoadDll方式实现远程线程注入的特色在于比一般的远程线程注入稳定，可以注入系统进程，服务]]></description><category></category></item></channel></rss>