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

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

 更新時間: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ù)的輸入輸出操作和中斷處理,當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# Socket連接請求超時機制實現(xiàn)代碼分享

    C# Socket連接請求超時機制實現(xiàn)代碼分享

    這篇文章主要介紹了C# Socket連接請求超時機制實現(xiàn),下面提供代碼分享,大家可以參考使用
    2013-12-12
  • 詳解如何使用C#獲取計算機信息

    詳解如何使用C#獲取計算機信息

    這篇文章主要為大家詳細介紹了如何使用C#實現(xiàn)獲取計算機信息,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-10-10
  • 驗證本機的excel版本的C#代碼

    驗證本機的excel版本的C#代碼

    安裝的excel的版本,0為沒有安裝,大于1說明安裝了多個. 需要的朋友可以參考下。
    2011-08-08
  • C#備份文件夾的兩種方法

    C#備份文件夾的兩種方法

    在C#編程中,文件夾操作是不可或缺的一部分,它允許開發(fā)者創(chuàng)建、刪除、移動和管理文件系統(tǒng)中的目錄結(jié)構(gòu),本文給大家介紹了C#備份文件夾的兩種方法,需要的朋友可以參考下
    2024-12-12
  • C#求n個數(shù)中最大值和最小值的方法

    C#求n個數(shù)中最大值和最小值的方法

    這篇文章主要介紹了C#求n個數(shù)中最大值和最小值的方法,涉及C#中max及min方法的使用技巧,需要的朋友可以參考下
    2015-05-05
  • WinForm中的登錄實現(xiàn)

    WinForm中的登錄實現(xiàn)

    在一般的C/S系統(tǒng)中,登錄功能基本上是必備功能,總結(jié)了三種C# Winform登錄功能的實現(xiàn)方法
    2012-11-11
  • c#.net 常用函數(shù)和方法集

    c#.net 常用函數(shù)和方法集

    c#.net 常用函數(shù)和方法集 ,學習的朋友可以參考下。
    2009-07-07
  • C#集合之隊列的用法

    C#集合之隊列的用法

    這篇文章介紹了C#集合之隊列的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#多線程實現(xiàn)異步接口

    C#多線程實現(xiàn)異步接口

    這篇文章介紹了C#多線程實現(xiàn)異步接口的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • c#多線程網(wǎng)絡聊天程序代碼分享(服務器端和客戶端)

    c#多線程網(wǎng)絡聊天程序代碼分享(服務器端和客戶端)

    本程序使用VS2005 制作,程序分為三塊,XuLIeHua類庫下有我寫的把結(jié)構(gòu)序列化的類,還有就是服務器端和客戶端
    2013-12-12

最新評論