首先注册COM,
regsvr32 d:\tdtc_atl\xbfInfo.dll
COM选项卡
添加完成时
最后,添加事件。
1. 写xbf文件
1)读Ini文件配置
Boolean flagMSSQL = false; Boolean flagSecu = false; string sectionName = ini.readIniFileVal("config", "type"); string strSrv = ini.readIniFileVal(sectionName, "Server"); if (!Equals(strSrv, "")) flagMSSQL = true; if (flagMSSQL) { strConn = "Provider=SQLOLEDB.1;" + "Password=" + ini.readIniFileVal(sectionName, "Pwd") + ";" + "Persist Security Info=True;" + "User ID=" + ini.readIniFileVal(sectionName, "User") + ";" + "Initial Catalog=" + ini.readIniFileVal(sectionName, "DB") + ";" + "Data Source=" + ini.readIniFileVal(sectionName, "Server"); } else // MS Access { string strPWD = ini.readIniFileVal(sectionName, "Pwd"); if (!Equals(strPWD, "")) flagSecu = true; if (flagSecu) { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + ini.readIniFileVal(sectionName, "DB") + ";" + "Persist Security Info=False;" + "Jet OLEDB:Database Password=" + ini.readIniFileVal(sectionName, "Pwd"); } else { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + ini.readIniFileVal(sectionName, "DB") + ";" + "Persist Security Info=True"; } }
2)调用COM接口
xbfLibsLib.genXBFileClass xbf = new genXBFileClass(); xbf.WriteXBFile(strConn);
2. 读xbf文件
genXBFileClass xbf = new genXBFileClass(); string filePath = currDir + "/" + tb_fileName.Text; string strRet = xbf.ReadXBFile(filePath); MessageBox.Show(strRet);
调试环境:VS2005
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using xbfLibsLib; namespace callXBFLibrary { public partial class frmCall_XBF : Form { private Cwin32API ini; private string strConn; private string currDir; public frmCall_XBF() { InitializeComponent(); currDir = Directory.GetCurrentDirectory(); ini = new Cwin32API(currDir + "/xbfConfig.ini"); } private void btnWriteXBF_Click(object sender, EventArgs e) { Boolean flagMSSQL = false; Boolean flagSecu = false; string sectionName = ini.readIniFileVal("config", "type"); string strSrv = ini.readIniFileVal(sectionName, "Server"); if (!Equals(strSrv, "")) flagMSSQL = true; if (flagMSSQL) { strConn = "Provider=SQLOLEDB.1;" + "Password=" + ini.readIniFileVal(sectionName, "Pwd") + ";" + "Persist Security Info=True;" + "User ID=" + ini.readIniFileVal(sectionName, "User") + ";" + "Initial Catalog=" + ini.readIniFileVal(sectionName, "DB") + ";" + "Data Source=" + ini.readIniFileVal(sectionName, "Server"); } else // MS Access { string strPWD = ini.readIniFileVal(sectionName, "Pwd"); if (!Equals(strPWD, "")) flagSecu = true; if (flagSecu) { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + ini.readIniFileVal(sectionName, "DB") + ";" + "Persist Security Info=False;" + "Jet OLEDB:Database Password" + ini.readIniFileVal(sectionName, "Pwd"); } else { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + ini.readIniFileVal(sectionName, "DB") + ";" + "Persist Security Info=True"; } } MessageBox.Show(strConn); xbfLibsLib.genXBFileClass xbf = new genXBFileClass(); xbf.WriteXBFile(strConn); } private void btnReadXBF_Click(object sender, EventArgs e) { genXBFileClass xbf = new genXBFileClass(); string filePath = currDir + "/" + edtFileName.Text; string strRet = xbf.ReadXBFile(filePath); MessageBox.Show(strRet); } } }
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace callXBFLibrary { class Cwin32API { [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] private static extern uint GetPrivateProfileString( string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName); private string iniFileName; public Cwin32API(string fileName) { this.iniFileName = fileName; } /** * <p> Read Ini File Value </p> * * @param name="section" * @param name="key" * @returns string * **/ public string readIniFileVal(string section, string key) { StringBuilder retStrBuilder = new StringBuilder(256); GetPrivateProfileString( section, key, "", retStrBuilder, 256, iniFileName); return retStrBuilder.ToString(); } } }