мда, про копи я не в тему, думал прога своя и надо читая память получить знач. переменной )) Но прастительно, т.к. в момент ответа я в универе был на паре, спал ессно, непроснулся и полез на форум
Теперь постараюсь в тему
Коль задача вытащить текст из чужик текстовых полей, то тут вообще ненужно чтение памяти приложение... нужныж текстобокы, накой память Находил хендел окна по заголовку (FindWindow), потом перебираем дочерние хенделы (EnumСhildWindow) и смотрим чтобы класс (GetClassName) был Like "*TextBox*" или Like "*Edit*"... таким макаром найдём все хенделы текстовых полей в заданном окне, вытащить текст из них можно ф-цией GetWindowText...
Ну и канэшна теория ничто без примера
'модуль
Option Explicit
Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Public Counter As Integer
Public TextBoxTxt() As String
Dim hWin As Long, hParent As Long
Function EnumWinProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim c As Byte, t As Integer
Dim sText As String
Dim sClass As String
sClass = Space$(128)
c = GetClassName(hwnd, sClass, 128)
If c > 0 Then
sClass = Left$(sClass, c)
If sClass Like "*TextBox*" Or sClass Like "*Edit*" Then
sText = Space$(128)
t = GetWindowText(hwnd, sText, 128)
ReDim Preserve TextBoxTxt(Counter)
TextBoxTxt(Counter) = Left$(sText, t)
Counter = Counter + 1
End If
End If
EnumWinProc = 1
End Function
Public Function FindTextBoxes(hWndParent As Long) As Long
hParent = hWndParent
EnumChildWindows hParent, AddressOf EnumWinProc, 0&
FindTextBoxes = 1
End Function
'вызывать
Private Sub Command1_Click()
FindTextBoxes Me.hwnd
For i% = 0 To UBound(TextBoxTxt)
s$ = s$ & TextBoxTxt(i & vbCrLf
Next i%
MsgBox s$
End Sub
вместно Me.hwnd соответственно хендел нужного окна... массив TextBoxTxt будет содержать все значения всех текст. всех полей в заданном окне.
хух скока букфф написал...
Ответить
|