C#问题:检索COM类工厂中CLSID为{E436EBB3-524F-11CE-9F53-0020AF0BA770}的组件时失败,原因是出现以下错误:8007007e。

流言蜚语 2008-03-07 08:14:54
这几天在写一个播放器的程序,功能已经基本实现,于是生成了一个安装程序,想熟悉一下安装与部署方面的方法。用生成的安装程序安装之后,本没想到会影响到注册表,直接把安装之后的程序删除了,从此就出现了该错误,调试时就会出现该错误。

出现异常的代码:this.m_objFilterGraph = new FilgraphManager();

请各位前辈予以帮助,谢谢。
...全文
3412 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
胖jack 2010-08-12
  • 打赏
  • 举报
回复
呵呵~我今天也遇到你这个问题了,“曾尝试用system32\regsvr32.exe重新注册quartzDriectShow.dll链接库,可是显示注册失败,提示信息为:已加载quartzDriectShow.dll,但没有找到DllRegisterServer输入点。无法注册这个文件。”
输入点我猜是程序的入口,我要注册Excel的DLL组件,弄了半天都不见好。
最后才发现:机器上没有安装Excel……
在别的机器上就可以了。
wghxiaotu 2008-05-09
  • 打赏
  • 举报
回复
请问楼主做均衡器了吗?我也正在做播放器,,最近在均衡器方面遇到了很大困难。
如果LZ知道的话,请不吝赐教。
谢谢先!
流言蜚语 2008-03-14
  • 打赏
  • 举报
回复
什么一年半?
kafeiputao 2008-03-13
  • 打赏
  • 举报
回复
1年半的行么?
lalac 2008-03-08
  • 打赏
  • 举报
回复
由于COM的注册,加载等信息是保存在注册表里,lz删除了之后就不能在加载和使用这些com 组件了。

一般来说,此时只要通过GUID找到对应的组件,使用Regsrv32 /i重新注册即可。
流言蜚语 2008-03-08
  • 打赏
  • 举报
回复
我看了一下,quartzDriectShow里的GUID都是“56A868B1-0AD4-11CE-B03A-0020AF0BA770”,和出现异常时提示的组件不一样,我重新做了一下系统,现在在注册表里能查到当时缺少的组件,具体位置是:HKEY_CLASSES_ROOT\CLSID\{E436EBB3-524F-11CE-9F53-0020AF0BA770}。虽然现在没有那个问题了,但是我还是想了解一下当时出现那个问题的原因,麻烦明白的人给予帮助,谢谢了。
该组件的具体数据为:
HKEY_CLASSES_ROOT\CLSID\{E436EBB3-524F-11CE-9F53-0020AF0BA770}项
名称:默认
类型:REG_SZ
数据:Filter Graph

HKEY_CLASSES_ROOT\CLSID\{E436EBB3-524F-11CE-9F53-0020AF0BA770}\InprocServer32项
名称:默认
类型:REG_SZ
数据:C:\WINDOWS\system32\quartz.dll

名称:ThreadingModel
类型:REG_SZ
数据:Both
gxj760998 2008-03-08
  • 打赏
  • 举报
回复
quartzDriectShow
是这个出了问题吧?
你仔细检查下
流言蜚语 2008-03-08
  • 打赏
  • 举报
回复
是啊,查了好多资料都是说利用Regsvr32再注册就搞定了,可是也尝试过了,还是不行,注册的时候显示找不到输入点。

今天查了些注册表方面的资料,也没有什么结论。
流言蜚语 2008-03-07
  • 打赏
  • 举报
回复
附注:如果方便的话可以通过其他方式连接我:
QQ:10024563
TEL:13508911929
E-mail:talefox@yahoo.com.cn
对您提供的帮助我在这里表示不尽的感激。谢谢。
流言蜚语 2008-03-07
  • 打赏
  • 举报
回复
回复gxj760998:
已经试过重新安装程序。用同一安装程序安装的时候安装程序无法运行,重新生成安装程序后可以安装。又将系统安装到之前相同目录后所安装的程序在运行时依然存在异常,不能正常执行。
注册表中也已翻过好多次,可是由于对注册表不是很了解,最终未能解决问题。
至于在IDE中加载此组件,我对IDE的工作不是很了解,曾尝试用system32\regsvr32.exe重新注册quartzDriectShow.dll链接库,可是显示注册失败,提示信息为:已加载quartzDriectShow.dll,但没有找到DllRegisterServer输入点。无法注册这个文件。

