Использование GetDlgItemText для получения текста из контрола - VB
Формулировка задачи:
Пытаюсь получить текст из блокнота.
GetDlgItemText ничего не передает в буфер. Код ошибки - 0.
Помогите разобраться.
GetDlgItem - http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
GetDlgItemText - http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Листинг программы
- Option Explicit
- Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
- Private Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
- Private Declare Function GetDlgItemText Lib "user32" Alias "GetDlgItemTextA" (ByVal hDlg As Long, ByVal nIDDlgItem As Long, lpString As String, ByVal nMaxCount As Long) As Long
- Sub main()
- Dim H_Parent As Long, H_Control As Long, H_Item As Long
- Dim lngIndex As Long
- Dim strText As String
- Dim lngTextLength As Long
- H_Parent = FindWindow("notepad", vbNullString) 'Try with FindWindow
- If H_Parent <> 0 Then
- H_Control = FindWindowEx(H_Parent, 0, "edit", vbNullString)
- If H_Control <> 0 Then
- For lngIndex = 0 To 1000000
- H_Item = GetDlgItem(H_Parent, lngIndex)
- If H_Item = H_Control Then
- strText = Space(255)
- lngTextLength = GetDlgItemText(H_Parent, lngIndex, strText, len(strText))
- Debug.Print Err.LastDllError
- If lngTextLength <> 0 Then
- Debug.Print lngIndex, H_Item, lngTextLength, strText
- End If
- End If
- Next
- End If
- End If
- End Sub
Решение задачи: «Использование GetDlgItemText для получения текста из контрола»
textual
Листинг программы
- Option Explicit
- Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
- Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
- Private Const WM_GETTEXT = &HD
- Private Const WM_GETTEXTLENGTH = &HE
- Private Sub Form_Load()
- Dim H_Parent As Long, H_Control As Long
- Dim strText As String
- Dim lngTextLength As Long
- H_Parent = FindWindow("notepad", vbNullString) 'Try with FindWindow
- If H_Parent <> 0 Then
- H_Control = FindWindowEx(H_Parent, 0, "edit", vbNullString)
- If H_Control <> 0 Then
- lngTextLength = SendMessage(H_Control, WM_GETTEXTLENGTH, 0, ByVal 0&)
- strText = Space(lngTextLength + 1)
- SendMessage H_Control, WM_GETTEXT, lngTextLength + 1, ByVal strText
- strText = Left(strText, lngTextLength)
- End If
- End If
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д