使用api获取文件框里的内容!

本操作在已知文本框hwnd的前提下。

 

1.首先声明api,主要用到GetWindowTextLength获取文本的长度,GetWindowText获取文本的内容

 

<System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)> _
Public Structure HWND__

    
'''int
    Public unused As Integer
End Structure

Partial Public Class NativeMethods

    
'''Return Type: int
    
'''hWnd: HWND->HWND__*
    <System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint:="GetWindowTextLengthA")> _
    
Public Shared Function GetWindowTextLengthA(<System.Runtime.InteropServices.InAttribute()> ByVal hWnd As System.IntPtr) As Integer
    
End Function

    
'''Return Type: int
    
'''hWnd: HWND->HWND__*
    
'''lpString: LPSTR->CHAR*
    
'''nMaxCount: int
    <System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint:="GetWindowTextA")> _
    
Public Shared Function GetWindowTextA(<System.Runtime.InteropServices.InAttribute()> ByVal hWnd As System.IntPtr, <System.Runtime.InteropServices.OutAttribute(), System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)> ByVal lpString As System.Text.StringBuilder, ByVal nMaxCount As IntegerAs Integer
    
End Function
End Class

 

 

声明api可以用相应的工具生成,我使用的是winsiggen.exe
2.传入句柄获取控件的内容
     Dim Tlong As Integer, s As New System.Text.StringBuilder

        Tlong 
= NativeMethods.GetWindowTextLengthA(Me.TextBox1.Handle) + 1

        NativeMethods.GetWindowTextA(
Me.TextBox1.Handle, s, Tlong)

        
MsgBox(s.ToString)

 

如何获取hwnd可以使用FindWindowEx, GetClientRect获取指定坐标的的hwnd

posted on 2009-11-24 16:53  zqonline  阅读(472)  评论(0编辑  收藏  举报

导航