您的位置:首页 > 移动开发

MimeType.exe 使 ActiveX 对象标签可以使用Mime type=application

2015-06-11 15:51 483 查看
<Object id = "RWAx" type="application/rw-cer" width="0" height="0"></OBJECT>

MimeType.exe 使 ActiveX 对象默认 MIME 类型播放器

资源网站:

https://support.microsoft.com/zh-cn/kb/165072/zh-cn

概要

MimeType.exe 说明 ActiveX 对象注册为默认播放器为 MIME 类型和接收要播放的文件的文件的名称所必需的步骤。Mimetype.exe 是 MFC 示例创建了一个 ActiveX 控件并将其注册为默认播放器的 MIME 类型。它还演示了如何处理调用
Internet Explorer 时进行发送的文件的 URL 来播放。

如假设您已注册为默认播放器.mtp 文件扩展名关联的 MIME 类型的组件。当 Internet Explorer 会看到下面的嵌入标记:


<EMBED SRC="test.mtp" HEIGHT=200 WIDTH=600></EMBED>


或下面的对象标记:


<OBJECT TYPE="application/x-mimetype" HEIGHT=200 WIDTH=600>
<PARAM NAME="SRC" VALUE="test.mtp">
</OBJECT>


或在用户单击带有.mtp 扩展名的文件的链接:


<A HREF="http://myserver/test.mtp">Play MIME-type</A>


Internet Explorer 启动已注册的组件并将 Test.mtp 的路径作为一个属性传递给它。


回到顶端
|

提供反馈



更多信息

下列文件已可从 Microsoft 下载中心下载:

MimeType.exe
() http://download.microsoft.com/download/ie5/mimetype/1/w9xnt4/en-us/mimetype.exe
有关如何下载 Microsoft 支持文件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591
() https://support.microsoft.com/kb/119591/EN-US/ 如何从在线服务获得 Microsoft 支持文件
微软已对此文件进行病毒扫描。Microsoft 使用该文件投递日期时可用的最新的病毒检测软件。该文件存储在安全增强型服务器上,以防止对文件进行任何未经授权的更改。

目的

Mimetype.exe 是 MFC 示例创建了一个 ActiveX 控件并将其注册为默认播放器的 MIME 类型。它还演示了如何处理调用 Internet Explorer 时进行发送的文件的 URL 来播放。建立并使用 Visual C++ 在 Intel 平台上的测试示例。

MIME 类型玩家

有三种情况其中 Internet Explorer (IE) 使用 MIME 类型玩家: 当 IE 看到嵌入标记 html 格式;当访问链接时通过单击超链接或通过键入一个 URL 在地址栏中。和 IE 时看到 HTML 时没有但没有 CLASSID 属性中的对象标记为指定的 MIME 类型属性。

对于嵌入的标记的 SRC 属性的 MIME 类型与关联的播放器 URL 查找。如果一个玩家创建在当前网页中嵌入标记中指定的尺寸。SRC URL 然后传递到播放机。

同样,导航到新的 URL 后,决定与目标 URL 关联的播放器。如果一个玩家在目标页中加载和 URL 传递到播放机。播放机的尺寸始终是最大的目标框架。

在对象标记没有 CLASSID 属性但与 MIME 类型属性的情况下播放机与 MIME 类型属性查找。如果一个玩家创建在当前网页中使用对象标记中指定的尺寸。SRC URL 然后传递到播放机。

值得注意的每种情况下要播放的文件未下载 Internet Explorer 的。由播放机下载文件或以其认为合适的任何方式与其进行交互。

作为一个玩家注册

ActiveX 组件作为默认 MIME 类型播放器依次为它必须具有以下注册表项:

