COM应用实例--获取桌面墙纸路径
生活随笔
收集整理的這篇文章主要介紹了
COM应用实例--获取桌面墙纸路径
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
COM應(yīng)用實(shí)例--獲取桌面墻紙路徑:Win32控制臺程序(C++)
/*功能: 獲取桌面墻紙的路徑,并建立一個該墻紙的快捷方式保存在指定路徑說明: COM應(yīng)用實(shí)例, 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); // 設(shè)置快捷方式的目標(biāo)if(SUCCEEDED(hr)){hr = pISL->QueryInterface(IID_IPersistFile, (void**)&pIPF);if(SUCCEEDED(hr)){hr = pIPF->Save(L"C:\\wallPaper.lnk", FALSE);if(SUCCEEDED(hr)) // 快捷方式創(chuàng)建成功ret = true;pIPF->Release();}}pISL->Release();}return ret; }int main() {CoInitialize(NULL); // 初始化COM庫(讓W(xué)indows加載DLLs)CString wallpaper = getWallpaper();if(wallpaper.GetLength() > 0){if(SavetoShellLink(wallpaper))cout<<"SavetoShellLink() Succeeded"<<endl;elsecout<<"SavetoShellLink() Failed"<<endl;}CoUninitialize();return 0; }創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結(jié)
以上是生活随笔為你收集整理的COM应用实例--获取桌面墙纸路径的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对STL的string进行格式化输出
- 下一篇: activemq 安全连接