C#迁移之callXBFLibrary - 3(调用COM)

    首先注册COM,

regsvr32 d:\tdtc_atl\xbfInfo.dll

     然后“Add Reference”

C#迁移之callXBFLibrary - 3(调用COM)_第1张图片


C#迁移之callXBFLibrary - 3(调用COM)_第2张图片

COM选项卡

C#迁移之callXBFLibrary - 3(调用COM)_第3张图片

添加完成时


        最后,添加事件。

        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);
        }
    }
}

       Cwin32API.cs

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();
        }
    }

    
}

你可能感兴趣的:(C#迁移之callXBFLibrary - 3(调用COM))