1、
一个ini 文件                                c*_*d
[a]         <-   怎么给它改名字啊,在不丢失b、c数据的情况下。
b=xxx
c=xxx
-----------------
[a]         <-    怎么删除它,b、c内容也删除。
b=xxx
c=xxx
-----------------
[w]
s=a          <-修改它 并且[a] 也跟着改变
[a]
b=xxx
c=xxx
2、
有一个程序,如何获得它的句柄,并向其发送一个刷新的消息阿?
XXXXXXXXXX各位 在下谢了!FEN 不够可续!··XXXXXXXXXX

解决方案 »

  1.   

    1、改名:先保存值,再删除,再添加新的键名与旧的值。
     删除主键:WritePrivateProfileString(主键名, 0&, "", INI文件名)
    [a] 也跟着改变当然是由你用代码来改变了,这不跟你修改是一样的吗?只不过多修改了几个地方。它可不会自动变的。
    2、我不知道什么是程序的句柄?主窗口的句柄?
    如果是主窗口的句柄:通过API函数FindWindowEx获得。
      

  2.   

    汗一个,现在在网吧,没代码
    写ini就那几个api函数,查一下就知道,不难的
      

  3.   

    参考:Option Explicit
    '<-- Used for Functions ReadINI & WriteINI
     #If Win16 Then   Declare Function WritePrivateProfileString Lib "Kernel" (ByVal AppName As String, ByVal KeyName As String, ByVal NewString As String, ByVal filename As String) As Integer
       Declare Function GetPrivateProfileString Lib "Kernel" Alias "GetPrivateProfilestring" (ByVal AppName As String, ByVal KeyName As Any, ByVal Default As String, ByVal ReturnedString As String, ByVal MAXSIZE As Integer, ByVal filename As String) As Integer
       
       #Else
        
       Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
       Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As Any, ByVal lpFileName As String) As Long
       #End If
      

  4.   

    http://www.pconline.com.cn/pcedu/empolder/gj/vb/0403/330764.html
      

  5.   

    这个拜托了   T_T  楼上各位看官的似乎……一个ini 文件                                c*_*d
    [a]         <-   怎么给它改名字啊,在不丢失b、c数据的情况下。
    b=xxx
    c=xxx
    -----------------
      

  6.   

    //怎么给它改名字啊,在不丢失b、c数据的情况下读出文件到字串后,用replace函数替换"[a]",然后写回文件
      

  7.   

    rainstormmaster 您的意思是抛开不用api改用文件读写的方式〉?
      

  8.   

    //rainstormmaster 您的意思是抛开不用api改用文件读写的方式〉?
    是的,因为没有给小节重命名的api
      

  9.   

    直接操作文本文件怎样呢?(我对所有的INI文件都这么操作的,不比API函数慢)
      

  10.   

    想要灵活处理,就是文件操作的方式吧有一个程序,如何获得它的句柄,并向其发送一个刷新的消息阿?
    使用FindWindow
    如找到计算器的句柄
     h1 = FindWindow(vbNullString, "计算器") '计算器的句柄
      

  11.   

    你有具体的东西吗?
    比如要求操作某个INI文件,以及具体要实现的要求,我可以帮你写好。
      

  12.   

    //有一个程序,如何获得它的句柄,并向其发送一个刷新的消息阿用RedrawWindow试试:
    【VB声明】
      Private Declare Function RedrawWindow Lib "user32" Alias "RedrawWindow" (ByVal hwnd As Long, lprcUpdate As RECT, ByVal hrgnUpdate As Long, ByVal fuRedraw As Long) As Long【说明】
      根据fuRedraw旗标的设置,重画全部或部分窗口 【返回值】
      Long,非零表示成功,零表示失败。会设置GetLastError 【备注】
      如针对桌面窗口应用这个函数,则应用程序必须用RDW_ERASE旗标重画桌面【参数表】
      hwnd -----------  Long,要重画的窗口的句柄。零表示更新桌面窗口  lprcUpdate -----  RECT,窗口中需要重画的一个矩形区域  hrgnUpdate -----  Long,一个“区”的句柄,这个区描述了要重画的窗口区域。“区”:Region  fuRedraw -------  Long,规定具体重画操作的旗标。下列常数可组合使用,从而进行复杂的重画行动
      RDW_ERASE
      重画前,先清除重画区域的背景。也必须指定RDW_INVALIDATE
      RDW_FRAME
      如非客户区包含在重画区域中,则对非客户区进行更新。也必须指定RDW_INVALIDATE
      RDW_INTERNALPAINT
      即使窗口并非无效,也向其投递一条WM_PAINT消息
      RDW_INVALIDATE
      禁用(屏蔽)重画区域
      RDW_NOERASE
      禁止删除重画区域的背景
      RDW_NOFRAME
      禁止非客户区域重画(如果它是重画区域的一部分)。也必须指定RDW_VALIDATE
      RDW_NOINTERNALPAINT
      禁止内部生成或由这个函数生成的任何待决WM_PAINT消息。针对无效区域,仍会生成WM_PAINT消息
      RDW_VALIDATE
      检验重画区域
      RDW_ERASENOW
      立即删除指定的重画区域
      RDW_UPDATENOW
      立即更新指定的重画区域
      RDW_ALLCHILDREN
      重画操作包括子窗口(前提是它们存在于重画区域)
      RDW_NOCHILDREN
      重画操作排除子窗口(前提是它们存在于重画区域)
      

  13.   

    等等,我觉得有个问题应该说明一下。
    一般情况下我们使用ini文件是记录一些特定的配置信息,比如:
    [serverinfo]
    ip=...
    port=...在这种情况下,一般组名(serverinfo)和项名(ip、port)等是不会变的,我们只是记录它们的值而以。而楼主现在要对组名和项名都要编辑用INI就不合适了,可以考虑用XML或自定义格式的二进制文件等。
      

  14.   

    1、改名:先保存值,再删除,再添加新的键名与旧的值。
     删除主键:WritePrivateProfileString(主键名, 0&, "", INI文件名)
    [a] 也跟着改变当然是由你用代码来改变了,这不跟你修改是一样的吗?只不过多修改了几个地方。它可不会自动变的。
    2、我不知道什么是程序的句柄?主窗口的句柄?
    如果是主窗口的句柄:通过API函数FindWindowEx获得
      

  15.   

    to:  sinom(毛毛.小狮子&gt;&gt;苦学ORACLE) 
    规定要用.ini的 没办法啊,当时我提议用注册表结果……
      

  16.   

    那自己用文件流的方法写一个项目通用的INI操作类吧
      

  17.   

    我遇到过类似的问题。我用的办法“很好”,就是……读取全部INI里的数据,然后KILL那个INI文件,然后写进去……俺就这水平了-_-#