首页
社区
课程
招聘
[原创]视力保护色设置小程序(附源码)
发表于: 2013-1-20 14:10 16092

[原创]视力保护色设置小程序(附源码)

2013-1-20 14:10
16092

360不是有个眼睛卫士能把窗口设置成视力保护色的功能,我感觉挺好的,另外我增加了桌面背景色设置选项,反正我们搞开发的要那么多花哨的背景干嘛,我一般都喜欢纯色背景





首先我们先定义几个辅助函数


//选择颜色控件
BOOL ChooseColorDlg(
	HWND hWnd, 
	COLORREF &rgbResult,
	COLORREF *prgbCustom
	)
{
	CHOOSECOLOR		clr = {0};

	clr.lStructSize = sizeof(CHOOSECOLOR);
	clr.hwndOwner = hWnd;
	clr.hInstance = 0;
	clr.rgbResult = rgbResult;
	clr.lpCustColors = prgbCustom;
	clr.Flags =  CC_RGBINIT | CC_ANYCOLOR | CC_FULLOPEN;
	if(!ChooseColor(&clr))
		return FALSE;
	
	rgbResult = clr.rgbResult;

	return TRUE;
}

//获取当前墙纸
BOOL GetWallPaper(
	LPWSTR lpszWallPaper, 
	LPDWORD lpdwStyle
	)
{
	HRESULT				hr;
	WALLPAPEROPT		wallPaperOpt;
	IActiveDesktop		*pActiveDesktop;
	WCHAR				szPathFile[MAX_PATH];

	hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
		IID_IActiveDesktop, (void**)&pActiveDesktop);
	if(hr != S_OK)
		return FALSE;

	if(lpdwStyle)
	{
		wallPaperOpt.dwSize = sizeof(WALLPAPEROPT);
		wallPaperOpt.dwStyle = 0;
		hr = pActiveDesktop->GetWallpaperOptions(&wallPaperOpt, 0);
		if(hr != S_OK)
		{
			pActiveDesktop->Release();
			return FALSE;
		}
		*lpdwStyle = wallPaperOpt.dwStyle;
	}
	if(lpszWallPaper)
	{
		hr = pActiveDesktop->GetWallpaper(szPathFile, MAX_PATH, AD_GETWP_LAST_APPLIED);
		if(hr != S_OK)
		{
			pActiveDesktop->Release();
			return FALSE;
		}
		lstrcpyW(lpszWallPaper, szPathFile);
	}

	pActiveDesktop->Release();
	return TRUE;
}

//设置墙纸
BOOL SetWallPaper(
	LPCWSTR lpszWallPaper, 
	LPDWORD lpdwStyle
	)
{
	HRESULT				hr;
	WALLPAPEROPT		wallPaperOpt;
	IActiveDesktop		*pActiveDesktop;

	hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
		IID_IActiveDesktop, (void**)&pActiveDesktop);
	if(hr != S_OK)
		return FALSE;

	if(lpdwStyle)
	{
		wallPaperOpt.dwSize = sizeof(WALLPAPEROPT);
		wallPaperOpt.dwStyle = *lpdwStyle;
		hr = pActiveDesktop->SetWallpaperOptions(&wallPaperOpt, 0);
		if(hr != S_OK)
		{
			pActiveDesktop->Release();
			return FALSE;
		}
	}
	if(lpszWallPaper)
	{
		pActiveDesktop->SetWallpaper(lpszWallPaper, 0);
		if(hr != S_OK)
		{
			pActiveDesktop->Release();
			return FALSE;
		}
	}
	pActiveDesktop->ApplyChanges(AD_APPLY_ALL);
		
	pActiveDesktop->Release();
	return TRUE;
}

//获取注册表值
DWORD ReadRegValue(
	HKEY hkey, LPTSTR lpSubKey, 
	LPTSTR lpValueName,
	LPBYTE lpValue, 
	DWORD &cbValue
	)
{
	HKEY		hResult;
	DWORD		dwType;

	//打开键
	if(RegOpenKeyEx(hkey, lpSubKey, 0, KEY_READ, &hResult) != ERROR_SUCCESS)
		return -1;

	//读取值
	if(RegQueryValueEx(hResult, lpValueName, 0, &dwType, lpValue, &cbValue) != ERROR_SUCCESS)
	{
		RegCloseKey(hResult);
		return -1;
	}

	//关闭键
	RegCloseKey(hResult);
	
	return dwType;
}

//设置注册值
BOOL SetRegValue(
	HKEY hkey, 
	LPTSTR lpSubKey, 
	LPTSTR lpValueName, 
	LPBYTE lpValue, 
	DWORD cbValue, 
	DWORD dwType
	)
{
	HKEY		hResult;

	//打开键
	if( RegOpenKeyEx(hkey, lpSubKey, 0, KEY_WRITE, &hResult) != ERROR_SUCCESS )
		return FALSE;

	//设置注册表值
	if( RegSetValueEx(hResult, lpValueName, 0, dwType, lpValue, cbValue) != ERROR_SUCCESS )
	{
		RegCloseKey(hResult);
		return FALSE;
	}

	//关闭键
	RegCloseKey(hResult);

	return TRUE;
}


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (17)
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
Nice Pro !
2013-1-20 15:29
0
雪    币: 6723
活跃值: (1199)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不错,谢谢了!
2013-1-22 15:29
0
雪    币: 97697
活跃值: (200829)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
Thanks for share.
2013-1-22 15:35
0
雪    币: 74
活跃值: (748)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢分享,mark
2013-1-22 16:51
0
雪    币: 3366
活跃值: (1353)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
不错的小工具。
2013-1-22 19:38
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
thank you
2013-1-22 21:11
0
雪    币: 99
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
非常感谢,有新意
2013-1-22 23:10
0
雪    币: 138
活跃值: (475)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
挺好使~  赞++
2013-1-22 23:22
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不错,谢谢了
2013-1-23 10:27
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感谢LZ的程序,我在想,这个程序是作为背景用还是屏保时用好呢?如果要保护最好不看休息一会啦,呵呵。
2013-1-23 10:51
0
雪    币: 162
活跃值: (63)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
不错的软件,实在的很
2013-1-23 18:27
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
good
分享的都是好淫
2013-1-24 16:22
0
雪    币: 1318
活跃值: (149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
Thanks for share.
2013-1-24 21:01
0
雪    币: 205
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
mark先。
2013-1-25 08:44
0
雪    币: 123
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
谢谢分享,学习了,
2013-1-27 12:40
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习代码...哈哈...不过楼主那几个配色...早上可以不用吃饭咯..嘿嘿
2013-1-28 09:09
0
雪    币: 465
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
Thanks for share.
2013-2-3 13:42
0
游客
登录 | 注册 方可回帖
返回
//