Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Зачение из памяти Добавлено: 11.05.06 09:56  

Автор вопроса:  AsHeS | ICQ: 229759992 

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 16
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #16 Добавлено: 11.05.06 18:22
мда, про копи я не в тему, думал прога своя и надо читая память получить знач. переменной :))) Но прастительно, т.к. в момент ответа я в универе был на паре, спал ессно, непроснулся и полез на форум :)

Теперь постараюсь в тему :)
Коль задача вытащить текст из чужик текстовых полей, то тут вообще ненужно чтение памяти приложение... нужныж текстобокы, накой память :) Находил хендел окна по заголовку (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 будет содержать все значения всех текст. всех полей в заданном окне.

хух :) скока букфф написал...

Ответить

Номер ответа: 17
Автор ответа:
 Эндрю



ICQ: 303-304-826 

Вопросов: 24
Ответов: 103
 Web-сайт: www.пока_нет.ru
 Профиль | | #17
Добавлено: 12.05.06 00:13
По посту № 4: этот пример с сайта chemax, и его автор уверен что пример работает, но оказывается не всё так просто.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам