`
SmartGeek
  • 浏览: 71681 次
  • 来自: 南京
社区版块
存档分类

在代码中插入ax

 
阅读更多

采用下面代码可以不需要注册ax,直接在程序中调用ax

 

#ifndef COMUtility_H
#define COMUtility_H

//////////////////////////////////////////////////////////////////////////

#include <Windows.h>

//////////////////////////////////////////////////////////////////////////

//	define the prototype of the class factory entry point in a COM dll
typedef HRESULT (STDAPICALLTYPE *DllGetClassObjectT)(REFCLSID clsid, REFIID iid, LPVOID *ppv);

//////////////////////////////////////////////////////////////////////////

template <DWORD dwUnique>
class COMUtilityT
{
public:
	static HRESULT CreateObjectFromPath(REFCLSID clsid, IUnknown **ppUnk, LPCSTR lpszPath)
	{
		//	load the target DLL directly
		HMODULE hModule = LoadLibraryA(lpszPath);
		if (hModule == NULL) {
			return HRESULT_FROM_WIN32(GetLastError());
		}

		return CreateObjectFromPath(hModule, clsid, ppUnk);
	}
	static HRESULT CreateObjectFromPath(REFCLSID clsid, IUnknown **ppUnk, LPCWSTR lpszPath)
	{
		//	load the target DLL directly
		HMODULE hModule = LoadLibraryW(lpszPath);
		if (hModule == NULL) {
			return HRESULT_FROM_WIN32(GetLastError());
		}

		return CreateObjectFromPath(hModule, clsid, ppUnk);
	}

private:
	static HRESULT CreateObjectFromPath(HMODULE hModule, REFCLSID clsid, IUnknown **ppUnk)
	{
		if (hModule == NULL) {
			return HRESULT_FROM_WIN32(GetLastError());
		}

		//	the entry point is an exported function
		DllGetClassObjectT fn = (DllGetClassObjectT) GetProcAddress(hModule, "DllGetClassObject");
		if (fn == NULL) {
			return HRESULT_FROM_WIN32(GetLastError());
		}

		//	create a class factory
		CComPtr<IUnknown> pUnknown;
		HRESULT hr = fn(clsid, IID_IUnknown, (LPVOID *) &pUnknown);
		if (SUCCEEDED(hr)) {
			CComQIPtr<IClassFactory> pClassFactory(pUnknown);
			if (pClassFactory == NULL) {
				hr = E_NOINTERFACE;
			}
			else {
				//	ask the class factory to create the object
				hr = pClassFactory->CreateInstance(NULL, IID_IUnknown, (LPVOID *) ppUnk);
			}
		}
		return hr;
	}
};

//////////////////////////////////////////////////////////////////////////

typedef COMUtilityT<0> COMUtility;

//////////////////////////////////////////////////////////////////////////

#endif

 

delphi代码:

var
DllGetClassObject: function(const CLSID, IID: TGUID; var Obj): HResult; stdcall;
ClassF: IClassFactory;
base: IBaseFilter;
LibHandle: Integer
begin
  LibHandle:= LoadLibrary('xvid.ax');
  DllGetClassObject:= GetProcAddress(LibHandle, 'DllGetClassObject');
  DllGetClassObject(CLSID_XVID, IClassFactory, ClassF);
  ClassF.CreateInstance(nil, IID_IBaseFilter, base);

  FilterGraph.AddFilter(base, 'Xvid Decoder')
end; 

 

分享到:
评论

相关推荐

    FMSC Ethercat AX58100_ax58100与stm32_stm32实现ethercat_stm32f407_AX

    此外,EtherCAT网络使用“报文注入”技术,即在标准的以太网数据帧中插入控制信息,实现了高速的数据传输和实时响应。 实现过程中,你需要进行以下步骤: 1. **硬件连接**:将AX58100与STM32F407通过SPI或GPIO接口...

    FoxitReader_AX_Pro.zip

    导入后,我们可以在Form上添加控件,例如“TActiveXControl”,然后设置其ClassID为FoxitReader AX Pro的CLSID,这样就可以在Delphi程序中实例化并使用FoxitReader了。 接下来,我们将详细探讨PDF转图片和PDF转Word...

    AX2012 Marking function code

    给定的代码段展示了如何在AX2012中实现Marking功能。这段代码由Parker Peng编写,日期为2013年9月3日,用于MGF_TSAM_CST_SLS_03_OrderChain模块的一个额外方法。以下是代码的详细解释: 1. **初始化变量**:首先,...

    delphi之PDF编辑控件FoxitReader_AX_Pro

    "delphi之PDF编辑控件FoxitReader_AX_Pro"就是这样一个解决方案,它提供了在Delphi应用程序中嵌入PDF阅读和编辑的能力。 Foxit Reader是一款著名的PDF阅读器,以其高效、快速和安全而闻名。其ActiveX版本,即Foxit...

    [详细完整版]程序设计C.doc

    在这个问题中,要求求解方程`ax^3 + bx^2 + cx + d = 0`的根,其中a、b、c、d的值分别为1、2、3、4。迭代公式如下: `x_n+1 = x_n - f(x_n) / f'(x_n)` 这里的`f(x)`是原方程,`f'(x)`是方程的导数。给出的代码中...

    mm x264 dll+ax filter

    通过DirectShow的过滤图,开发者可以轻松地将mm_x264.ax插入到视频处理流程中,实现高效的视频编码。 4. 集成与使用: 在实际应用中,开发者需要将mm_x264.dll和mm_x264.ax部署到系统路径或者应用程序目录下,然后...

    USB3.0网卡驱动(windows mac linux) AX88179

    在不同的操作系统中,如Windows、Mac和Linux,安装相应的驱动程序是确保AX88179芯片正常工作的关键步骤。 4. 安装驱动程序流程: - Windows系统:通常在插入USB3.0网卡后,Windows会自动检测并尝试安装驱动程序。...

    ax加括号(ax).zip_cad lsp_文本加括号

    在压缩包内,只有一个名为“ax加括号(ax).lsp”的文件,这正是我们要找的LISP源代码文件。使用文本编辑器打开它,我们可以看到具体的LISP函数定义和实现。这个文件应该包含了“ax”快捷键的定义,以及如何在文本前后...

    Spring ax/aop声明式事务配置实例

    AOP允许我们在程序运行时动态地将代码插入到其他对象中,它主要用来处理那些具有横切关注点的问题,如日志、异常处理和事务管理。在Spring中,AOP通过代理机制实现,可以创建两种类型的代理:JDK动态代理和CGLIB代理...

    usb3.0 转千兆网卡 ax88179-178a 驱动

    针对 AX88179-178A 的驱动文件 `ax88179_178a.ko` 是一个内核模块,用于在 Linux 内核中加载必要的功能来支持该网卡。`ko` 扩展名代表 "kernel object",是 Linux 内核模块的标准格式。 安装和使用这个驱动通常包括...

    debugging-via-ohci1394.rar_ax88172a

    在IT行业中,设备驱动程序是操作系统与硬件之间的重要桥梁,它们负责管理硬件设备,使得操作系统能够有效地使用硬件资源。此压缩包文件“debugging-via-ohci1394.rar_ax88172a”主要关注的是ASIX AX88172A USB 2.0...

    基于TFW影像坐标信息在CAD中插入正射影像的方法探讨.pdf

    随着地理信息系统(GIS)的快速发展,数字...需要注意的是,虽然文中提及了LISP编程的具体实现步骤,但具体代码实现和详细计算过程在给定的文件内容中并未详尽展示。在实际操作中,还需要根据具体情况进行编程实现。

    AX206固件刷机程序

    在IT行业中,固件是嵌入在硬件设备中的软件部分,它控制设备的功能并提供与操作系统和其他软件的接口。AX206芯片可能应用于各种设备,如数字电视接收器、USB闪存驱动器、媒体播放器等。刷机过程是为了升级、修复或者...

    AX2012_ENUS_DEVIII_03.pdf

    AX2012提供了一系列标准系统类,开发者在编写X++代码时可以充分利用这些类。本章节将介绍最常用的系统类,并展示如何使用它们来支持各种修改需求。 #### 集合类概览 X++包含两种复合数据类型:数组和容器,它们...

    vim入门及代码浏览 vim学习

    在Vim中,很多操作可以使用前缀数字来重复执行,比如要输入三个x,可以执行3ax(在当前光标之后插入)或3ix(在当前光标之前插入),然后按ESC键退出插入模式。 移动光标:在普通模式下,可以使用h、j、k、l键来...

    tcpdf例子代码.rar

    示例代码可能会演示如何在页眉中插入 logo 图片,这通常通过 `Image()` 函数实现。 4. 绘制框线: TCPDF 提供了 `Line()` 方法来绘制直线,可以用来创建边框或其他图形元素。开发者可以通过指定起点和终点的坐标来...

    VC++6.0使用ADO_AX控件连接数据库

    在VC++6.0中,我们可以利用ADO控件(如ADO AX)直接在用户界面中集成数据访问功能,而无需手动编写复杂的连接字符串。 连接数据库的关键在于“连接字符串”。连接字符串是一个包含了数据库服务器信息、数据库名、...

    gcc中的内嵌汇编语言

    由于GCC(GNU Compiler Collection)编译器的广泛应用,其内嵌汇编语言成为一种在C语言源代码中插入汇编指令的便捷方法。这种技术允许开发者混合使用高级语言的便利性和汇编语言的性能优化。 内嵌汇编语言主要应用...

    ax5ui-dialog:Javascript UI组件-对话框-JavaScript对话框Bootstrap对话框

    ax5ui对话 “对话框”在弹出窗口上显示信息...在HTML HEAD中插入“ ax5dialog”。 文件夹位置可以是您项目的任何位置。 但是,请确保在项目中分配正确的路径。 &lt; link rel =" stylesheet " type =" text/css " hre

    在Matplotlib图中插入LaTex公式实例

    本文将详细介绍如何在 Matplotlib 图形中插入 LaTeX 公式,并通过具体的代码示例进行展示。 #### 二、基础知识 1. **LaTeX** 是一种基于 TeX 的排版系统,广泛用于文档排版和数学公式渲染。 2. **Matplotlib** 是 ...

Global site tag (gtag.js) - Google Analytics