HKEY_CLASSES_ROOT\MIME\DataBase\Content Type\ < mime 类型 >。这才需要创建新的 MIME 类型。它将新的 MIME 类型 < mime 类型 > 添加到 MIME 类型的数据库时。
HKEY_CLASSES_ROOT\MIME\DataBase\Content Type\ < mime 类型 > 扩展 = < mime 类型扩展 >。这将与 < mime 类型 > 的 MIME 类型关联的文件扩展名 < mime 类型扩展 >。请注意扩展是一个命名的值不是一个子项。
HKEY_CLASSES_ROOT\MIME\DataBase\Content Type\ < mime 类型 > CLSID = < 播放器 CLSID >。这将与 < mime 类型 > 的 MIME 类型关联玩家的 clsid。请注意 CLSID 是一个命名的值不是一个子项。
HKEY_CLASSES_ROOT\ < mime 类型扩展 >。注册的文件扩展名。这是只需将新的文件扩展名。而且如果一个玩家可以找直接从 MIME 类型不需要注册的文件扩展名。
内容类型的 HKEY_CLASSES_ROOT\ < mime 类型扩展 > = < mime 类型 >。这将 < mime 类型 > 的 MIME 类型关联文件扩展名 < mime 类型扩展 > 服务器不知道一个给定文件的 MIME 类型时很有用。IE 可以检查该扩展并确定它的 MIME 类型。注意到内容类型是一个命名的值不是一个子项。
HKEY_CLASSES_ROOT\CLSID\ < 播放器 clsid >。播放机的类 ID。这将自动添加如果使用 MFC 或 ActiveX 设计器框架中创建控件。
< 播放器 clsid > HKEY_CLASSES_ROOT\CLSID\ \Control。这标识符合 OCX ' 94 规范控制播放机。对于此版本的 Internet Explorer MIME 类型玩家必须注册为 94 OCX"控件。未来版本的
Internet Explorer 将播放机为支持其他类型的 ActiveX 对象。如果该控件使用 MFC 或 ActiveX 设计器框架创建自动添加此项。
HKEY_CLASSES_ROOT\CLSID\ < 播放器 clsid > \EnableFullPage\ < mime 类型扩展 >。这会告诉 Internet Explorer 此播放机可显示完整的框架。它需要处理导航到 Url 扩展名 < mime 类型 > 作为其扩展。

下面的代码取自该示例的 DllRegisterServer 方法 (Mimetype.cpp) 并说明了每个按顺序的注册步骤:


// Create new MIME type key for our new MIME type. Only necessary for
// new mime types.
if ( ERROR_SUCCESS != RegCreateKey(HKEY_CLASSES_ROOT, pszMTSubKey,
&hkey) )
break;

// Add extension value to the MIME type key to associate .mtp files
// with the application/x-mimetype MIME type
if ( ERROR_SUCCESS != RegSetValueEx(hkey, pszMTExtVal, 0, REG_SZ,
(const BYTE *)pszMTExt, strlen(pszMTExt)) )
break;

// Add class id to associate this object with the mime type
if ( ERROR_SUCCESS != RegSetValueEx(hkey, pszMTCLSIDVal, 0, REG_SZ,
(const BYTE *)pszMTCLSID, strlen(pszMTCLSID)) )
break;

RegCloseKey(hkey);

// Register .mtp as a file extension. This is only necessary for new
// file extensions. A new player for .avi files for instance would not
// require this.
if ( ERROR_SUCCESS != RegCreateKey(HKEY_CLASSES_ROOT, pszMTExt, &hkey)
)
break;

// Add content type to associate this extension with the content type.
// This is required and is used when the mime type is unknown and IE
// looks up associations by file extension.
if ( ERROR_SUCCESS != RegSetValueEx(hkey, pszMTContentVal, 0, REG_SZ,
(const BYTE *)pszMTContent, strlen(pszMTContent)) )
break;

RegCloseKey(hkey);

// Open the key under the control's clsid
// HKEY_CLASSES_ROOT\CLSID\<CLSID>
wsprintf(szSubKey, "%s\\%s", pszMTCLSIDVal, pszMTCLSID);
if ( ERROR_SUCCESS != RegOpenKey(HKEY_CLASSES_ROOT, szSubKey, &hkey) )
break;

// Create the EnableFullPage and extension key under this so that we
// can display files with the extension full frame in the browser.
wsprintf(szSubKey, "%s\\%s", pszMTFullPage, pszMTExt);
if ( ERROR_SUCCESS != RegCreateKey(hkey, szSubKey, &hkey1) )
break;


接收与播放的 URL

在所有情况下 Internet Explorer 将传递到通过 IPropertyBag 界面的默认播放机中播放该文件的 URL。即当 Internet Explorer 启动播放机,它 IPropertyBag 创建并加载要播放的文件的 url 的"SRC"属性。然后查询 IPersistPropertyBag
的播放机并将其发送到 IPersistPropertyBag::Load IPropertyBag 实例。

