旗舰版win7系统中GraphEdit执行Loading a Graph From an External Process失败对策

操作系统:旗舰版win7

DirectShow SDK: 9.0

IDE环境:VS2008

以下代码参考MSDN:

 1 HRESULT AddToRot(IUnknown *pUnkGraph, DWORD *pdwRegister)
 2 {
 3     IMoniker * pMoniker = NULL;
 4     IRunningObjectTable *pROT = NULL;
 5
 6     if (FAILED(GetRunningObjectTable(0, &pROT)))
 7     {
 8         return E_FAIL;
 9     }
10
11     const size_t STRING_LENGTH = 256;
12
13     WCHAR wsz[STRING_LENGTH];
14     StringCchPrintfW(wsz, STRING_LENGTH, L"FilterGraph %08x pid %08x", (DWORD_PTR)pUnkGraph, GetCurrentProcessId());
15
16     HRESULT hr = CreateItemMoniker(L"!", wsz, &pMoniker);
17     if (SUCCEEDED(hr))
18     {
19         hr = pROT->Register(ROTFLAGS_REGISTRATIONKEEPSALIVE, pUnkGraph,
20             pMoniker, pdwRegister);
21         pMoniker->Release();
22     }
23     pROT->Release();
24
25     return hr;
26 }
27
28 void RemoveFromRot(DWORD pdwRegister)
29 {
30     IRunningObjectTable *pROT;
31     if (SUCCEEDED(GetRunningObjectTable(0, &pROT))) {
32         pROT->Revoke(pdwRegister);
33         pROT->Release();
34     }
35 }
36
37
38 void main()
39 {
40     IGraphBuilder *pGraph;
41     DWORD dwRegister;
42     HRESULT hr;
43
44     // Initialize the COM library.
45     hr = CoInitialize(NULL);
46     if (FAILED(hr))
47     {
48         printf("ERROR - Could not initialize COM library\n");
49         return;
50     }
51
52     // Create the filter graph manager.
53     hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
54         IID_IGraphBuilder, (void **)&pGraph);
55      if(FAILED(hr))
56      {
57         printf("ERROR - CoCreateInstance\n");
58         return ;
59      }
60
61     hr = AddToRot(pGraph, &dwRegister);
62
63     // Rest of the application (not shown).
64     while(1)
65     {
66         Sleep(1000);
67         //break;
68     }
69
70     RemoveFromRot(dwRegister);
71     pGraph->Release();
72
73     CoUninitialize();
74 }

【问题】:首先运行上述VC程序,然后打开GraphEdit程序,File->Connect to Remote Graph...->出现对话框Select a remote filter graph to view...,对话框中没有任何内容。

【原因】:Windows SDK中未包含Proppage.dll

其实MSDN说的很清楚了,如下面截图。

【对策】:搜索proppage.dll发现几个地方都有proppage.dll,选择C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin下面的proppage.dll,在命令行窗口执行

cd C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin

regsvr32 proppage.dll

将proppage.dll注册到Windows SDK即可。

【验证】接下来重新执行上面的步骤:首先运行上述VC程序,然后打开GraphEdit程序,File->Connect to Remote Graph...->出现对话框Select a remote filter graph to view...,对话框中出现

时间: 2024-10-27 12:35:37

旗舰版win7系统中GraphEdit执行Loading a Graph From an External Process失败对策的相关文章

最新Ghost版Win7系统下载

Windows7系统 最新Ghost版Win7系统32位万能快速装机版2014年5月 一.主要更新: 海量驱动,采用it天空6.0(0322)版万能驱动,通吃目前的新机和老机.系统已经集成netframework4.5.1,打全至所有 人气:97643245运行环境:/win7 软件大小:3.02 GB 更新日期:2014-05-14 Ghost深度技术Win7系统(32位)安全稳定版2014年5月 深度技术Ghost_Win7_32位安全稳定版采用微软内部封装技术,实现Longhorn的det

Win7系统中哪些服务可以关闭?

Win7系统中很多服务和进程其实大家在平时都用不上,这些服务和进程不仅占用了很大部分的资源,而且还会影响系统的运行速度和安全.我们可以关闭那些不常用的服务和进程来加快系统运行速度,但对于一般的用户来说可能不太清楚哪些是可关闭,哪些是不可关闭的,因此下面我们就来详解下Win7系统中可以关闭的服务. Win7系统查看服务的方法:点击开始--运行--输入services.msc--回车. 1.Application Management 该服务主要适用于大型企业环境下的集中管理,普通用户关了没什么影响

Ubuntu安装教程--Win7系统中含100M保留分区

1.检查 Win7 保留分区 1)进入 Win7 打开库文件夹,在左侧栏找到"计算机",瞄准点右键选择"管理"菜单: 2)在出来的管理面板左边找到"磁盘管理",点击它,在右边出来各个分区: 注意:如果里面有一个100M的系统保留分区,则进行下面(3-6)的操作,否则请跳至第2步复制启动文件: 3)瞄准100M"系统保留"分区点右键,选择"更改驱动器号和路径"菜单: 4)在出来的面板中,点左下角的"

PowerShell因为在此系统中禁止执行脚本解决方法

PowerShell因为在此系统中禁止执行脚本解决方法 在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". 所在位置 行:1 字符: 17 + E:\Test\test.ps1 <<<<     + CategoryInfo          : NotSpecified: (:) [], PSSecurityException    

Win7系统中MySQL服务无法启动的解决方法

Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法.在本地计算机无法启动MYSQL服务错误1067进程意外终止.这种情况一般是my.ini文件配置出错了1.首先找到这个文件: Win7下的默认安装路径C:\ProgramData\MySQL\MySQL Server 5.6\my.ini打开此文件找到:default-storage-engine=INNODB将default-storage-engine的值改为:MYISAM.2.但是还有问题:因为以前你

powershell-无法加载文件,因为在此系统中禁止执行脚本

写了一个powershell脚本测试脚本,结果执行的时候报错 $a=Get-Content C:\script.txt | select-string -pattern "ora"     if ( $a -eq  $null )     {                 write-host "error"      }     else     {          write-host "OK"      }  PS D:\> .\

vmware vsphere powercli 因为在此系统中禁止执行脚本

打开 VMware vSphere PowerCLI 出现 无法加载文件 C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing".所在位置 行:1 字符: 2+ . <<<<  "C:\Program

PowerShell 无法加载文件ps1,因为在此系统中禁止执行脚本

直接运行powershell时提示“无法加载文件ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". 主要是由于没有权限执行脚本. 运行get-help about_signing 提示了解执行策略输入 get-executionpolicy 显示 Restricted 即不允许执行任何脚本. 通过命令 get-help set-executionpolicy 可知有以下执行策略:<Unrestricted> | &l

win7系统中右键新建没有写字板

问题描述: win7系统中右键新建没有写字板 解决方案: 1. 按下Win+R后输入regedit打开注册表. (可以使用组合键ALT+ 键盘上的左键, 对展开的注册表项进行折叠方可查看) 2.定位到:HKEY_CLASS_ROOT\.rtf 3. 右键新建能查看到word, word后缀名是.doc. 定位到.doc进行查看,分析.rtf与.doc二者的区别 4. 从第3步可以发现.rtf与.doc缺少了一项ShellNew.  在修改.rtf前先右键导出.rtf 防止后续修改出现问题时可以恢