回复boblaw:
{E436EBB3-524F-11CE-9F53-0020AF0BA770}所代表的组件不知道是不是对应quartzDriectShow.dll文件,我对注册表不是很了解,能不能请您详细解答一下,麻烦您了。
另外,该电脑一直以管理员身份登陆,应该不会存在权限不足的问题。
boblaw 2008-03-07
  • 打赏
  • 举报
回复
可能的原因是:
a. {E436EBB3-524F-11CE-9F53-0020AF0BA770}所代表的組件沒有成功注冊.
b. 當前使用者的權限不足

可以嘗試以管理員身份登錄,或者重新安裝該組件
gxj760998 2008-03-07
  • 打赏
  • 举报
回复
应该是调用了COM组件原因,具体的错误无法确定。
猜想:安装程序时注册这个组件,而且这个组件就在程序中,然后删除了,导致程序调试时缺少这个组件。
解决的办法: 1 重新安装程序 2 找注册表相关信息 3 在IDE中从新加栽此组件
流言蜚语 2008-03-07
  • 打赏
  • 举报
回复
事件处理程序:
// 视频控制条事件处理程序
private void m_objTrackBar_Scroll(object sender, EventArgs e)
{
this.m_objMediaPosition.CurrentPosition = this.m_objTrackBar.Value;
}

// 音频控制条事件处理程序
private void volumnControl_Scroll(object sender, EventArgs e)
{
if (this.volumnControl.Value == 0)
this.m_objBasicAudio.Volume = -10000;
else
{
this.m_objBasicAudio.Volume = this.volumnControl.Value - 2000;
}
}

// 计时器事件处理程序
private void m_timer_Tick(object sender, EventArgs e)
{
// 保持计时器与控制条同步
this.m_objTrackBar.Value = (int)this.m_objMediaPosition.CurrentPosition;
// this.label1.Text = "" + this.m_objBasicAudio.Volume;
}

// “播放”/“暂停”按钮事件处理程序
private void playButton_Click(object sender, EventArgs e)
{
if (this.playButton.Text.Equals("播放"))
{
if (this.m_objMediaControl != null)
this.m_objMediaControl.Run();
else
{
this.Clear();
this.PlayFilm();
}
this.playButton.Text = "暂停";
}
else if (this.playButton.Text.Equals("暂停"))
{
this.m_objMediaControl.Pause();
this.playButton.Text = "播放";
}
}

// “停止”按钮事件处理程序
private void stopButton_Click(object sender, EventArgs e)
{
if (this.m_objFilterGraph != null)
{
//this.m_objMediaPosition.CurrentPosition = 0;
//this.m_objMediaControl.Stop();
this.Clear();
this.playButton.Text = "播放";
}
}

// “减速”按钮事件处理程序
private void speedDownButton_Click(object sender, EventArgs e)
{
if (this.m_objFilterGraph != null)
{
if (this.m_objMediaPosition.CurrentPosition > 0)
{
this.m_objMediaPosition.Rate -= 0.3;
this.rateChange -= 0.3;
if (this.rateChange <= -0.9)
this.speedDownButton.Enabled = false;
if (this.rateChange < 0.9)
this.speedUpButton.Enabled = true;
}
}
}

// “加速”按钮事件处理程序
private void speedUpButton_Click(object sender, EventArgs e)
{
if (this.m_objFilterGraph != null)
{
if (this.m_objMediaPosition.CurrentPosition > 0)
{
this.m_objMediaPosition.Rate += 0.3;
this.rateChange += 0.3;
if (this.rateChange >= 0.9)
this.speedUpButton.Enabled = false;
if (this.rateChange > -0.9)
this.speedDownButton.Enabled = true;
}
}
}

// “全屏”按钮事件处理程序
private void fullScreenButton_Click(object sender, EventArgs e)
{
if (this.m_objFilterGraph != null)
{
this.m_objVidwoWindow.FullScreenMode = -1;
}
}
流言蜚语 2008-03-07
  • 打赏
  • 举报
回复
清理正在播放的文件:
private void Clear()
{
if (m_objMediaControl != null)
m_objMediaControl.Stop();
if (m_obnMediaEventEx != null)
m_obnMediaEventEx.SetNotifyWindow(0, 0, 0);
if (m_objVidwoWindow != null)
{
m_objVidwoWindow.Visible = 0;
m_objVidwoWindow.Owner = 0;
}
if (m_objBasicAudio != null) m_objBasicAudio = null;
if (m_objFilterGraph != null) m_objFilterGraph = null;
if (m_objMediaControl != null) m_objMediaControl = null;
if (m_objMediaEvent != null) m_objMediaEvent = null;
if (m_objMediaPosition != null) m_objMediaPosition = null;
if (m_objVidwoWindow != null) m_objVidwoWindow = null;
if (m_obnMediaEventEx != null) m_obnMediaEventEx = null;

this.m_timer.Enabled = false;
this.m_objTrackBar.Value = 0;

this.m_objTrackBar.Enabled = false;
this.volumnControl.Enabled = false;
}

