Files
lserp_cs_6.0/插件库/Lskj.Util/DelphiHelper.cs
T
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

222 lines
9.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
/******************************
* 说明:delphi与C#互操作类
* 创建人:龚宇超
* 创建日期:2017-08-16
* 修改人:
* 修改日期:
* 修改备注:
* 版本:1.0.0.0
******************************/
namespace Lskj.Util
{
/// <summary>
/// delphi与C#互操作类
/// </summary>
public sealed class DelphiHelper
{
[DllImport("user32.dll", EntryPoint = "SetParent")]
public static extern IntPtr SetParent(IntPtr hChild, IntPtr hParent);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int y, int Width, int Height, int flags);
/// <summary>
/// <para>说明:调用delphi库函数</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="Path">The path.</param>
/// <param name="Path1">The path1.</param>
/// <param name="FrmCaption">The FRM caption.</param>
/// <param name="SysParameterStr1">The system parameter STR1.</param>
/// <param name="SysParameterStr2">The system parameter STR2.</param>
/// <param name="FrmShowid">The FRM showid.</param>
/// <param name="SysParameterStr3">The system parameter STR3.</param>
/// <returns>System.Int32.</returns>
[DllImport("Lib/DelphiDll.dll")]
public static extern int Delphi_Call(StringBuilder Path, StringBuilder Path1, StringBuilder FrmCaption,StringBuilder SysParameterStr1, StringBuilder SysParameterStr2, int FrmShowid, StringBuilder SysParameterStr3);
/// <summary>
/// <para>说明:初始化</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="ConStr">The con string.</param>
/// <returns>System.Int32.</returns>
[DllImport("Lib/DelphiDll.dll")]
public static extern int Delphi_Init(StringBuilder ConStr);
/// <summary>
/// <para>说明:设置delphi库调用参数</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="OperatorID">The operator identifier.</param>
/// <param name="systemID">The system identifier.</param>
/// <param name="OperatorName">Name of the operator.</param>
/// <param name="WSName">Name of the ws.</param>
/// <param name="SkinPathStr">The skin path string.</param>
/// <returns>System.Int32.</returns>
[DllImport("Lib/DelphiDll.dll")]
public static extern int Delphi_SetParams(int OperatorID, int systemID, StringBuilder OperatorName, StringBuilder WSName, StringBuilder SkinPathStr);
/// <summary>
/// <para>说明:给调用delphi库的通用库设置主窗体句柄 CallingConvention = CallingConvention.StdCall)</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="MainHandle">The main handle.</param>
/// <returns>System.Int32.</returns>
[DllImport("Lib/DelphiDll.dll")]
public static extern int SetMainHandle(int MainHandle);
/// <summary>
/// <para>说明:delphi调用c#库</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="DLLName">Name of the DLL.</param>
/// <param name="parms">The parms.</param>
/// <returns>System.Int32.</returns>
[DllImport("Lib/DelphiDll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int DelphiCallCSharpDll(StringBuilder DLLName, StringBuilder parms);
/// <summary>
/// <para>说明:获取两个密码</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="ValidateCodeE">The validate code e.</param>
/// <param name="CodeELen">Length of the code e.</param>
/// <param name="ValidateCodeT">The validate code t.</param>
/// <param name="CodeTLen">Length of the code t.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
[DllImport("Lib/DelphiDll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern bool GetValidateCode(ref StringBuilder ValidateCodeE, ref int CodeELen, ref StringBuilder ValidateCodeT, ref int CodeTLen);
/// <summary>
/// <para>说明:调用delphi库函数</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="libKey">The library key.</param>
/// <returns>System.Int32.</returns>
[DllImport("Lib/DelphiDll.dll")]
public static extern int FreeDll(StringBuilder libKey);
/// <summary>
/// <para>说明:调用delphi库函数下载附件</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="dfile">The dfile.</param>
/// <param name="hwnd">The HWND.</param>
/// <returns>StringBuilder.</returns>
[DllImport("Lib/DelphiDll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern StringBuilder DownloadAttach(StringBuilder dfile, int hwnd);
/// <summary>
/// <para>说明:调用delphi库</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-06-08 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sPath">The s path.</param>
/// <returns>System.Int32.</returns>
public static int LoadDelphiDll(string sPath)
{
return LoadDelphiDll("lib/" + sPath, sPath, "", "", "", 0, "");
}
/// <summary>
/// <para>说明:调用delphi库</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sPath">The s path.</param>
/// <param name="sPath1">The s path1.</param>
/// <param name="sFrmCaption">The s FRM caption.</param>
/// <param name="sSysParameterStr1">The s system parameter STR1.</param>
/// <param name="sSysParameterStr2">The s system parameter STR2.</param>
/// <param name="showId">The FRM showid.</param>
/// <param name="sSysParameterStr3">The s system parameter STR3.</param>
/// <returns>System.Int32.</returns>
public static int LoadDelphiDll(string sPath, string sPath1, string sFrmCaption,string sSysParameterStr1, string sSysParameterStr2, int showId, string sSysParameterStr3)
{
int result = 0;
Cursor.Current = Cursors.WaitCursor;
try
{
StringBuilder path = new StringBuilder();
path.Append(sPath);
StringBuilder path1 = new StringBuilder();
path1.Append(sPath1);
StringBuilder caption = new StringBuilder();
caption.Append(sFrmCaption);
StringBuilder sps1 = new StringBuilder();
sps1.Append(sSysParameterStr1);
StringBuilder sps2 = new StringBuilder();
sps2.Append(sSysParameterStr2);
StringBuilder sps3 = new StringBuilder();
sps3.Append(sSysParameterStr3);
result = Delphi_Call(path, path1, caption, sps1, sps2, showId, sps3);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Cursor.Current = Cursors.Default;
}
return result;
}
}
}