com组件

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。

大城市里の小女人 提交于 2020-03-15 05:40:08
错误描述: 当在ASP.NET应用程序中引用Microsoft Excel组件,并在程序中调用时,部署到服务器上经常会遇到以下的错误: 检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 编程环境: ASP.NET C# 错误分析: 这是因为Microsoft Excel作为一个COM组件默认只能被以下帐户激活:Administrator System Interactive。而当你访问的ASP.NET应用程序实际是以ASP.NET或Network Service群组帐户执行的。 解决方案:一般方法有两种: 方法一:为ASP.NET应用程序专门分配一个帐户,并保证该帐户在本地登陆时能正常的使用MICROSOFT Excel,然后在 web .config文件的<system.web>节下加上以下设置。 <identity impersonate ="true" userName="账号" password="密码"/> 方法二:配置DCOM,使ASP.NET帐号能有权限调用Excel COM组件。 具体配置方法如下: 1、在服务器上安装office的Excel软件. 2、在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务" 如果你是32位 操作系统

小程序 组件

我只是一个虾纸丫 提交于 2020-03-12 08:32:29
自定义组件 如何自定义组件 1 创建一个文件夹,这个文件夹用来存放所有自定义组件 2 每个组件都用一个文件夹包裹,模拟pages的方式来管理自定义组件 3 在页面引用自定义组件,必须先在page.json中注册我们自定义组件 page.json { "usingComponents": { "com" : "/componentes/com/com" } } 4 在wxml中就可以直接使用了 <com></com> 页面向组件传值 1、组件中的wxml文件肯定有一个变量来接收页面的传值 <!-- name值是由页面决定的 --> <view>{{name}} is dsb</view> 2、我们要在组件的js文件中给这个name变成组件的属性: properties: { name:{ //属性名 type:String, //属性的类型 value:"egon" // 属性的默认值,如果页面没有给这个name赋值,就使用这个value的值 } }, 3 页面的wxml文件中直接给这个组件的name属性赋值就可以了,就相当于传值 <com name = "bob"></com> //可以是固定值 <com name = "{{name1}}"></com> //这里的可以是变量 组件向页面传递事件 1 组件要绑定一个事件 写法如下 <button bindtap="com_jia"

DotNET框架

情到浓时终转凉″ 提交于 2020-03-07 19:59:58
1.1 .NET的诞生 DotNET(以下称 .NET ) 2002年,微软发布了.NET框架的第一个版本,称其实现了下一代系统的目标。.NET框架是一种比MFC和COM编程技术更抑制并面向对象的环境。 具备以下特点: 多平台 行业标准 安全性 1.2 .NET框架组成 .NET框架有三部分组成。执行环境诚为CLR(Common Language Runtime,公共语言运行库) CLR在运行时管理程序的执行 包括以下内容: 内存管理和垃圾回收 代码安全验证 代码执行、线程管理及异常处理 编程工具涵盖了编码和调试的一切 包括以下内容: Visual Studio集成开发环境(IDE 现最新版本Visual Studio2019) .NET兼容的编译器 调试器 网站开发服务端技术,如 ASP.NET BCL(Base Class Library,基础类库)是.NET框架使用的一个大的类库,而且可以在你的程序中使用 1.3新的开发环境 ①面向对象的开发环境 CLR、BCL和C#完全是面向对象的,并形成了良好的集成环境 ②自动垃圾回收 CLR有一项服务称为GC(Garbage Collector,垃圾收集器)自动管理内存 ③互操作性 .NET框架专门考虑了不同的.NET语言、操作系统或Win32DLL和COM之间的互操作性 .NET语言的互操作性允许用不同的

使用ASP调用C#写的COM组件

馋奶兔 提交于 2020-03-07 05:11:02
1 新建类库MyTestDLL 2 右击项目“MyTestDLL”-》属性-》生成-》勾选“为COM互操作注册” 3 打开 AssemblyInfo.cs 文件 修改 [assembly: ComVisible(true)] 4 打开Visual Sutdio 2008 的命令提示行工具输入guidgen.exe 选择DEFINE_GUID 单击 "New GUID" 5代码 1、每个类名对应一个接口名,接口名是类名前加上一个大写的I 2、接口中声明的方法要使用属性 [DispId(n)] 3、类必须有一个无参构造函数 Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace MyTestDll { // 这里Guid为第4步生成的。 [Guid( " FFA4B191-FB5B-4dd5-B7B1-B2F32BF6F1FF " )] public interface IMyTestDll { [DispId( 0 )] string GetAbout(); } public class Test1:IMyTestDll { private string

使用ASP调用C#写的COM组件

耗尽温柔 提交于 2020-03-07 05:10:01
使用ASP调用C#写的COM组件 1 新建类库MyTestDLL 2 右击项目“MyTestDLL”-》属性-》生成-》勾选“为COM互操作注册” 3 打开 AssemblyInfo.cs 文件 修改 [assembly: ComVisible(true)] 4 打开Visual Sutdio 2008 的命令提示行工具输入guidgen.exe 选择DEFINE_GUID 单击 "New GUID" 5代码 1、每个类名对应一个接口名,接口名是类名前加上一个大写的I 2、接口中声明的方法要使用属性 [DispId(n)] 3、类必须有一个无参构造函数 Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace MyTestDll { // 这里Guid为第4步生成的。 [Guid("FFA4B191-FB5B-4dd5-B7B1-B2F32BF6F1FF")] public interface IMyTestDll { [DispId(0)] string GetAbout(); } public class Test1:IMyTestDll { PR ivate

NET调用Com组件事例

时间秒杀一切 提交于 2020-03-07 05:09:30
http://blog.csdn.net/shizhiyingnj/article/details/1507948 在程序设计中,往往通过键盘的某个按键来完成相关操作! 下面就来说明如何实现: 1.引入名称空间; using System.Runtime.InteropServices; (由于使用到API(user32.dll) 2.使用API [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern Int32 GetKeyState(long nVirtKey); 3.测试 private void button1_Click(object sender, System.EventArgs e) { if(GetKeyState(Convert.ToInt32 (Keys.Capital))==0) { MessageBox.Show("Caps Lock为开状态!"); } } 作者:刘铁猛 日期:2005-12-20 关键字:C# .NET Win32 API 版权声明:本文章受知识产权法保护,如果阁下想转载,在转载的时候烦劳阁下连同在下的姓名一起转载,并向 bladey@tom.com 发一个Mail,我很想知道我的文章都去哪里了.谢谢. 小序 Win32

C#写COM组件,JS调用控件

微笑、不失礼 提交于 2020-03-07 05:02:31
1、c#2005中新建项目,类型为类库,项目名为AddCom确定。   配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“生成”,选择“为COM Interop注册(_P)” 2、打开AssemblyInfo.cs文件,设置[assembly: ComVisible(true)],如果不改则不能被其他程序调用 3、编写com组件会用到guid(全球唯一ID),编写com组件必须要用到。c#会默认生成一个放在AssemblyInfo.cs,如没有生成,网上下一个生成guid的软件,有很多呢。 4、c#中源代码如下,按如下方法编写代码后生成工程,/bin/release中得到AddCom.dll。 using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace AddCom { [Guid("298D881C-E2A3-4638-B872-73EADE25511C")] public interface AddComInterface { [DispId(1)] int iadd(int a, int b); } [Guid("2C5B7580-4038-4d90-BABD-8B83FCE5A467")

Python调用C# Com dll组件实战

心不动则不痛 提交于 2020-03-07 05:01:28
之前公司有套C# AES加解密方案,但是方案加密用的是Rijndael类,而非AES的四种模式(ECB、CBC、CFB、OFB,这四种用的是RijndaelManaged类),Python下Crypto库AES也只有这四种模式,进而Python下无法实现C# AES Rijndael类加密效果了。 类似于这种C# 能实现的功能而在Python下实现不了的,搜集资料有两种解决方案,第一种方式,使用IronPython 直接调用C# dll文件,教程网上很多,不在赘述了,这种方式有个缺点,用的是ironPython而非Python,只是集成了一些.net framework库的Python版本,更新维护少;第二种方式是,C# dll源码编译成Com组件,Python再调用COM组件Dll的方法。 网上有很多Python调用COM dll教程,但大部分是C或C++编写的dll,很少有比较全面的讲解COM组件生成至调用过程,下面结合自己摸索多天的经历,简单介绍下如何生成COM组件,以及用Python如何调用COM dll组件,分享给大家。 我也是小白 ……^ ^,高手请飘过,如有写的不对之处,还请多多包涵以指正... 1. 如何生成 C# COM 组件 我用的是Microsoft visual studio 2010, 首先新建--项目--选择【类库】,名称自定义:ComToPython

vc中调用Com组件的方法详解

不羁岁月 提交于 2020-03-02 06:37:01
Requirement: 1.创建myCom.dll,该COM只有一个组件,两个接口IGetRes--方法Hello(),IGetResEx--方法HelloEx(); 2.在工程中导入组件或类型库 #import " 组件所在目录myCom.dll " no_namespace 或 #import " 类型库所在目录myCom.tlb " using namespace MYCOM; 方式1 CoInitialize(NULL); CLSID clsid; CLSIDFromProgID(OLESTR( " myCom.GetRes " ), // & clsid); // CComPtr < IGetRes > pGetRes; // 智能指针 pGetRes.CoCreateInstance(clsid); pGetRes -> Hello(); pGetRes.Release(); // 小心哦,请看最后的“注意” CoUninitialize(); 方式2 CoInitialize(NULL); CLSID clsid; HRESULT hr = CLSIDFromProgID(OLESTR( " myCom.GetRes " ), & clsid); IGetRes * ptr = NULL; hr = CoCreateInstance(clsid, NULL,

vc 中调用COM组件的方法

喜欢而已 提交于 2020-03-02 06:33:08
需求: 1.创建myCom.dll,该COM只有一个组件,两个接口: IGetRes--方法Hello(), IGetResEx--方法HelloEx() 2.在工程中导入组件或类型库 #import " 组件所在目录myCom.dll " no_namespace 或 #import " 类型库所在目录myCom.tlb " using namespace MYCOM; 方法一: CoInitialize(NULL); CLSID clsid; CLSIDFromProgID(OLESTR( " myCom.GetRes " ), & clsid); CComPtr < IGetRes > pGetRes; // 智能指针 pGetRes.CoCreateInstance(clsid); pGetRes -> Hello(); pGetRes.Release(); // 小心哦!!请看最后的“注意” CoUninitialize(); 方法二: CoInitialize(NULL); CLSID clsid; HRESULT hr = CLSIDFromProgID(OLESTR( " myCom.GetRes " ), & clsid); IGetRes * ptr; hr = CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,