关于vista 下的编程问题,望各位高手关注下,附原代码。也请袁大哥进来帮忙看下,Thanks

kingstar568 2006-10-30 09:47:29
是这样的,我们想给一种新得文件格式给予缩略图,原先在vista之前一般用IExtractImage 来实现,在vista下出现新得结构IThumbnailProvider. 我们想用新接口来实现这一功能,但是程序中的Initialize始终不被调用。想问下
1,是否与原来的IExtractImage实现方式有所不同?
2,注册表修改的信息是否与原来的有所不同?
代码如下:

///////////////////////////////////NewThumbnail.cpp////////////////////////////////////
HRESULT CCNewThumbnail::Initialize( IStream *pStream,DWORD grfMode)
{
//这个函数没有被调用。导致GetThumbnail没被初始化。
return S_OK;
}
HRESULT CCNewThumbnail::GetThumbnail(UINT cx,HBITMAP *phbmp,WTS_ALPHATYPE *pdwAlpha)
{

*phbmp = ::LoadBitmap(NULL,MAKEINTRESOURCE(IDB_BITMAP));
*pdwAlpha = WTSAT_ARGB;

return S_OK;
}
HRESULT CCNewThumbnail::SetFocus(VOID)
{
return S_OK;
}
HRESULT CCNewThumbnail::QueryFocus(HWND *phwnd)
{
return S_OK;
}
HRESULT CCNewThumbnail::SetRect(const RECT *prc)
{
return S_OK;
}
HRESULT CCNewThumbnail::DoPreview()
{
return S_OK;
}
HRESULT CCNewThumbnail::Unload()
{
return S_OK;
}
HRESULT CCNewThumbnail::SetWindow(HWND hwnd,const RECT *prc)
{
return S_OK;
}
////////////////////////NewThumbnail.rgs////////////////////////////
HKCR
{
NewThumbnailTest.CNewThumbnail.1 = s 'CNewThumbnail Class'
{
CLSID = s '{F39D9D33-85D5-4AAA-9486-347B51B3792D}'
}
NewThumbnailTest.CNewThumbnail = s 'CNewThumbnail Class'
{
CLSID = s '{F39D9D33-85D5-4AAA-9486-347B51B3792D}'
CurVer = s 'NewThumbnailTest.CNewThumbnail.1'
}
NoRemove CLSID
{
ForceRemove {F39D9D33-85D5-4AAA-9486-347B51B3792D} = s 'CNewThumbnail Class'
{
ProgID = s 'NewThumbnailTest.CNewThumbnail.1'
VersionIndependentProgID = s 'NewThumbnailTest.CNewThumbnail'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
val AppID = s '%APPID%'
'TypeLib' = s '{63B30B71-B44B-4265-B20F-7872A5F1D148}'
}
}
NoRemove .mm
{
PersistentHandler = s '{98DE59A0-D175-11CD-A7BD-00006B827D94}'

shellex
{
{8895b1c6-b41f-4c1c-a562-0d564250836f} = s '{F39D9D33-85D5-4AAA-9486-347B51B3792D}'
}
}
}
////////////////////////////////////////////////////////////////////////////////
问的地方不是很精确,往斑竹高抬贵手。只是这个问题比较急,跟microsoft联系也是象踢球一样踢来踢去的。有资料的提供点资料。
谢谢!
...全文
867 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
fellowcheng 2006-11-07
  • 打赏
  • 举报
回复
解决就好
kingstar568 2006-11-07
  • 打赏
  • 举报
回复
问题解决了,我们下了vista RC2的sdk 上面的例子程序可以通过测试了。谢谢各位,下班前揭帖。
kingstar568 2006-11-02
  • 打赏
  • 举报
回复
上午试了下,还是不行。还是IInitializeWithStream 调不起来
lonerdo 2006-11-02
  • 打赏
  • 举报
回复
_V_ 2006-11-02
  • 打赏
  • 举报
回复
.........
kingstar568 2006-11-02
  • 打赏
  • 举报
回复
马山回来报告结果

----------
更正: 马上回来报告结果
kingstar568 2006-11-02
  • 打赏
  • 举报
回复
非常感谢crystal_heart(笑看风云) 提供的资料,我正在试。
马山回来报告结果
OracleRoob 2006-11-02
  • 打赏
  • 举报
回复
接分
kingstar568 2006-11-02
  • 打赏
  • 举报
回复
是的,的确如此。
谢谢你crystal_heart(笑看风云) 的关注跟提供的帮助
crystal_heart 2006-11-02
  • 打赏
  • 举报
回复
http://windowssdk.msdn.microsoft.com/en-us/library/aa361575.aspx

Registering Your Thumbnail Provider
Registration of a thumbnail provider is based on standard file associations.

The GUID for the thumbnail handler Shell extension is E357FCCD-A995-4576-B01F-234630154E96.


看起来应该是在Shell extension做的东西,不是HKCR/.mm/shellex
Shell extension之前没有做过,你自己找多些资料吧。

Creating Shell Extension Handlers在这里有说明
http://windowssdk.msdn.microsoft.com/en-us/library/ms649575.aspx
ccccffff 2006-11-01
  • 打赏
  • 举报
回复
不懂
kingsang 2006-11-01
  • 打赏
  • 举报
回复
ding
icehouse 2006-11-01
  • 打赏
  • 举报
回复
up!
Bennyatt 2006-11-01
  • 打赏
  • 举报
回复
那个。。。。。。

vista 是个啥子东西呀??

现在开发工具太多了,我都没见过,摸都没摸过。。。

谁让我摸摸呀。。
zhenghaibingood 2006-11-01
  • 打赏
  • 举报
回复
xuexi学习
LinZhongBao 2006-11-01
  • 打赏
  • 举报
回复
o
zjysky 2006-11-01
  • 打赏
  • 举报
回复
这是什么东西啊,我怎么没见过
crystal_heart 2006-11-01
  • 打赏
  • 举报
回复
http://windowssdk.msdn.microsoft.com/en-us/library/aa361575.aspx


There are cases where initialization with streams is not possible. In scenarios where your thumbnail provider does not implement IInitializeWithStream, it must opt out of running in the isolated process where the system indexer places it by default when there is a change to the stream. To opt out of the process isolation feature, set the following registry value.


HKEY_CLASSES_ROOT
CLSID
{66742402-F9B9-11D1-A202-0000F81FEDEE}
DisableProcessIsolation= 1
If you implement IInitializeWithStream and do a stream-based initialization, your provider is more secure and reliable. Typically, disabling process isolation is only intended for legacy handlers; avoid disabling this feature for any new code. IInitializeWithStream should be the first choice whenever possible.
冰宇枫 2006-11-01
  • 打赏
  • 举报
回复
up
kingstar568 2006-11-01
  • 打赏
  • 举报
回复
头文件
// CCNewThumbnail

class ATL_NO_VTABLE CCNewThumbnail :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCNewThumbnail, &CLSID_CNewThumbnail>,
public IDispatchImpl<ICNewThumbnail, &IID_ICNewThumbnail, &LIBID_NewThumbnailTestLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IInitializeWithStream,
//public IThumbnailProvider,
public IPreviewHandler
{
public:
CCNewThumbnail()
{
}

DECLARE_REGISTRY_RESOURCEID(IDR_CNEWTHUMBNAIL)


BEGIN_COM_MAP(CCNewThumbnail)
COM_INTERFACE_ENTRY(ICNewThumbnail)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IInitializeWithStream)
//COM_INTERFACE_ENTRY(IThumbnailProvider)
COM_INTERFACE_ENTRY(IPreviewHandler)
END_COM_MAP()



DECLARE_PROTECT_FINAL_CONSTRUCT()

HRESULT FinalConstruct()
{
return S_OK;
}

void FinalRelease()
{
}

public:
STDMETHOD (Initialize) ( IStream *pStream,DWORD grfMode);
//STDMETHOD (GetThumbnail) (UINT cx,HBITMAP *phbmp,WTS_ALPHATYPE *pdwAlpha);

STDMETHOD (DoPreview) (VOID);
STDMETHOD (QueryFocus) (HWND *phwnd);
STDMETHOD (SetFocus) (VOID);
STDMETHOD (SetRect) (const RECT *prc);
STDMETHOD (TranslateAccelerator) (MSG *pmsg) {return E_NOTIMPL;}
STDMETHOD (Unload) (void);
STDMETHOD (SetWindow) (HWND hwnd,const RECT *prc);
};

OBJECT_ENTRY_AUTO(__uuidof(CNewThumbnail), CCNewThumbnail)
加载更多回复(31)
打开链接下载源码: https://pan.quark.cn/s/64cfd9352cf7 VLC播放器是一款备受青睐的跨平台开源多媒体播放软件,其3.0.11版本在继承既有卓越功能的同时,显著优化了对特定音视频编码格式的兼容性,尤其着重于对AVS+和DRA这两种源自中国的编码标准的支持。这一改进使得VLC不仅能够处理国际上通行的H264和H265视频编码,以及AC3音频编码,更能契合国内用户的播放需求,流畅播放采用AVS+和DRA编码的多媒体资料。1. **AVS+(Advanced Video Coding Plus)**:AVS+是中国自主设计的一种高效视频编码规范,其核心目标在于提升编码效能,减少带宽占用,特别适用于高清及超高清视频的传输。相较于早期的AVS技术,AVS+在编码效能、图像质量和实现难度上取得了更优的均衡,为国内的电视广播、IPTV、网络视频等领域提供了定制化的解决方案。2. **DRA(Digital Radio Audio)**:DRA是一种基于数字音频广播的高保真音频编码技术,由中国独立研发而成。该技术支持多样化的码率和声道布局,确保提供卓越的音频体验,同时具备优异的网络适应性及低延迟表现,适用于广播、互联网音频传输等多种使用场景。3. **H264(亦称AVC)**:H264是一种高效视频压缩规范,广泛应用于在线视频、流媒体服务、蓝光光盘等领域,其显著优势在于能够在较低的码率下呈现高清晰度的视频画面。4. **H265(亦称HEVC)**:作为H264的升级版标准,H265在压缩效率上实现了进一步突破,相同画质下可将文件大小减半,这对4K、8K等超高清视频的传输和存储尤为关键。5. **AC3(Dolby Digital)**:AC3是...

698

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