VB.net调用windows api读取INI文件

 1.INI ファイルから読み込み
 
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
'INI ファイルから読み込み
   '戻り値(文字列)を受け取るバッファを準備
   Dim strBuffer As New System.Text.StringBuilder
   strBuffer.Capacity = 256   'バッファのサイズを指定
   Dim ret As Integer
   'INIファイルよりキーの値を読み込み(整数値を取得する場合)
   myLeft = GetPrivateProfileInt("Form1Point", "Xpos", 0, iniFileName)
   myTop = GetPrivateProfileInt("Form1Point", "Ypos", 0, iniFileName)
   myWidth = GetPrivateProfileInt("Form1Size", "Width", 0, iniFileName)
   myHeight = GetPrivateProfileInt("Form1Size", "Height", 0, iniFileName)
   '文字列の値を取得する場合
   ret = GetPrivateProfileString("Form1Text", "Text", "", _
                                 strBuffer, strBuffer.Capacity, iniFileName)
   myTxt = strBuffer.ToString
   '結果を表示
   Debug.WriteLine(myLeft)     '110
   Debug.WriteLine(myTop)      '145
   Debug.WriteLine(myWidth)    '334
   Debug.WriteLine(myHeight)   '135
   Debug.WriteLine(myTxt)      'INIファイルの読み込み・書き込み(75)
End Sub

2.INI ファイルに各キーに対する値を取得して書き込み
 
Private Sub Button2_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button2.Click
'INI ファイルに各キーに対する値を取得して書き込み
   Dim ret As Integer
   '書き込みは文字列も整数値(文字列に変換して)も同じ方法で
   ret = WritePrivateProfileString("Form1Text", "Text", Me.Text.ToString, iniFileName)
   ret = WritePrivateProfileString("Form1Point", "Xpos", CStr(Me.Location.X), iniFileName)
   ret = WritePrivateProfileString("Form1Point", "Ypos", CStr(Me.Location.Y), iniFileName)
   ret = WritePrivateProfileString("Form1Size", "Width", CStr(Me.Width), iniFileName)
   ret = WritePrivateProfileString("Form1Size", "Height", CStr(Me.Height), iniFileName)

'書き込んだ結果をメモ帳で見ると下記のようになっています。
'  [Form1Text]
'  Text = INIファイルの読み込み・書き込み(75)
'  [Form1Point]
'  Xpos = 110
'  Ypos = 145
'  [Form1Size]
'  Width = 334
'  Height = 135

End Sub

読み書き、共通分(APIの宣言及び変数の宣言)

'-------- 下記の位置に名前空間を定義 ----------------------
Imports System.Runtime.InteropServices
Public Class Form1
    Inherits System.Windows.Forms.Form 
'------------------------------------------------------------
'指定のINIファイルから文字列を取得する(P989)
<DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)> _
Public   Shared   Function  GetPrivateProfileString( _
   
ByVal  lpAppName  As   String , _
   
ByVal  lpKeyName  As   String , _
   
ByVal  lpDefault  As   String , _
   
ByVal  lpReturnedString  As  System.Text.StringBuilder, _
   
ByVal  nSize  As   Integer , _
   
ByVal  lpFileName  As   String As   Integer
End   Function
'指定のINIファイルの指定のキーの文字列を変更する(P994)
<DllImport("KERNEL32.DLL")> _
Public   Shared   Function  WritePrivateProfileString( _
   
ByVal  lpAppName  As   String , _
   
ByVal  lpKeyName  As   String , _
   
ByVal  lpString  As   String , _
   
ByVal  lpFileName  As   String As   Integer
End   Function
'指定のINIファイルから整数値を取得する(P986)
<DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)> _
Public   Shared   Function  GetPrivateProfileInt( _
   
ByVal  lpAppName  As   String , _
   
ByVal  lpKeyName  As   String , _
   
ByVal  nDefault  As   Integer , _
   
ByVal  lpFileName  As   String As   Integer
End   Function


Private
 myLeft, myTop, myWidth, myHeight As Integer, myTxt As String
Private iniFileName As String
Private Sub Form1_Load(ByVal sender As System.Object, _
                       ByVal e As System.EventArgs) Handles MyBase.Load
   iniFileName = "Test.ini"  'INIファイル名(直接フルパスを指定してもOK)

   'INI ファイルをプログラムと同じフォルダに置く場合
   'ルートディレクトリーかの判断
   Dim MyPath As String = Application.StartupPath
   If MyPath.EndsWith("\") = False Then
      MyPath &= "\"
   End If
   iniFileName = MyPath & iniFileName
End Sub



 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值