COM应用实例--获取桌面墙纸路径

COM应用实例--获取桌面墙纸路径:Win32控制台程序(C++)

/*功能:	获取桌面墙纸的路径,并建立一个该墙纸的快捷方式保存在指定路径说明:	COM应用实例, Win32控制台程序
*/
#include <iostream>
#include <afx.h>
#include <wininet.h>
#include <Shlobj.h>using namespace std;CString getWallpaper()							// 获取桌面墙纸的路径
{WCHAR wszWallpaper[MAX_PATH];CString strPath;HRESULT hr;IActiveDesktop* pIAD;hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**)&pIAD);if(SUCCEEDED(hr)){hr = pIAD->GetWallpaper(wszWallpaper, MAX_PATH, 0);		// 获得桌面墙纸的路径if(SUCCEEDED(hr)){wcout<<L"Wallpaper path is: "<<wszWallpaper<<endl;strPath = wszWallpaper;}elsecout<<"GetWallpaper() failed."<<endl;pIAD->Release();}elsecout<<"CoCreateInstance() failed."<<endl;return strPath;
}bool SavetoShellLink(const CString &path)
{bool ret = false;IShellLink *pISL;IPersistFile *pIPF;HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pISL);if(SUCCEEDED(hr)){hr = pISL->SetPath(path);				// 设置快捷方式的目标if(SUCCEEDED(hr)){hr = pISL->QueryInterface(IID_IPersistFile, (void**)&pIPF);if(SUCCEEDED(hr)){hr = pIPF->Save(L"C:\\wallPaper.lnk", FALSE);if(SUCCEEDED(hr))				// 快捷方式创建成功ret = true;pIPF->Release();}}pISL->Release();}return ret;
}int main()
{CoInitialize(NULL);							// 初始化COM库(让Windows加载DLLs)CString wallpaper = getWallpaper();if(wallpaper.GetLength() > 0){if(SavetoShellLink(wallpaper))cout<<"SavetoShellLink() Succeeded"<<endl;elsecout<<"SavetoShellLink() Failed"<<endl;}CoUninitialize();return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React开发(145):目录规范:

config ├── config.js umi 配置目录 ├── plugin.config.js webpack插件配置目录 └── router.config.js 路由配置目录 src: 静态资源目录: assets 公共组件目录&#xff1a;common 业务组件目录: components 主框架目录&#xff1a;layouts 国际化目录&…

献给网页开发者的20款Firefox插件

毫无疑问&#xff0c;比起其他浏览器&#xff0c;Chrome虽有着明显的优势&#xff0c;但是它的劲敌Firefox却是很多前端攻城师和研发人员的挚爱&#xff0c;为了尽可能地提高用户体验&#xff0c;Firefox的社区在插件开发和运用上有着丰富的经验&#xff0c;说它是网站开发者的…

VC6重载字体对话框,去除颜色下拉框

为了去除字体对话框中的颜色下拉框&#xff0c;我们需要重载字体对话框类&#xff1a;CFontDialog 1. 创建一个MFC Class&#xff0c;继承自CFontDialog: // MyFontDialong.h : header file //// CMyFontDialong dialogclass CMyFontDialong : public CFontDialog {DECLARE_DY…

Mac系统下如何使用命令行方式启动MySQL

首先&#xff0c;先去官网下载MySQL&#xff0c;选择Mac版本的DMG格式的文件。 官网地址为&#xff1a;dev.mysql.com/downloads/mysql/5.7.html 然后下载后&#xff0c;直接双击对应的dmg格式的文件进行安装即可。接下来&#xff0c;我们可以先看下如何在系统偏好设置中启动M…

React开发(146):开发规范

1&#xff0c;编辑器尽量用 VSCode&#xff0c;然后装 Prettier 插件 简单的代码规范 2&#xff0c;缩进2个空格&#xff0c;如果是tab 也设置成2个空格 3&#xff0c;命名时尽量用英文&#xff0c;文件名&#xff0c;组件名等&#xff0c;单词多的可以大写简写。 4&#xff0…

禁止微信公众号页面上下滑动

data(){return {handler: function(e) {e.preventDefault();}, //阻止body滑动} }, methods: {closeTouch: function() {document.getElementsByTagName("body")[0].addEventListener("touchmove", this.handler, { passive: false }); //阻止默认事件}, o…

权限管理系统系列之序言

权限管理系统我相信每个系统都会需要&#xff0c;所以设计一个好的权限管理系统会在系统开发中起到至关重要的作用&#xff0c;节省人力成本和资源&#xff0c;可以不用每次都为权限设计煞费心机。可能每个公司对权限的设计大体相同&#xff0c;略有不同&#xff0c;但是都会不…

linux借助expect完成自动登录

From: http://www.cnblogs.com/sunss/archive/2010/12/23/1914763.html 在工作中&#xff0c;我需要把远程服务器上的文件&#xff0c;拷贝到本地&#xff0c;可是scp的时候必须输入密码&#xff0c;用here文档又不能实现&#xff0c;终于找到一个好东东&#xff0c;expect ,可…

android之隐示意图跳转启动另一个activity

主面板布局&#xff1a;layout/activity_main.xml <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:layout_width"match_parent" android:layout_height"match_parent" android:orientation"…

linux培训课程第六天:ppt以及笔记

第六天授课大纲介绍&#xff1a;第十讲&#xff1a;引导服务器dhcp和NIS这里dhcp服务比较简单,说明一下&#xff0c;首先将dhcp做成功,然后有个dhcp中继,做起来很简单,最主要大家要理解&#xff0c;中继是处在怎样的环境中&#xff0c;你怎样去搭配,这个明白了&#xff0c;下面…

微信公众号 H5 页面中点击一个按钮调起手机的电话拨打功能

1、在H5页面中调起手机的电话拨打功能其实很简单就能实现&#xff1a; <a href"tel:13556891235">点击给我打电话</a>2、在H5页面中调起手机发送短信&#xff1a; <a href"sms:18688888888">发短信</a>3、要想实现点击一个按钮我…

React开发(147):开发注意

## 列表查询做法&#xff1a; 以下查询条件值包括&#xff1a;普通查询和高级查询 1. 首先普通查询和高级查询的值是不相互关联的。 2. 点击查询按钮时会重置 pageIndex 为1&#xff0c;否则查询结果有误差 2. 重置不会重置列表 title 的 sort 和 filter&#xff0c;也不会重置…

中国移动话费查询,短信查询,各种免费查询!以后别打10086了

发送YE/CXYE到10086,余额查询 发送CXBX到10086&#xff0c;查询当月套餐剩余短信条数。 发送CXGFX到10086&#xff0c;查询当月飞信GPRS套餐剩余流量。 发送CXGTC到10086&#xff0c;查询当月GPRS套餐剩余流量。 发送CXCCT到10086&#xff0c;查询当月超级畅听套餐剩余流量。 发…

用宏定义写出swap(x,y)

#include <stdio.h>// SWAP(x, y) 交换x,y的值 #define SWAP(x, y) \(y) (x) (y); \(x) (y) - (x); \(y) (y) - (x);int main() {int a 3-2, b 5*8;SWAP(a, b);printf("%d, %d\n", a, b);return 0; }运行结果&#xff1a; 40, 1

利用XML生成Excel

先用Excel将我们要生成的表格设计好&#xff1a; 然后另存为XML表格&#xff1a; 将生成的Book1.xml复制到项目中并打开: 找到Table节点&#xff0c;将节点的ss:ExpandedRowCount”2” 删除掉 往下会看到我们刚输入的标题了吧 <Row> <Cell ss:StyleID"s23"&…

httpsqs消息队列

安装&#xff1a; 在安装httpsqs之前要安装 libevent-2.0.12-stable.tar.gz和okyocabinet-1.4.47.tar.gz ulimit -SHn 65535 1、安装libevent-2.0.12-stable.tar.gz wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz##下载 tar zxvf libevent-2.0.1…

找出数组中重复的数

/*问题描述&#xff1a;数组a[N]&#xff0c;存放了1至N-1个数&#xff0c;其中某个数重复一次。写一个函数&#xff0c;找出被重复的数字.时间复杂度必须为O(N)&#xff0c;函数原型&#xff1a;int do_dup(int a[], int N) */#include <stdio.h>// 返回数组中重复的数 …

vue-cli 4.x 配置 htmlWebpackPlugin.options.title

在 vue.config.js 中添加配置&#xff1a; // 修改或新增html-webpack-plugin的值&#xff0c;在index.html里面能读取htmlWebpackPlugin.options.titlechainWebpack: config >{config.plugin(html).tap(args > {args[0].title 你想要设置的title;return args;}) },