zoukankan      html  css  js  c++  java
  • c# 引用外部dll

    c# 引用外部dll

    2015-12-09 20:39:38 aaa_dai 阅读数 604 文章标签: DllImportsecurityA.dll 更多

     1,实现类

    public class SecurityA {
    
    //extern修饰符支持在外部实现方法
    //外部修饰符的常见方法是在使用Interop 服务调入非托管代码时与 DllImport 属性一起使用;
    //方法还必须声明为 static
    [DllImport("securityA.dll")]
    static extern IntPtr DeCode(IntPtr source, IntPtr key);
    [DllImport("securityA.dll")]
    static extern IntPtr EnCode(IntPtr source, IntPtr key);
    
    public string enCrypt(string source,string key){
    
    string output = string.Empty;
    try
    {
    
    //转换为基本类型 IntPtr: 用于表示指针或句柄的平台特定类型。
    
    IntPtr ptrIn = Marshal.StringToHGlobalAnsi(source);
    
    IntPtr ptrInKey = Marshal.StringToHGlobalAnsi(key);
    
    IntPtr ptrRtn = EnCode(ptrIn, ptrInKey);
    
    output = Marshal.PtrToStringAnsi(ptrRtn);
    
    }
    
    catch(Exception e)
    
    {
    
    throw e;
    
    }
    
    return output;
    
    }
    
    
    public string deCrypt(string source, string key)
    
    {
    
    string strRtn = string.Empty;
    
    try
    
    {
    
    IntPtr ptrIn = Marshal.StringToHGlobalAnsi(source);
    
    IntPtr ptrInKey = Marshal.StringToHGlobalAnsi(key);
    
    IntPtr ptrRtn = DeCode(ptrIn, ptrInKey);
    
    strRtn = Marshal.PtrToStringAnsi(ptrRtn);
    
    }
    
    catch(Exception e)
    
    {
    
    throw e;
    
    }
    
    
    return strRtn;
    
    }
    
    }

    2,调用 

    
     
    1. string strKey = string.Empty ;

    2. SecurityA sa = new SecurityA();

    3.  
    4. btnEncode.Click += delegate

    5. {

    6. //加密

    7. string strCode = sa.enCrypt(txtBefore.EditValue.ToString(),strKey);

    8. txtAfter.Text = strCode;

    9. };

    10.  
    11. btnDecode.Click += delegate

    12. {

    13. //解密

    14. string strCode = sa.deCrypt(txtAfter.EditValue.ToString(), strKey);

    15. txtDecode.Text = strCode;

    16. };

    17.  
    18. txtKey.EditValueChanged += delegate { strKey = txtKey.EditValue == null ? string.Empty : txtKey.EditValue.ToString(); };

  • 相关阅读:
    .NET Task揭秘(一)
    .net线程池内幕
    Branch 向量化
    让你的gdb print 更可读
    获取web项目的绝对路径的方法总结
    Android事件监听(一)——简介篇
    Android事件监听(二)——点击鼠标事件
    jsp运行环境的安装和配置
    log4j中的DailyRollingFileAppender日志输出器工作原理
    开发环境搭建
  • 原文地址:https://www.cnblogs.com/grj001/p/12223490.html
Copyright © 2011-2022 走看看