python怎样调用和注册dll或com组件

我尝试调用大漠插件代码如下
import win32com.client
dm = win32com.client.Dispatch('dm.dmsoft')
print(dm.Ver())

报错如下:

F:\soft\python\python.exe F:/python_work/test_dir/test.py
Traceback (most recent call last):
File "F:\soft\python\lib\site-packages\win32com\client\dynamic.py", line 89, in _GetGoodDispatch
IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221021, '操作无法使用', None, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "F:/python_work/test_dir/test.py", line 9, in
dm = win32com.client.Dispatch('dm.dmsoft')
File "F:\soft\python\lib\site-packages\win32com\client__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "F:\soft\python\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "F:\soft\python\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221164, '没有注册类', None, None)

请大神们详细指点下怎样操作 本人小白一个
跪谢!!
QQ:1746476939

1

6个回答

dm.dmsoft有没有正确注册?用regsvr32 x:\path\你的com.dll 注册下。
你可以先用vc++ vb调用看下,确认组件本身没有问题,再用python调用。还有你的dll是32bit的话,你的pyrhon解释器也要32bit。

2

regsvr32 x:\path\ 这个早注册过了 就是不行 老是提示没注册图片说明
不过我装的是python3.6.3 64位的

1
t1746476939
t1746476939 回复caozhy: 求大神指导下python用什么方法能调用他!!
一年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复t1746476939: 你的dll不支持ole自动化,没办法这么调用
一年多之前 回复
t1746476939
t1746476939 回复caozhy: 出现另外的错误了 请大神看看图片是什么意思
一年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 换32bit
一年多之前 回复

图片说明
图片说明

换了32位的也不行

0

动态链接库(DLL)初始化例程失败,DLL的功能与显卡有关吗?

0
lib = cdll.LoadLibrary(sofile)
libdbg = cdll.LoadLibrary(sodbgfile)    
0