播放电影:
private void PlayFilm()
{
this.m_objFilterGraph = new FilgraphManager();
try
{
this.m_objFilterGraph.RenderFile(this.filmPath);
this.m_objBasicAudio = this.m_objFilterGraph as IBasicAudio; // 声音控制接口
this.m_objVidwoWindow = this.m_objFilterGraph as IVideoWindow; // 图像控制接口
this.m_objVidwoWindow.Owner = (int)this.Handle;
this.m_objVidwoWindow.WindowStyle = WS_CHILD | WS_CLIPCHILDREN;
this.m_objVidwoWindow.SetWindowPosition(0, 0, this.Width, this.Height - 60);
}
catch
{
this.m_objVidwoWindow = null;
}
this.m_objBasicAudio = this.m_objFilterGraph as IBasicAudio; // 声音控制接口
this.m_objMediaEvent = this.m_objFilterGraph as IMediaEvent; // 播放事件接口
this.m_obnMediaEventEx = this.m_objFilterGraph as IMediaEventEx; // 扩展播放事件接口
this.m_obnMediaEventEx.SetNotifyWindow((int)this.Handle, WM_GRAPHNOTIFY, 0);
this.m_objMediaPosition = this.m_objFilterGraph as IMediaPosition; // 播放位置和速度控制
this.m_objMediaControl = this.m_objFilterGraph as IMediaControl; // 用来控制流媒体播放控制接口

this.m_objMediaControl.Run(); // 播放电影
this.m_objTrackBar.Enabled = true;
this.volumnControl.Enabled = true;

try // 初始化track bar
{
this.m_objTrackBar.LargeChange = 1;
this.m_objTrackBar.Maximum = (int)this.m_objMediaPosition.Duration;
this.m_timer.Enabled = true;
}
catch { }
}
流言蜚语 2008-03-07
  • 打赏
  • 举报
回复
初始化窗口
private void InitializeComponent()
{
this.m_objTrackBar = new System.Windows.Forms.TrackBar();
this.playButton = new System.Windows.Forms.Button();
this.stopButton = new System.Windows.Forms.Button();
this.speedDownButton = new System.Windows.Forms.Button();
this.speedUpButton = new System.Windows.Forms.Button();
this.fullScreenButton = new System.Windows.Forms.Button();
this.volumnControl = new System.Windows.Forms.TrackBar();
this.lblVolumnControl = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.m_objTrackBar)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.volumnControl)).BeginInit();
this.SuspendLayout();
//
// m_objTrackBar
//
this.m_objTrackBar.Location = new System.Drawing.Point(0, 306);
this.m_objTrackBar.Name = "m_objTrackBar";
this.m_objTrackBar.Size = new System.Drawing.Size(400, 42);
this.m_objTrackBar.TabIndex = 0;
this.m_objTrackBar.TickStyle = System.Windows.Forms.TickStyle.None;
//
// playButton
//
this.playButton.Location = new System.Drawing.Point(0, 337);
this.playButton.Name = "playButton";
this.playButton.Size = new System.Drawing.Size(60, 23);
this.playButton.TabIndex = 1;
this.playButton.Text = "播放";
this.playButton.UseVisualStyleBackColor = true;
this.playButton.Click += new System.EventHandler(this.playButton_Click);
//
// stopButton
//
this.stopButton.Location = new System.Drawing.Point(66, 337);
this.stopButton.Name = "stopButton";
this.stopButton.Size = new System.Drawing.Size(60, 23);
this.stopButton.TabIndex = 2;
this.stopButton.Text = "停止";
this.stopButton.UseVisualStyleBackColor = true;
this.stopButton.Click += new System.EventHandler(this.stopButton_Click);
//
// speedDownButton
//
this.speedDownButton.Location = new System.Drawing.Point(132, 337);
this.speedDownButton.Name = "speedDownButton";
this.speedDownButton.Size = new System.Drawing.Size(60, 23);
this.speedDownButton.TabIndex = 3;
this.speedDownButton.Text = "减速";
this.speedDownButton.UseVisualStyleBackColor = true;
this.speedDownButton.Click += new System.EventHandler(this.speedDownButton_Click);
//
// speedUpButton
//
this.speedUpButton.Location = new System.Drawing.Point(198, 337);
this.speedUpButton.Name = "speedUpButton";
this.speedUpButton.Size = new System.Drawing.Size(60, 23);
this.speedUpButton.TabIndex = 4;
this.speedUpButton.Text = "加速";
this.speedUpButton.UseVisualStyleBackColor = true;
this.speedUpButton.Click += new System.EventHandler(this.speedUpButton_Click);
//
// fullScreenButton
//
this.fullScreenButton.Location = new System.Drawing.Point(264, 337);
this.fullScreenButton.Name = "fullScreenButton";
this.fullScreenButton.Size = new System.Drawing.Size(60, 23);
this.fullScreenButton.TabIndex = 5;
this.fullScreenButton.Text = "全屏";
this.fullScreenButton.UseVisualStyleBackColor = true;
this.fullScreenButton.Click += new System.EventHandler(this.fullScreenButton_Click);
//
// volumnControl
//
this.volumnControl.Location = new System.Drawing.Point(328, 337);
this.volumnControl.Maximum = 2000;
this.volumnControl.Name = "volumnControl";
this.volumnControl.Size = new System.Drawing.Size(69, 42);
this.volumnControl.TabIndex = 6;
this.volumnControl.TickStyle = System.Windows.Forms.TickStyle.None;
this.volumnControl.Value = 2000;
this.volumnControl.Scroll += new System.EventHandler(this.volumnControl_Scroll);
//
// lblVolumnControl
//
this.lblVolumnControl.AutoSize = true;
this.lblVolumnControl.Location = new System.Drawing.Point(335, 330);
this.lblVolumnControl.Name = "lblVolumnControl";
this.lblVolumnControl.Size = new System.Drawing.Size(53, 12);
this.lblVolumnControl.TabIndex = 7;
this.lblVolumnControl.Text = "音量控制";
//
// Player
//
this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.lblVolumnControl);
this.Controls.Add(this.volumnControl);
this.Controls.Add(this.fullScreenButton);
this.Controls.Add(this.speedUpButton);
this.Controls.Add(this.speedDownButton);
this.Controls.Add(this.stopButton);
this.Controls.Add(this.playButton);
this.Controls.Add(this.m_objTrackBar);
this.Name = "Player";
this.Size = new System.Drawing.Size(400, 360);
((System.ComponentModel.ISupportInitialize)(this.m_objTrackBar)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.volumnControl)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();

}
流言蜚语 2008-03-07
  • 打赏
  • 举报
回复
构造函数:
public Player()
{
InitializeComponent();

this.m_objTrackBar.Size = new Size(this.Width, 45);
this.m_objTrackBar.TickStyle = TickStyle.None;
this.m_objTrackBar.Visible = true;
this.m_objTrackBar.Scroll += new EventHandler(m_objTrackBar_Scroll);
this.m_timer.Interval = 500;
this.m_timer.Tick += new EventHandler(m_timer_Tick);

this.Clear();
}
流言蜚语 2008-03-07
  • 打赏
  • 举报
回复
public string FilmPath
{
set
{
this.filmPath = value;
}
get
{
return this.filmPath;
}
}

private double rateChange = -0.3;
流言蜚语 2008-03-07
  • 打赏
  • 举报
回复
参数声明:
private const int WM_APP = 0x8000;
private const int WM_GRAPHNOTIFY = WM_APP + 1;
private const int EC_COMPLETE = 0x01;
private const int WS_CHILD = 0x40000000;
private const int WS_CLIPCHILDREN = 0x2000000;

private FilgraphManager m_objFilterGraph = null;
private IBasicAudio m_objBasicAudio = null;
private IVideoWindow m_objVidwoWindow = null;
private IMediaEvent m_objMediaEvent = null;
private IMediaEventEx m_obnMediaEventEx = null;
private IMediaPosition m_objMediaPosition = null;
private IMediaControl m_objMediaControl = null;

private string filmPath = "";
private TrackBar volumnControl;
private Label lblVolumnControl;

private Button playButton;
private Button stopButton;
private Button speedDownButton;
private Button speedUpButton;
private Button fullScreenButton;
private TrackBar m_objTrackBar;
private Timer m_timer = new Timer();
流言蜚语 2008-03-07
  • 打赏
  • 举报
回复
相关引用:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using quartzDriectShow;

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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