在 MFC 中这体现为属性交换使您可以直接在重写中的 DoPropExchange 加载"SRC"属性。下面的代码是从示例 CMimetypeCtrl::DoPropExchange 方法 (mtpctl.cpp):


PX_String(pPX, "SRC", m_cstrFileName);


这从属性包中获取的字符串属性并将其放到 CString 成员。

注意:如果将 ActiveX 设计器框架 (ActiveX SDK 中的 basectl) 可以调用 LoadTextState 与 IPersistPropertyBag 框架的实现调用重写。您可以调用 IPropertyBag::Read 以获取"SRC"属性。

下载文件

Internet Explorer 之前将该 URL 发送到播放机不会下载该文件。播放机负责检索的文件和播放它。有多种方式来处理此项工作取决于需要执行的播放机。一种方法是使用 URLDownloadToCacheFile 函数示例所示。此函数会将文件仅在必要时下载并返回该文件的本地缓存副本的名称。需要说明的是
URLDownloadToCacheFile 是阻止功能。即使异步下载数据的函数不返回下载所有数据之前。

如果需要完成异步下载一个 UOS 等其他功能 URLOpenStream 或可能是常规 URL 名字对象会更合适。下面的代码将取自 CMimetypeCtrl::DoPropExchange (在 Mtpctl.cpp) 并使用本地文件的完整路径的字符串 m_cstrCacheFileName 已满:


if ( FAILED(URLDownloadToCacheFile(
GetControllingUnknown(),                // control's IUnknown
m_cstrFileName,                         // URL to download
m_cstrCacheFileName.GetBuffer(MAX_PATH),// buffer to fill with name
MAX_PATH,                               // buffer length
0,                                      // reserved
NULL )) )                               // no status information
{
AfxMessageBox("Cannot download file");
m_cstrCacheFileName = "Not Found";
return;
}


运行示例

Mimetype.exe 是可以展开要安装的项目文件的 Mimetype 控件的自解压可执行文件。通过使用提供的 Mimetype.dsw 项目文件的 Visual C++ 5.0 生成此示例。该控件将自动被注册作为生成过程的一部分。然后可以在浏览器中加载示例
Test.htm。

这样的结果应该是 mimetype 控件加载当前页中的两个实例。控件将显示为一个带有矩形 (Test.mtp) 的 URL 的名称以及本地文件的名称 (< 路径 > \Test.mtp)。该示例页还包含一个链接。单击的链接将显示新页面显示相同的
URL 信息的控件加载完整帧。

所提供的 URL 和本地文件路径是相同的原因是如果它是一个本地的 URLDownloadToCacheFile 函数的返回所提供的 URL 的完整路径 (文件:)URL。如果远程文件中的嵌入和对象标记或链接的目标的源 URL (http:,ftp:) 的本地文件路径可以包含远程文件的缓存副本的完整路径。

注意: 按示例项目创建的 Mimetype 控件没有经过数字签名。为此具体取决于当前的 IE 安全性设置 IE 可能既无法实例化控件或将加载该控件之前发出警告。如果 IE 安全性设置为高设置,IE 将不会加载示例控件。允许控件实例化 IE
的安全级别必须正在加载该控件的位置的区域设置为中等或低。将安全级别设置在 IE 选择视图菜单然后单击 Internet 选项菜单项目选择安全选项卡选择中或低作为示例页来自该区域的安全级别。


回到顶端
|

提供反馈



属性

文章编号: 165072 - 最后修改: 2005年3月1日 - 修订: 4.0

这篇文章中的信息适用于:

Microsoft Internet Explorer 3.0
Microsoft Internet Explorer 4.0 128-Bit Edition
Microsoft Internet Explorer 4.01 Service Pack 2
Microsoft Internet Explorer 5.0
Microsoft Internet Explorer 5.5
Microsoft Internet Explorer (Programming) 6.0
Microsoft Internet ActiveX Controls 1.0

关键字:
kbmt kbfile kbinfo kbinterop kbsample KB165072 KbMtzh
点击这里察看该文章的英文版:
165072
(https://support.microsoft.com/kb/165072/en-us/ )


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: