亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python調(diào)用C# Com dll組件實戰(zhàn)教程

 更新時間:2017年10月12日 09:23:59   投稿:jingxian  
下面小編就為大家?guī)硪黄狿ython調(diào)用C# Com dll組件實戰(zhàn)教程。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

之前公司有套C# AES加解密方案,但是方案加密用的是Rijndael類,而非AES的四種模式(ECB、CBC、CFB、OFB,這四種用的是RijndaelManaged類),Python下Crypto庫AES也只有這四種模式,進而Python下無法實現(xiàn)C# AES Rijndael類加密效果了。

類似于這種C# 能實現(xiàn)的功能而在Python下實現(xiàn)不了的,搜集資料有兩種解決方案,第一種方式,使用IronPython 直接調(diào)用C# dll文件,教程網(wǎng)上很多,不在贅述了,這種方式有個缺點,用的是ironPython而非Python,只是集成了一些.net framework庫的Python版本,更新維護少;第二種方式是,C# dll源碼編譯成Com組件,Python再調(diào)用COM組件Dll的方法。

網(wǎng)上有很多Python調(diào)用COM dll教程,但大部分是C或C++編寫的dll,很少有比較全面的講解COM組件生成至調(diào)用過程,下面結合自己摸索多天的經(jīng)歷,簡單介紹下如何生成COM組件,以及用Python如何調(diào)用COM dll組件,分享給大家。

我也是小白 ……^ ^,高手請飄過,如有寫的不對之處,還請多多包涵以指正...

1.如何生成C# COM組件

我用的是Microsoft visual studio 2010, 首先新建--項目--選擇【類庫】,名稱自定義:ComToPython,點擊【確定】

重命名cs文件:ComToPython.cs,可自定義。 彈窗選擇【是】

COM可見性設置為 True:

上面等同于以下項目屬性設置:

勾選“為COM互操作注冊”:

新建簽名ComToPythonKey,取消勾選 “使用密碼保護密鑰文件”

編寫接口類IMyClass,ComToPython類實現(xiàn)接口的三個方法,例如Add()方法就是我們想要實現(xiàn)的功能,返回a與b之和。

ComToPython類之前的[ClassInterface(ClassInterfaceType.None)]一定要有,否則Python調(diào)用時會報錯。

[ProgId("ComToPython.Application")]指定Python調(diào)用COM時的名稱,后面Python代碼會看到。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
 
namespace ComToPython
{
  [Guid("350779B9-8AB5-4951-83DA-4CBC4AD860F4")]
  public interface IMyClass
  {
    void Initialize();
    void Dispose();
    int Add(int x, int y);
  }
 
  [ClassInterface(ClassInterfaceType.None)]
  [Guid("16D9A0AD-66B3-4A8A-B6C4-67C9ED0F4BE4")]
  [ProgId("ComToPython.Application")]
  public class ComToPython: IMyClass
  {
    public void Initialize()
    {
      // nothing to do 
    }
 
    public void Dispose()
    {
      // nothing to do 
    }
 
    public int Add(int x, int y)
    {
      return x + y;
    }
  }
}

GUID使用VS2010自帶工具生成,工具--創(chuàng)建GUID,點擊復制兩個GUID分別放至兩個類名之前

注:點擊新建GUID,可復制新建后的GUID:

最后F6編譯生成解決方案,在你的工程Debug目錄下會有ComToPython.dll生成:

最后一步注冊COM組件至系統(tǒng)

開始菜單--打開VS 2010 自帶CMD命令窗口(管理員權限)定位至ComToPython.dll文件夾下

執(zhí)行:gacutil /i ComToPython.dll 添加dll至全局緩存

執(zhí)行:regasmComToPython.dll 注冊dll至系統(tǒng)

2.Python如何調(diào)用COM dll組件

我用的是Python 2.7,IDE用的PyCharm 2017.1,PyCharm新建--項目ComToPython,新建項目py文件ComToPython.py

設置--添加兩個依賴庫:

添加安裝pywin32和comtypes依賴庫,以對應后面的兩種調(diào)用COM組件方式:

依賴裝好后,Python安裝目錄site-packages目錄下會有個win32com文件夾,雙擊C:\Python27\Lib\site-packages\win32com\client\下的makepy.py

選擇ComToPython,點擊OK

然后拷貝上面VS2010生成的COM組件ComToPython.dll至PyCharm ComToPython項目文件夾下:

編寫python調(diào)用COM dll代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
a=1
b=2
print "方法一:"
from win32com.client import Dispatch
dll = Dispatch("ComToPython.Application")
result = dll.Add(a, b)
print "a + b = " + str(result)

print "方法二:"
import comtypes.client
dll = comtypes.client.CreateObject('ComToPython.Application')
result = dll.Add(a, b)
print "a + b = " + str(result)

運行代碼,執(zhí)行結果如下:

以上就是Python調(diào)用C# COM Dll整個過程了

這篇Python調(diào)用C# Com dll組件實戰(zhàn)教程就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論