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,调用
-
string strKey = string.Empty ;
-
SecurityA sa = new SecurityA();
-
btnEncode.Click += delegate
-
{
-
//加密
-
string strCode = sa.enCrypt(txtBefore.EditValue.ToString(),strKey);
-
txtAfter.Text = strCode;
-
};
-
btnDecode.Click += delegate
-
{
-
//解密
-
string strCode = sa.deCrypt(txtAfter.EditValue.ToString(), strKey);
-
txtDecode.Text = strCode;
-
};
-
txtKey.EditValueChanged += delegate { strKey = txtKey.EditValue == null ? string.Empty : txtKey.EditValue.ToString(); };