易语言求助
易语言用对象方法调用第三方dll,注册了dll后,创建对象时怎么获取这个dll的对象类型? 在易语言中,使用对象方法调用第三方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中的方法。 他没帮助文档吗?你随便输入一个看他支不支持,不支持就整数形,字符串试呗,而且你调用dll要干嘛就是什么类型的啊 用CreateObject方法创建对象,然后可以用 TypeOf 函数来获取对象的类型 本帖最后由 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 类,你可以这样创建它的实例:
```e
.版本 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 对象特性。
qq465881818 发表于 2024-8-16 19:09
在易语言中,使用对象方法调用第三方dll时,首先需要注册dll,然后创建对象并获取dll的对象类。以下是具体 ...
obj := CreateObject("MyClass"),"MyClass"从哪获取?怎么获取DLL文件的CLSID? cfnm123 发表于 2024-8-16 21:48
这问题可以丢给ai去解答了
在易语言中,如果你想要通过对象的方式调用第三方 DLL,并且这个 DLL 提供 ...
“它提供了一个名为 MyClass 的 COM 类”,问题就在不知道它提供的com类是什么名称,只有一个DLL文件和函数,没有com类名。 katelya 发表于 2024-8-16 21:40
用CreateObject方法创建对象,然后可以用 TypeOf 函数来获取对象的类型
用CreateObject方法创建对象,不知道类型名怎么创建对象? 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’这个对象,因为不知道类型名。帮助文档只有函数说明。
页:
[1]