在C#中调用VFP的DLL文件 --COM编程一例

    技术2022-05-11  78

     在C#中调用VFP的DLL文件 --COM编程一例

    这过程个非常简单,分为两步:

    1.在VFP中建立公共类语法如下:DEFINE CLASS ClassName1 AS ParentClass [OF ClassLibrary] [OLEPUBLIC]   [IMPLEMENTS cInterfaceName [EXCLUDE]       IN TypeLib | TypeLibGUID | ProgID ]   [[PROTECTED | HIDDEN PropertyName1, PropertyName2 ...]   [[.]Object.]PropertyName = eExpression ...]   [ADD OBJECT [PROTECTED] ObjectName AS ClassName2 [NOINIT]      [WITH cPropertylist]]   [[PROTECTED | HIDDEN] FUNCTION | PROCEDURE Name[_ACCESS |_ASSIGN]      ([cParamName [AS type] [@]]) [AS type]      [HELPSTRING cHelpString] |      THIS_ACCESS(cMemberName)      [NODEFAULT]      cStatements   [ENDFUNC | ENDPROC]]   [PEMName_COMATTRIB = nFlags | DIMENSION PEMName_COMATTRIB[5]      [PEMName_COMATTRIB[1] = nFlags       PEMName_COMATTRIB[2] = cHelpString       PEMName_COMATTRIB[3] = cPropertyCapitalization       PEMName_COMATTRIB[4] = cPropertyType       PEMName_COMATTRIB[5] = nOptionalParams]]ENDDEFINE

    具体说明自己查下MSDN好了,各参数都有详细的说明,如(类A):      DEFINE CLASS f1 AS custom OLEPUBLIC &&必须声名为公共      FUNCTION mymethod (parm1 AS integer , parm2 AS string) AS interger

          RETURN parm1      ENDFUNC      ENDDEFINE

    应将此类声名为公共类,否则无法编译为DLL文件,编译时根据需要选择单线程还是多线程

    2.在VS的C#工作中调用在解决方案资源管理器中的“引用”上面右键,弹出的快捷菜单中选择“添加引用”,然后在对话框中“浏览”,选中刚才编译的DLL文件确定即可,编译器会自动把它修改并复制到程序所在文件夹。

    这时会发现引用中多了一个新项NewItem(根据你的VFP工程的名来的),在调用些类的文件的引用处添加:using NewItem;

    这样,在C#中就可以直接用这个类了,只是类名后要加“Class”,实例化的方法是:

    ClassName1 VFPClass = new ClassName1();

    如上面这个类A:

    f1Class myClass = new f1Class();//实例化

    int i = myClass.mymethod( 9 , "asdfasdf" )//调用类中的函数,用i接收返回值

    当然也可以在不using的情况下直接NewItem.ClassName1 VFPClass = new NewItem.ClassName1();

    好了,调用COM原来如此简单!^_^

    这样是不是使C#使用VFP表的功能和效率大大提高了呢?虽然还不敢和SQL SERVER和储存过程一比高下。


    最新回复(0)