C# 使用動態(tài)庫DllImport("kernel32")讀寫ini文件的步驟
1 ini文件讀寫
kernel32.dll是Windows中非常重要的32位動態(tài)鏈接庫文件,屬于內(nèi)核級文件。它控制著系統(tǒng)的內(nèi)存管理、數(shù)據(jù)的輸入輸出操作和中斷處理,當Windows啟動時,kernel32.dll就駐留在內(nèi)存中特定的寫保護區(qū)域,使別的程序無法占用這個內(nèi)存區(qū)域。
為什么要來討論讀寫ini文件呢,難道有數(shù)據(jù)庫我們就不用讀寫文件了嗎,什么數(shù)據(jù)都從數(shù)據(jù)庫讀取出來嗎,有些東西是根據(jù)客戶的習慣,就沒必要去讀取數(shù)據(jù)庫了,或者說,比如你要做一個記住密碼的功能,如果在web端,你還可以用cookie這東西,但是要是winform呢,這時候ini文件就可以派上用場了。我們可以把用戶和密碼存在ini文件里。
注意事項:
- ini文件路徑必須完整
- 可將ini放在程序所在目錄,此時IpFileName參數(shù)為“.\FileName.ini”
2 方法
(1)GetPrivateProfileInt :使用該方法可獲取ini類型數(shù)據(jù),未獲取到時則會取設置的默認數(shù)據(jù)
UINT WINAPI GetPrivateProfileInt ( _In_LPCTSTR lpAppName, //ini文件中區(qū)塊名稱 _In_LPCTSTR lpKeyName, //鍵名 _In_INT nDefault, //默認值 _In_LPCTSTR lpFileName //ini文件路徑 );
(2)GetPrivateProfileString:使用該方法可獲取string類型數(shù)據(jù),未獲取到時則會取設置的默認數(shù)據(jù)
UINT WINAPI GetPrivateProfileString ( _In_LPCTSTR lpAppName, //ini文件中區(qū)塊名稱 _In_LPCTSTR lpKeyName, //鍵名 _In_INT nDefault, //默認值 _In_LPSTR lpReturnedString,//接受ini文件中值的CString對象,指定一個字符串緩沖區(qū),長度至少為nSize _In_DWORD nSize,//指定裝載到IpReturnedString緩沖區(qū)的最大字符數(shù) _In_LPCTSTR lpFileName //ini文件路徑 );
(3)WritePrivateProfileString:向ini中寫值,所以僅有寫入string就足夠了
BOOL WritePrivateProfileString( LPCTSTR lpAppName,//ini文件中區(qū)塊名 LPCTSTR lpKeyName,//鍵名 LPCTSTR lpString,//鍵值 LPCTSTR lpFileName );
3 例子
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows;
namespace WpfApplication3
{
/// <summary>
/// MainWindow.xaml 的交互邏輯
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
IniClass ini = new IniClass();
string IniPath = System.Windows.Forms.Application.StartupPath + "\\temp.ini";//引用里添加form才可以
string section = "BigBang";
ini.SetPath(IniPath);
ini.IniWriteValue(section, "1", "Amy");
ini.IniWriteValue(section, "2", "Sheldon");
string section1 = "Family";
ini.SetPath(IniPath);
ini.IniWriteValue(section1, "1", "Phil");
ini.IniWriteValue(section1, "2", "Jay");
string re = ini.IniReadValue(section, "1");
System.Windows.MessageBox.Show(re);
}
}
public class IniClass
{
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key,
string value, string filepath);
[DllImport("kernel32")]
private static extern long GetPrivateProfileString(string section, string key,
string def, StringBuilder retVal, int size, string filePath);
private string iniPath;
public void SetPath(string iniPath)
{
this.iniPath = iniPath;
}
public void IniWriteValue(string section, string key, string value)
{
WritePrivateProfileString(section, key, value, this.iniPath);
}
public string IniReadValue(string section, string key)
{
StringBuilder temp = new StringBuilder(500);
GetPrivateProfileString(section, key, "", temp, 500, iniPath);
return temp.ToString();
}
public bool ExistFile()
{
return File.Exists(this.iniPath);
}
}
}注意:
WPF中引入WindowsForms控件的方法為:引用添加System.Windows.Forms.Integration與System.Windows.Forms;
到此這篇關(guān)于C# 利用動態(tài)庫DllImport("kernel32")讀寫ini文件的文章就介紹到這了,更多相關(guān)C# 讀寫ini文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c#多線程網(wǎng)絡聊天程序代碼分享(服務器端和客戶端)
本程序使用VS2005 制作,程序分為三塊,XuLIeHua類庫下有我寫的把結(jié)構(gòu)序列化的類,還有就是服務器端和客戶端2013-12-12

