欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 使用動態(tài)庫DllImport("kernel32")讀寫ini文件的步驟

 更新時(shí)間:2023年05月19日 10:24:38   作者:未聞花開  
kernel32.dll是Windows中非常重要的32位動態(tài)鏈接庫文件,屬于內(nèi)核級文件,這篇文章主要介紹了C# 利用動態(tài)庫DllImport("kernel32")讀寫ini文件,需要的朋友可以參考下

1 ini文件讀寫

kernel32.dll是Windows中非常重要的32位動態(tài)鏈接庫文件,屬于內(nèi)核級文件。它控制著系統(tǒng)的內(nèi)存管理、數(shù)據(jù)的輸入輸出操作和中斷處理,當(dāng)Windows啟動時(shí),kernel32.dll就駐留在內(nèi)存中特定的寫保護(hù)區(qū)域,使別的程序無法占用這個(gè)內(nèi)存區(qū)域。

為什么要來討論讀寫ini文件呢,難道有數(shù)據(jù)庫我們就不用讀寫文件了嗎,什么數(shù)據(jù)都從數(shù)據(jù)庫讀取出來嗎,有些東西是根據(jù)客戶的習(xí)慣,就沒必要去讀取數(shù)據(jù)庫了,或者說,比如你要做一個(gè)記住密碼的功能,如果在web端,你還可以用cookie這東西,但是要是winform呢,這時(shí)候ini文件就可以派上用場了。我們可以把用戶和密碼存在ini文件里。

注意事項(xiàng):

  • ini文件路徑必須完整
  • 可將ini放在程序所在目錄,此時(shí)IpFileName參數(shù)為“.\FileName.ini”

2 方法

(1)GetPrivateProfileInt :使用該方法可獲取ini類型數(shù)據(jù),未獲取到時(shí)則會取設(shè)置的默認(rèn)數(shù)據(jù)

UINT WINAPI GetPrivateProfileInt
(
_In_LPCTSTR lpAppName, //ini文件中區(qū)塊名稱
_In_LPCTSTR lpKeyName, //鍵名
_In_INT nDefault, //默認(rèn)值
_In_LPCTSTR lpFileName //ini文件路徑
);

(2)GetPrivateProfileString:使用該方法可獲取string類型數(shù)據(jù),未獲取到時(shí)則會取設(shè)置的默認(rèn)數(shù)據(jù)

UINT WINAPI GetPrivateProfileString
(
_In_LPCTSTR lpAppName, //ini文件中區(qū)塊名稱
_In_LPCTSTR lpKeyName, //鍵名
_In_INT nDefault, //默認(rèn)值
_In_LPSTR lpReturnedString,//接受ini文件中值的CString對象,指定一個(gè)字符串緩沖區(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)文章

最新評論