使用WindowsShell获取文件缩略图
来源:互联网 发布:ubuntu 切换系统语言 编辑:程序博客网 时间:2024/05/29 18:02
HRESULT KThumbnailGetter::GetShellThumbnailImage(LPCWSTR pszPath, HBITMAP* pThumbnail){ HRESULT hr; *pThumbnail = NULL; LPITEMIDLIST pidlItems = NULL, pidlURL = NULL, pidlWorkDir; WCHAR szBasePath[MAX_PATH], szFileName[MAX_PATH]; WCHAR* p; wcscpy(szBasePath, pszPath); p = wcsrchr(szBasePath, L'\\'); if (p) *(p + 1) = L'\0'; wcscpy(szFileName, pszPath + (p - szBasePath) + 1); do { CComPtr<IShellFolder> psfDesktop; hr = SHGetDesktopFolder(&psfDesktop); if (FAILED(hr)) break; CComPtr<IShellFolder> psfWorkDir; DWORD dwAttribs = SFGAO_COMPRESSED; ULONG cbEaten; hr = psfDesktop->ParseDisplayName(NULL, NULL, szBasePath, &cbEaten, &pidlWorkDir, NULL); if (FAILED(hr)) break; hr = psfDesktop->BindToObject(pidlWorkDir, NULL, IID_IShellFolder, (LPVOID*)&psfWorkDir); if (FAILED(hr)) break; // 获取文件的PIDL hr = psfWorkDir->ParseDisplayName(NULL, NULL, szFileName, NULL, &pidlURL, NULL); if (FAILED(hr)) break; // 查询缩略图 CComPtr<IExtractImage> peiURL; hr = psfWorkDir->GetUIObjectOf(NULL, 1, (LPCITEMIDLIST*)&pidlURL, IID_IExtractImage, NULL, (LPVOID*)&peiURL); if (FAILED(hr)) break; // 定义缩略图属性 SIZE size = { 256, 256 }; DWORD dwPriority = 0, dwFlags = IEIFLAG_ASPECT; WCHAR pszImagePath[MAX_PATH]; hr = peiURL->GetLocation(pszImagePath, MAX_PATH, &dwPriority, &size, 16, &dwFlags); if (FAILED(hr)) break; // 提取缩略图 hr = peiURL->Extract(pThumbnail); if (FAILED(hr)) break; break; } while (0); // 释放资源 if (pidlWorkDir) CoTaskMemFree(pidlWorkDir); if (pidlURL) CoTaskMemFree(pidlURL); return hr;}
阅读全文
0 0
- 使用WindowsShell获取文件缩略图
- 获取任意文件的缩略图
- Android 获取文件的缩略图
- android获取多媒体文件的缩略图
- Android 获取多媒体文件的缩略图
- android获取PDF文件的缩略图
- 【C#】获取任意文件的缩略图
- 使用 MediaMetadataRetriever类获取视频缩略图
- 使用ThumbnailUtils类获取视频的缩略图
- 使用ThumbnailUtils类获取视频的缩略图
- 使用PHP获取优酷网视频缩略图
- PHP之使用FFMPEG获取视频缩略图
- 获取缩略图
- 获取缩略图
- 获取缩略图
- Windows Shell编程——获取文件的缩略图
- Android 使用ThumbnailUtils类获取视频的缩略图
- Android使用VideoView播放网络视频,获取网络视频缩略图
- MySQL实现子到父的递归
- Oracle与Sybase null值排序问题
- 雷神科技新三板挂牌仪式在京举行 “游戏生态”第一股强势起航
- 第12周项目3-Dijkstra算法的验证
- leetcode Median of Two Sorted Arrays
- 使用WindowsShell获取文件缩略图
- 亿级Web系统搭建:单机到分布式集群
- windows环境下为php打开ssh2扩展
- 树莓派 Python Vim使用pydiction进行代码补全
- Java 银联支付官网demo测试及项目整合代码
- JS闭包与继承
- 第10周项目4- 哈夫曼编码的算法验证
- MyEclipse WebSphere开发教程:WebSphere 7安装指南(三)
- 将海康大华等网络摄像机RTSP流进行网页Flash rtmp和H5 hls直播的技术方案