有一个软件,它在自己的ListView中列出了很多IP地址。我希望能够把该软件中ListView的所有内容(值)都取出来,保存成Txt。请教大侠指点思路或赐赠代码。不胜感激。

解决方案 »

  1.   

    加个循环体
    for i = 1 to ListView1.ListItems.count
     ? ListView1.ListItems(i).text
    next i
    保存就用open语句
      

  2.   

    cso(sjxsoft) 大哥,您看清楚了吗?我是要取出来别人的应用程序中的Listview的列表值。而不是我自己写的程序中有Listview。狂晕
      

  3.   

    我原来的思路是想取得那个应用程序的窗口类名和句柄,然后去Find他的Listview的句柄等等,然后取出需要的内容。结果:未遂。郁闷。
      

  4.   


    http://expert.csdn.net/Expert/topic/2728/2728920.xml?temp=.9317743
    我贴了一段有问题的代码,你可以看看,顺便也帮我找找哪里错了
      

  5.   

    rainstormmaster兄,我晕到。好长。晚上回家研究。继续求征思路或代码。
      

  6.   

    思路:
    把listview里面的值读出,然后保存到txt文件里面    strPath = GetPath(gMDBPath) & gOutFileName
        
        gFileNum = FreeFile
        Open strPath For Output As #gFileNum
        
        For i = 0 To UBound(DataString) - 1
            Print #gFileNum, DataString(i)
        Next
      

  7.   

    借贵地一用,主要是我没有分了:
    各位:
    举例来说:我从数据库中读取了10人的姓名和地址,现在我希望根据他们的姓名、地址能够在Word中自动生成信封。前提我已经有了一个信封模板,就是将客户的姓名和地址替换在模板中的相应位置。并且每个信封为一页(如果有是个客户要求生成的文档有十页)。比如格式如下:
     ---------------------------------------------------------------------
      xx省1xx市1xx
             姓名1
          
     ---------------------------------------------------------------------
      xx省2xx市2xx
             姓名2
          
     ---------------------------------------------------------------------  xx省3xx市3xx
             姓名3
          
     ---------------------------------------------------------------------
     ..........
      

  8.   

    yunok
    为何晕?
    不是你的要求?
      

  9.   

    gigilee兄,当然不是。
    您没有看到我在3楼写的什么吗??再次声明:gigilee,我要取得是第三方程序中Listview得值。不是我自己程序中的。晕死。
      

  10.   

    rainstormmaster(暴风雨 v2.0) 兄,您贴给我的答案比较符合,不过我只是Ctrl C,Ctrl V了一下,还没有完全实现要求。我修改一下再看看。非常感谢!
      

  11.   

    回复回复我的吧!我好可怜咯!
    ////////////////////
    不是沒有回復你,是因為實在沒有時間去研究word。
      

  12.   

    模块文件依然参照
    http://expert.csdn.net/Expert/topic/2728/2728920.xml?temp=.9317743
    里的,然后把里面的窗体代码部分改为下面这样就行了Option ExplicitPrivate Sub Command1_Click()
        Dim mhwnd As Long
        mhwnd = 1705642 '这是我的句柄 ^_^
        Dim i As Long, s As String
        Dim dwProcessId As Long, hProcess As Long
        Dim dwBytesRead As Long, dwBytesWrite As Long
        Dim bSuccess As Long
        Call GetWindowThreadProcessId(mhwnd, dwProcessId)
        Dim lpListItemRemote As Long, lpTextRemote As Long
        Dim nMaxLen As Long
        nMaxLen = 1023
        Dim szBuf() As Byte
        ReDim szBuf(nMaxLen)
        Dim lvItemLocal As LV_ITEM
        Dim bWriteOK As Long
        
        hProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0&, dwProcessId)
        If hProcess <> 0 Then
            lpTextRemote = VirtualAllocEx(ByVal hProcess, ByVal 0&, nMaxLen + 1, MEM_COMMIT, PAGE_READWRITE)
            lpListItemRemote = VirtualAllocEx(ByVal hProcess, ByVal 0&, Len(lvItemLocal), MEM_COMMIT, PAGE_READWRITE)
            bWriteOK = WriteProcessMemory(ByVal hProcess, ByVal lpTextRemote, szBuf(0), nMaxLen + 1, dwBytesWrite)
            
            Dim lItemCount As Long, lItemIndex As Long, lSubItemIndex As Long
            Dim asItemText() As String
            lItemCount = ListView_GetItemCount(mhwnd)
            If lItemCount > 0 Then
                ReDim asItemText(lItemCount - 1)
            End If
            lSubItemIndex = 1 '取得第几栏的文本
            For lItemIndex = 0 To lItemCount - 1
                lvItemLocal.iItem = lItemIndex
                lvItemLocal.iSubItem = lSubItemIndex - 1
                lvItemLocal.mask = LVIF_TEXT
                lvItemLocal.cchTextMax = nMaxLen
                lvItemLocal.pszText = lpTextRemote
                dwBytesWrite = 0
                bWriteOK = WriteProcessMemory(ByVal hProcess, ByVal lpListItemRemote, ByVal VarPtr(lvItemLocal), Len(lvItemLocal), dwBytesWrite)
                i = SendMessage(mhwnd, LVM_GETITEMTEXT, lItemIndex, ByVal lpListItemRemote)
                bSuccess = ReadProcessMemory(ByVal hProcess, ByVal lpTextRemote, szBuf(0), nMaxLen + 1, dwBytesRead)
                
                asItemText(lItemIndex) = StrConv(LeftB(szBuf, InStrB(szBuf, ChrB(0)) - 1), vbUnicode)
            Next
            
            Call VirtualFreeEx(hProcess, ByVal lpListItemRemote, 0, MEM_DECOMMIT)
            Call VirtualFreeEx(hProcess, ByVal lpListItemRemote, 0, MEM_DECOMMIT)
            SaveToFile asItemText()
        End If
        CloseHandle hProcess
        
    End Sub
    Sub SaveToFile(asItemText() As String)
        Dim lFreeFile As Long, i As Long
        lFreeFile = FreeFile
        
        Open "c:\ip.txt" For Output As #lFreeFile
        For i = 0 To UBound(asItemText)
            Print #lFreeFile, asItemText(i)
        Next
        Close #lFreeFile
    End Sub
    Function ListView_GetItemCount(ByVal hWnd As Long) As Long
        ListView_GetItemCount = SendMessage(hWnd, LVM_GETITEMCOUNT, 0, ByVal 0&)
    End Function
      

  13.   

    to supergreenbean(超级绿豆) :
       你的代码和我的代码主要区别在什么地方?现在我没有时间细看了,或者说说我的代码哪里有问题也可
      

  14.   

    我也写错了。今天真是睡觉睡太多了,老是要给自己打补丁,呵呵……把其中一个
    Call VirtualFreeEx(hProcess, ByVal lpListItemRemote, 0, MEM_DECOMMIT)
    改成
    Call VirtualFreeEx(hProcess, ByVal lpTextRemote, 0, MEM_DECOMMIT)