Это как? Насколько я понял ты говоришь про два файла, в N-ной сторчке первого храниться значение, а в N-ной второго храниться описание, так?Описание хранится в другом блокноте
Или все-таки работа не с файлами, а именно с блокнотом?выводится содержимое блокнота
Twister писал(а):Это как? Насколько я понял ты говоришь про два файла, в N-ной сторчке первого храниться значение, а в N-ной второго храниться описание, так?Описание хранится в другом блокноте
Тебе нужно считывать строчки из второго файла в массив, а при клике в ListBoxe выводить соответствующий элемент массива на Label...
Option Explicit
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Const WM_GETTEXT As Long = &HD
Const WM_GETTEXTLENGTH As Long = &HE
Const GW_CHILD As Long = 5
Const GW_HWNDNEXT As Long = 2
Dim bArr() As Byte, Strings() As String
Private Sub Command1_Click()
Dim hW As Long, i, i1, j As Integer
hW = Val(txtHandle)
hW = GetWindow(hW, GW_CHILD)
hW = GetWindow(hW, GW_HWNDNEXT)
ReDim bArr(SendMessage(hW, WM_GETTEXTLENGTH, 0, 0))
SendMessage hW, WM_GETTEXT, UBound(bArr) + 1, bArr(0)
ReDim Strings(1 To 1)
j = 0
For i = 0 To UBound(bArr)
If bArr(i) = 13 Or bArr(i) = 0 Then
ReDim Preserve Strings(1 To UBound(Strings) + 1)
For i1 = j To i - 1
Strings(UBound(Strings)) = Strings(UBound(Strings)) + Chr(bArr(i1))
Next
j = i + 2
End If
Next
'Вывод результата
For i = 1 To UBound(Strings())
MsgBox Strings(i)
Next
End Sub
Option Explicit
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Const WM_GETTEXT As Long = &HD
Const WM_GETTEXTLENGTH As Long = &HE
Const GW_CHILD As Long = 5
Const GW_HWNDNEXT As Long = 2
Dim bArr() As Byte, Strings() As String
Private Sub Command1_Click()
Dim hW As Long, i, i1, j, j1 As Integer, lpClassName As String * 256
hW = Val(txtHandle)
hW = GetWindow(hW, GW_CHILD)
GetClassName hW, lpClassName, 256
If Mid(lpClassName, 1, 4) <> "Edit" Then hW = GetWindow(hW, GW_HWNDNEXT)
ReDim bArr(SendMessage(hW, WM_GETTEXTLENGTH, 0, 0))
SendMessage hW, WM_GETTEXT, UBound(bArr) + 1, bArr(0)
If UBound(bArr) = 0 Then Exit Sub
ReDim Strings(1 To 1)
j = 0
For i = 0 To UBound(bArr)
If bArr(i) = 13 Or bArr(i) = 0 Then
For i1 = j To i - 1
j1 = UBound(Strings)
Strings(j1) = Strings(j1) + Chr(bArr(i1))
Next
If Not i = UBound(bArr) Then ReDim Preserve Strings(1 To UBound(Strings) + 1)
j = i + 2
End If
Next
'Вывод результата
For i = 1 To UBound(Strings())
MsgBox Strings(i)
Next
End Sub
Гм... все прекрасно работает, я тестировал не раз. Скорее всего ты задаешь не верный хэндл. Повторяю - необходимо задавать хэндл главного окна Блокнота - другие текстовые редакторы имеют другую структуру дочерних окон. Можешь скачать мой WnD Viewerи посмотреть - Блокнот должен иметь всего два дочерних окна, Edit и StatusBar (точное название не помню)...ICQ писал(а):Привет Максим!
слухай, код, который ты дал. не пашет вообще. может чего-то не догоняю. сможешь добавить к нему комменты? просто он ничего не делает... ну саавсем ничего...((
Сейчас этот форум просматривают: SemrushBot и гости: 60