吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 531|回复: 8
收起左侧

[求助] 易语言求助

[复制链接]
Q823528082 发表于 2024-8-16 14:42
易语言用对象方法调用第三方dll,注册了dll后,创建对象时怎么获取这个dll的对象类型?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qq465881818 发表于 2024-8-16 19:09
在易语言中,使用对象方法调用第三方dll时,首先需要注册dll,然后创建对象并获取dll的对象类。以下是具体步骤:

注册dll:使用DllCall函数调用RegisterDll方法来注册dll。例如,假设你的dll文件名为MyDll.dll,可以使用以下代码进行注册:

DllCall("RegisterDll", "string", "MyDll.dll")
创建对象:使用CreateObject函数创建一个对象实例。例如,假设你的dll中有一个名为MyClass的类,可以使用以下代码创建一个对象实例:

obj := CreateObject("MyClass")
获取dll的对象类:在创建对象实例后,可以直接使用该对象实例调用dll中的方法和属性。例如,如果MyClass有一个名为MyMethod的方法,可以使用以下代码调用该方法:

obj.MyMethod()
注意:确保在调用dll之前已经正确注册了dll,否则将无法创建对象实例或调用dll中的方法。
Yifan2007 发表于 2024-8-16 20:29
他没帮助文档吗?你随便输入一个看他支不支持,不支持就整数形,字符串试呗,而且你调用dll要干嘛就是什么类型的啊
katelya 发表于 2024-8-16 21:40
用CreateObject方法创建对象,然后可以用 TypeOf 函数来获取对象的类型
cfnm123 发表于 2024-8-16 21:48
本帖最后由 cfnm123 于 2024-8-16 21:50 编辑

这问题可以丢给ai去解答了

在易语言中,如果你想要通过对象的方式调用第三方 DLL,并且这个 DLL 提供了一些 COM 对象或者你自己定义了某种形式的类来封装 DLL 的功能,你需要先了解该 DLL 是否支持 COM 接口或者其他可以创建对象的机制。

易语言本身并不直接支持面向对象的编程,但它可以通过一些方式间接地支持 COM 对象的使用。如果你想要创建一个第三方 DLL 中的对象,通常需要遵循以下步骤:

1. 注册 DLL

首先确保 DLL 已经被正确注册,如果它是 COM 组件的话,通常需要使用 regsvr32 命令进行注册。

2. 创建对象

创建对象的过程取决于 DLL 提供了什么类型的接口。如果是 COM 对象,你可以使用易语言的 创建 COM 对象 函数。

示例代码

假设你有一个名为 MyLib.dll 的 COM DLL,它提供了一个名为 MyClass 的 COM 类,你可以这样创建它的实例:

.版本 2
.子程序 主程序
.局部变量 COMObj, COM 对象
COMObj = 创建 COM 对象 ("MyLib.MyClass")
.如果真 (COMObj ≠ 无)
    调用 COM 方法 (COMObj, "SomeMethod", , )
.否则
    提示框 ("无法创建 COM 对象。")
.如果真结束

在这个例子中,“MyLib.MyClass” 是你要创建的对象的 ProgID(Program Identifier),你需要从 DLL 的文档或使用工具如 OLEVIEW 查看具体的 ProgID。

3. 调用方法

一旦创建了对象,你可以使用 调用 COM 方法 来调用对象的方法,并使用 读取 COM 属性写入 COM 属性 来访问对象的属性。

注意事项

  • 如果 DLL 不是 COM 组件,而是普通的 DLL,那么你不能直接创建对象。你需要通过导入函数的方式来调用 DLL 中的函数。
  • 如果 DLL 支持其他非 COM 的对象创建方式,你需要查阅该 DLL 的文档以了解如何创建对象。
  • 易语言对于 COM 对象的支持有限,可能无法处理所有复杂的 COM 对象特性。
 楼主| Q823528082 发表于 2024-8-17 08:50
qq465881818 发表于 2024-8-16 19:09
在易语言中,使用对象方法调用第三方dll时,首先需要注册dll,然后创建对象并获取dll的对象类。以下是具体 ...

obj := CreateObject("MyClass"),"MyClass"从哪获取?怎么获取DLL文件的CLSID?
 楼主| Q823528082 发表于 2024-8-17 08:53
cfnm123 发表于 2024-8-16 21:48
这问题可以丢给ai去解答了
[md]在易语言中,如果你想要通过对象的方式调用第三方 DLL,并且这个 DLL 提供 ...

“它提供了一个名为 MyClass 的 COM 类”,问题就在不知道它提供的com类是什么名称,只有一个DLL文件和函数,没有com类名。
 楼主| Q823528082 发表于 2024-8-17 09:02
katelya 发表于 2024-8-16 21:40
用CreateObject方法创建对象,然后可以用 TypeOf 函数来获取对象的类型

用CreateObject方法创建对象,不知道类型名怎么创建对象?
 楼主| Q823528082 发表于 2024-8-17 09:03
Console.WriteLine("S7.NET通信测试开始");
            objS7net = new Plc(CpuType.S71200, IpAddress, 0, 0);
            try
            {
                objS7net.Open();
                Console.WriteLine("S7.NET连接成功");
                sw.Restart();
                Count = 0;
                for (int i = 0; i < Times; i++)
                {
                    byte[] res = objS7net.ReadBytes(DataType.Memory, 0, 0, ReadLength);
                    if (res != null && res.Length == ReadLength)
                    {
                        Count++;
                    }
                    else
                    {
                        Console.WriteLine("S7.NET通信测试读取失败");
                    }
                }
                Console.WriteLine("S7.NET通信测试结束,耗时:" + (sw.ElapsedMilliseconds / Convert.ToSingle(Times)).ToString());
            }
            catch (Exception)
            {
                Console.WriteLine("S7.NET连接失败");
            }

上面是例程,方法我明白,现在不知道怎么创建‘new Plc’这个对象,因为不知道类型名。帮助文档只有函数说明。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-11 18:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表