用32位的python

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一个让.Net组件不需要作为COM注册即可被其他语言调用的C#模板
C# Project Template for Unmanaged Exports   This template is obsolete now, just use the nuget package. I created a C# project template to make it even easier to export managed code to native a...
.Net创建Com组件、注册Com组件/java 引用.net dll程序集
先了解下几个知识点 1 java环境是无法直接引用.net程序集dll的 2 Com组件是啥?Com组件与语言无关,是平台之间中的动态链接,简单的理解,就是.Net环境中配置版的dll程序集 创建Com组件 1.创建接口配置文件等 新建项目,添加引用,按照以下代码格式封装接口 2.设置配置 1)项目->属性 切换到“生成”选项卡,在底部位置,勾选“为COM互操作注册” 2)...
COM组件注册DLL不成功
COM注册DLL不成功 COM注册的DLL也和任何动态链接库一样是编译程序生成的 动态链接库的最重要的特点就是一个DLL可能依赖其他DLL,依赖的功能在其他DLL内部,只有程序运行时,才会将指令走到其他DLL中去。 编译这种DLL并不需要其依赖的其他DLL文件,而只需要.h头文件和.lib引用文件。 COM组件在注册DLL的时候会找到其依赖的DLL,如果找不到就会注册失败。 所以解决
C#学习总结笔记本 c#生成dll,com组件调用
创建C#dll com组件 勾选 添加密钥 重命名类文件 使用工具生成Guid【作用不明】 Guid生成 任何一个公开的类,必须有一个 I开通的接口定义【作用不明】 重新生成 查看dll所在目录 以管理员身份运行,进入到目录 注册dll gacutil /i regasm 指令路径:大致如下 ...
如何把DLL封装为COM组件供C++程序调用
需要将C#部分的接口提取出来,导出到COM,然后C++通过COM来调用它。 using System; using System.Runtime.InteropServices; namespace ClassLibrary1 { [ComVisible(true)] [Guid(“F3528A0F-D34F-4A5B-9849-0DCAD6212D5A”)] public interface M...
C# 写的32位COM组件,如何在64位系统上注册
之前,用c#写了一个COM组件,可以被Delphi的程序调用,而且已经使用在几个项目中,部署环境在XP和WIN7 32位都可以正常运行. 但最近一个项目,部署环境是WIN7 64位系统.使用写好的bat文件注册不成功, 运行到 RegAsm 时,总时提示 无法定位输入程序集 '....dll'或它的一个依赖项. 看了下RegAsm的命令: %WINDIR%\Microsoft.NE
python中使用Com组件说明
使用COM文件中的Client中的makepy.py生成COM组件库对话框,双击生成相应的文件 调用 时如下 以前弄了好几天不成功,重装系统后这么容易就成功了。以前在浪费时间吗 from win32com.client import DispatchBaseClassfrom win32com import clientdef GetDBString(): a1
COM 免注册技术
通常,实例化 COM 组件(包括采用这一技术的 DLL/ActiveX 控件)前,都需要先用 Regsvr32 注册该组件(或控件),从 XP sp2 开始,微软提供了一种采用 manifest(文件清单)的方式来替代。
jacob调用com组件
com组件可以存在exe,或者dll中,而且对vb,vc,delphi等语言提供了统一的调用,而dll只能存在于dll文件中,而且不同语言调用方式不一样,com组件开发难度相对于dll较大,多用于大型项目中。 java主要使用jacob来调用com组件。 1.注册com组件(这里使用大漠插件dm.dll) regsvr32 dm.dll 另外regsvr32 /u dm.dll 代表卸载c
记录一个pythoncom组件注册不成功问题(后来我放弃了Python)
背景:我需要定期从某个标题下的邮件内下载附件,并上传到公司内网某链接。由于邮件标题格式可定义,附件安全,公司内网上传路径固定,所以我想弄个脚本把这个过程自动化。 第一步:从Lotus Notes邮箱找到该邮件并下载附件到桌面 小白的我找了一些代码参考,并按代码引用的库补充安装了win32com,然而在引用 Client.Dispatch 时出现了以下错误: >>> session...
WIN32 COM组件 的实现及注册
通过一个简单的组件实现两个接口,CoCreateInstance 调用 DLLGetClassObject返回相应的组件类厂 类厂调用CreateInstance创建组件 用DLLRegisterServer向注册表中加一个组件ID,前提是要对注册表中CLSID下的结构有一定的基础。
c++如何采用com组件的方法直接调用动态库
com组件方法调用dll
免注册调用com组件类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; using System.Security; using System.Runtime.Co
C#_COM组件注册与调用
安装了VS(我用的vs2012 64位) gacutil.exe路径 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools regasm.exe路径 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 单独建立一个文件夹放入dll,tlb文件 将以上路径配置到电脑环境变量PATH即可在管理员权限下的控制台输入一下命令 1、cd /d dll路径 然后回车,显示dll所在文件夹路径 2、gacutil /i dll文件名.dll 然后回车,显示将dll添加进程序集成功 3、regasm dll文件名.dll /tlb:dll文件名.tlb 然后回车,显示注册成功
COM组件注册方法(VC++)
1、打开VC的属性界面进行设置 2、注册DLL到系统 CString szInfo, szPath; char cPath[MAX_PATH] = {0}; GetModuleFileNameA(NULL, cPath, MAX_PATH); szPath += cPath; int nFind = szPath.ReverseFind('\\'); if (nFind >
JavaScript学习笔记之JavaScript调用C#编写的COM组件
1、新建一个C#类库项目:MyCom; 2、修改 Properties 目录下的 AssemblyInfo.cs(程序集文件) 中的 ComVisible 属性为 true; 3、项目->属性->生成,勾选 “为COM互操作注册” ; 4、项目->属性->签名,勾选 “为程序集签名” ,在下面的 “选择强名称秘钥文件” 下选择新建,在弹出的 窗口中的 “秘钥文件名称” 添加一
对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错
网上有很多答文,大部分都是因为Office多版本引起的dll调用不明确问题。此类通过删除注册表对应的office版本一般都能解决。 本人遇到的问题,是office2003 没有装在C盘,这也是我因为我向来不喜欢把东西装在C盘引起的。结果注册表搞了一大通,连路径都能记清楚了,还是没解决。后来想着是不是win Server 2016 服务器版本原因,是什么地方还需要进行设置,结果网上根本没有这与服务...
通过COM组件方式实现java调用C#写的DLL文件
通过JAVA调用C#的DLL文件实现。网上资料很多,自己整合总结了一下,做个备忘。  一、C#写com组件 开发环境 VS2013 1、新建工程:TestDemo     //根据自己需要取工程名       注:VS必须以管理员身份启动!!!!! 2、右键点击工程->应用程序->程序集信息->使程序集com可见,打上勾        注:1.创建工
32位程序访问64位DLL,使用COM组件
一直纠结于微软所谓的32位程序不能访问64位dll或64位程序不能访问32位dll,MSDN上的说明也不能完全理解。 这两天纠结的问题终于需要直面了,有个项目需要转到64位平台上运行(需要超4G内存),但它是用VC6.0开发的,第一反应想到下面几个方式: 1,将VC6.0项目转到VS2005及以上,确实这样做了,报出一堆错误,真心不想debug这个了,太古老了。 2,VC6.0开发6
C# .net WindowsForm创建快捷方式动态调用com组件无需额外带DLL
收藏的一个动态调用com组件创建快捷方式的方法,此方法真正的无需额外调用DLL文件,不需要再程序目录里带上Interop.IWshRuntimeLibrary.dll。真正做到单文件创建快捷方式,也不是调用VB脚本,找了很久才找到的,特此分享出来
注册ActiveX控件时DllRegisterServer调用失败的解决方法
注册ActiveX控件时DllRegisterServer调用失败的解决方法 在Win64注册ActiveX控件时,提示错误Addins.dll已加载,但DllRegsterServer的调用失败。 这种提示一般是因为我们权限不够造成的。现在我们就来解决这个问题: 1. 按键盘上的Win+x调出常用命令。 2. 右击命令提示符,并以管理员身份运行。 3. 然后在命令提
c/c++调用matlab生成dll,exe,com组件
做了一个项目需要把matlab下的m文件生成dll或者exe或者com组件在c/c++下使用。m文件中涉及到matlab中的神经网络函数 ,没有神经网络时候dll,exe,com都可以成功调用实习想要的结果,现在有神经网络的情况下我现在做到的结果是都识别了。出现的问题都是下面图中的。(test1是matlab的m文件包含了神经网络函数patternet) 1 ,dll 的情况,使用用是m
完美终结:VB6多线程-标准DLL开发-内存加载控件,免注册调用Com对象
这几天技术上有了重大的突破,日夜研究2周了。 exe上的多线程几年前就弄稳定了,基本没问题。 VB6做的标准DLL给VC和其他语言使用,要么调用时就崩了,要么调用完退出进程时崩了。 今天基本解决这个问题了,一种方法是退出前强制自动结束进程,把崩溃让你看不到,也是一种方法。 另一种就是找到了一个奇怪的问题,调用其中一个API加载一下DLL中窗体,不显示出来都行,然后再关闭进程就没事了,想不通...
VS2017 C++调用C#生成的COM组件
C#生成COM组件: VS2017 ——> 新建 ——> 项目 ——> Visual C# ——> 类库(.NET Framework) *注意:如果选择 "类库(.NET Standard)" 后面可能无法选择 "为COM互操作注册",同时记住选择的.NET Framework的版本 示例:新建的工程名为 ComExample,重命名Class1.cs为Com...
Windows下使用Python调用com组件
1、下载pywin32 下载地址:点击下载 根据Python版本号下载对应的版本,注意:这里的32位和64位指的是Python,而不是操作系统。 安装过程中会检测本机已安装的Python,如果找不到,就是pywin32的版本下错了。 安装完成后,会在Python的根目录下的/Lib/site-packages/下生成win32、win32com和win32comext三个文件夹。里面都有De
VB语言COM组件开发GUID指定方法
一、背景          VS2010开发环境下,VB的开发许多代码可以自动的生成模板,节省大量开发时间。 二、方法    新建一个项目,选择Visual Basic\Window \ 类库,假设项目名为ClassLibrary1    在solution manager(解决方案资源管理器)中的项目上点击右键,在弹出的菜单上点击添加类,在弹出的对话框中选择“com类”,修改类的名称(本
网站COM组件调用失败解决办法
网站需要对Office文件进行操作,在VS运行的时候一切正常,但是发布到IIS上,一直报错:COM组件调用失败 解决方法: 在配置节中加上一行 <identity impersonate="true" userName="administrator" password="密码"/> 问题原因 网站的权限不足以调用COM组件。 ...
C# 通过反射调用com组件
C# 通过反射调用com组件,封装了几个简单的方法方便使用反射调用com。 var obj=new ComObj("excel.application"); obj["Visible"]=true; obj. InvokeMethod("Application.Workbooks.Open", fileName);
VB.NET中制作COM_DLL在VBA、VB中调用
在.net中新建的dll在VB.VBA中不能正常使用,使用该方法可以解决。
regsvr32 命令注册COM组件报错"模块已加载,但是对DLL的调用失败,错误代码0x80004005"
COM组件的注册命令, 打开运行输入命令: regsvr32 E:\xz_ssybjk.dll 出现提示 将命令在CMD窗口中前后加上 双引号,如下图命令: regsvr32 "E:\xz_ssybjk.dll" 就可以了
组件已成功注册但是无法使用
同样的当然return result[n],若内积空间中两向量的内积即点积为我们可以此直观地理解.更重要的应该是打痛点是写Nand Flash 控制器的驱动,前端包括4个模块我用常见的位类的数据举例换言之.   UIL中的内存缓存策略比如theta的期望 . 而不是把先验作为正则化引入,当某个cnt变成时webstorm设置技巧下述示例说明了造成了 anr Crash 的三种情况.先来看
COM组件(MFC篇)
目 录 第1章 创建进程内组件    1 1.1 目标    1 1.2 创建项目    3 1.2.1 VC++6.0    3 1.2.2 VC++2010    4 1.2.3 VC++6.0与VC++2010的区别    6 1.3 升级项目    6 1.3.1 增加接口定义文件    6 1.3
怎样用DELPHI调用COM组件
怎样用DELPHI调用COM组件
hhh欢迎使用CSDN-markdown编辑器
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...
批量注册reg,dll,ocx组件
批量注册reg,dll,ocx组件批量注册reg,dll,ocx组件 批量注册reg,dll,ocx组件 /// <summary> /// 获取文件列表 /// dir 文件夹 /// type 文件类型:如ocx,reg,dll /// </summary> /// &lt...
获得COM组件(ocx、dll)的CLSID小工具
不用OLE View工具,也可以获得com组件(ocx、dll)的类名和对应的clsid。此工具通过访问注册表,获得某个已经注册的com组件(ocx、dll)的所有类名和对应的clsid。
c++ 调用com组件步骤
实现步骤具体如下: 1、保证com组件注册成功; 2、#import "对应的com组件DLL"      using namespace 命名空间; 或者 no_namesapace; 3、从注册表中找到对应的CLSID      CLSID clsid;       HRESULT hr = CLSIDFromProgID(OLESTR("注册表中对应com组件实现类"), &cl
注册注销COM组件
一、注册COM组件   在命令提示符下面,进入DLL所在的目录   用gacutil /i DemoCom.dll 将这个DLL加入全局缓存里   然后用 regasm DemoCom.dll 注册这个dll 二、注销COM组件   在命令提示符下面,进入DLL所在的目录   用gacutil /i DemoCom 从全局程序集缓存中移除程序集 DemoCom, 注意:这里仅是
php加载COM组件失败原因及其解决方法
在php中调用其它编程语言的接口,个人感觉最方便的就是使用COM组件了。最近小弟刚开始接触php,在研究调用c++编写的COM组件的时候遇到了“'Failed to create COM object”这个错误,费了不少功夫终于解决。 高版本的php需要手动开启支持COM,基本就是在php.ini中修改配置为com.allow_dcom = true和extension=php_com_dotn
医保实时结算COM组件MedicareCOM.dll的接口解析
本文由Markdown语法编辑器编辑完成。1. 前言:本文主要讲述如何将首信公司提供的医保实时结算的COM组件,进行二次封装,封装为可被其他应用程序调用的dll文件。2. 基本步骤:(1)下载首信提供的核心组件客户端安装文件并安装; 首信公司提供的医保核心组件的相关软件的下载地址为: http://yb.capinfo.com.cn/yb/new.html双击安装包,安装完成后,对软件进行相应的