主要思路是調用Win32 API。
1.引入命名空間
using System.Runtime.InteropServices;
2.聲明(把一個Win32 API函數轉成C#函數)
//聲明INI文件的寫操作函數 WritePrivateProfileString()
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
//聲明INI文件的讀操作函數 GetPrivateProfileString()
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
3.調用
//寫一個config.ini文件
private void Save_Ini()
{
string s = System.Windows.Forms.Application.ExecutablePath;
//在當前目錄下,寫一個config.ini文件
string path = s.ToLower().Replace("mediaconvert.exe", "config.ini");
string configureNode = "DataBaseConfigure";//配置節
string key1 = "DataBase";//鍵名
string key1_Value = "DataBaseName";//鍵值
string key2 = "Server";
string key2_Value = "ServerName";
string key3 = "UserId";
string key3_Value = "1";
WritePrivateProfileString(configureNode, key1, key1_Value, path);
WritePrivateProfileString(configureNode, key2, key2_Value, path);
WritePrivateProfileString(configureNode, key3, key3_Value, path);
/*最後在exe文件的同目錄下,生成一個config.ini文件,內容應如下:
* [DataBaseConfigure]
* DataBase=DataBaseName
* Server=ServerName
* UserId=1
*/
}
//讀取config.ini文件中的配置
private void Read_Ini()
{
string s = System.Windows.Forms.Application.ExecutablePath;
//取得config.ini路徑
string path = s.ToLower().Replace("mediaconvert.exe", "config.ini");
StringBuilder str = new StringBuilder(255);
//取得配置節[DataBaseConfigure]的DataBase鍵的值
GetPrivateProfileString("DataBaseConfigure", "DataBase", "", str, 255, path);
//對話框中結果應該為 DataBase:DataBaseName
System.Windows.Forms.MessageBox.Show("DataBase:" + str.ToString());
}
C#使用系統Api,最頭疼的問題就是Api中的數據類型在C#中,如何對應的問題。
這個網站(www.pinvoke.net)列出了大多系統Api在此C#或VB.Net中的對應聲明,很詳細。