锁屏背景替换(3)-xp篇
来源:互联网 发布:u盘格式化数据还有 编辑:程序博客网 时间:2024/05/18 02:13
1、背景界面替换原理
xp不同win7,设置比较复杂,没有现成的接口可以调用。大家可以尝试一下,XP是桌面是什么图片,那么锁屏的时候就是什么背景。因此,设置xp锁屏背景,只需要在锁屏时,动态替换桌面背景即可(这里背景的替换会有点延时的),然后解锁时,恢复之前的桌面背景即可,这里你必须小心处理各种事件,否则,之前的桌面可能不能恢复成功。
1 BOOL CXPDesktopUtil::SetWallpaper(LPTSTR lpPicFile, DWORD dwStyle) 2 { 3 HRESULT hr; 4 IActiveDesktop* pIAD; //创建接口的实例 5 CoInitialize(NULL); 6 hr = CoCreateInstance(CLSID_ActiveDesktop,NULL,CLSCTX_INPROC_SERVER,IID_IActiveDesktop,(void**)&pIAD); 7 if(!SUCCEEDED(hr)) 8 { 9 return FALSE; 10 }11 12 //将文件名改为宽字符串,这是IActiveDesktop::SetWallpaper的要求 13 WCHAR wszWallpaper[MAX_PATH]; 14 MultiByteToWideChar(CP_ACP,0,lpPicFile,-1,wszWallpaper,MAX_PATH); 15 //设置墙纸 16 17 hr = pIAD-> SetWallpaper(wszWallpaper, 0); 18 if(!SUCCEEDED(hr)) 19 {20 return TRUE; 21 }22 23 //设置墙纸的样式 24 WALLPAPEROPT wpo; 25 wpo.dwSize = sizeof(wpo); 26 wpo.dwStyle = dwStyle; 27 hr = pIAD->SetWallpaperOptions(&wpo,0); 28 if(!SUCCEEDED(hr)) 29 {30 return FALSE; 31 }32 33 //应用墙纸的设置 34 hr = pIAD-> ApplyChanges(AD_APPLY_ALL); 35 if(!SUCCEEDED(hr)) 36 {37 return FALSE;38 }39 40 //释放接口的实例 41 pIAD-> Release(); 42 CoUninitialize(); 43 44 return TRUE;45 }
备份之前桌面的背景图片
1 CString CXPDesktopUtil::backupWallPaper(LPTSTR lpPicFile) 2 { 3 TCHAR szPath[MAX_PATH] = { 0 }; 4 5 CString strBackup = CAppUtil::getApplicationDirectory() + "backup"; 6 7 if (FALSE == PathFileExists(strBackup.GetBuffer())) { 8 if(FALSE == CreateDirectory(strBackup.GetBuffer(), NULL)){ 9 return _T("");10 }11 }12 13 strBackup += _T("\\backgroundDefault.jpg");14 15 ::CopyFile(lpPicFile, strBackup.GetBuffer(), FALSE);16 17 return strBackup;18 }
这里你可能需要关闭用户快速切换
1 //关闭快速用户切换 2 HKEY hKey; 3 4 LPCTSTR lpRun = _T("SOFTWARE\\Microsoft\\\Windows NT\\CurrentVersion\\Winlogon"); 5 long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey); 6 if(lRet== ERROR_SUCCESS) 7 { 8 DWORD dwValue = 0; 9 lRet = RegSetValueEx(hKey, _T("AllowMultipleTSSessions"), 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(dwValue));10 if (ERROR_SUCCESS == lRet)11 {12 }13 else14 {15 DWORD dwError = GetLastError();16 }17 18 RegCloseKey(hKey); 19 }
2、定时器
同win7的。
3、恢复
替换之前备份的桌面背景即可。
附完整的源代码:
http://git.oschina.net/zhujf21st/LockApp
阅读全文
0 0
- 锁屏背景替换(3)-xp篇
- 锁屏背景替换-xp篇
- 锁屏背景替换-Win7篇
- 锁屏背景替换(2)-Win7篇
- 锁屏背景替换-概述
- 锁屏背景替换(1)-概述
- 替换layout图片背景
- Gimp 替换白色背景
- 改变启动页黑白屏,替换成自己的背景
- 背景选择器selector替换按钮默认背景
- 去掉xp桌面图标背景颜色
- 简单的链接背景替换
- activity启动时替换背景
- 替换QQ音乐背景音
- 锁屏背景CSS
- desktop.ini XP下实现磁盘背景
- 2000/XP系统中的无敌替换命令
- xp 下替换所有文件夹图标
- vim中使用正则表达式
- 锁屏背景替换(1)-概述
- apache poi 的java例子,是由原厂提供的
- java 字符串截取的方法
- 锁屏背景替换(2)-Win7篇
- 锁屏背景替换(3)-xp篇
- Mockito 如何 mock 返回值为 void 的方法
- 配置nginx 403 Forbidden
- 线程局部存储技术
- RTTI运行时类型识别
- Tomcat NIO模式修改
- C++源文件后缀名
- Tomcat管理页面登陆方法
- Tomcat apr模式开启方法