Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577

Как найти все окна приложения, в том числе вложенные

29.08.2013, 08:24. Показов 3522. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тут такой вопрос по этой теме Найти внутренне окна/контролы приложения
Нужные мне окна находятся аж на 3 уровне вложенности относительно родительского окна приложения,
соответственно мне пришлось писать аж целых 3 функции поиск детей, а это насколько я знаю нехорошо.
можно как нибудь такое в 1 функции организовать?)
чёт типа:
Visual Basic
1
2
3
4
5
6
7
8
9
10
глв окно
    дочернее
          дети
              дети детей
              дети детей
              дети детей
          дети
              дети детей
              дети детей
              дети детей
?)))

 Комментарий модератора 
Цитата Сообщение от Правила форума
4. На каждый вопрос создавайте по одной теме - это помогает избежать путаницы в ответах и облегчает поиск.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.08.2013, 08:24
Ответы с готовыми решениями:

Папки, в том числе и вложенные
Есть Вордовский файл, есть его полное место расположение, например L:\Рабочая папка\Нужное\SO4\Лица женского пола\А Как узнать при...

Строка содержит арифметическое выражение, в котором используются круглые скобки, в том числе вложенные. Проверить, прави
Строка содержит арифметическое выражение, в котором используются круглые скобки, в том числе вложенные. Проверить, правильно ли в нем рас-...

Найти приближенно все (в том числе комплексные) корни уравнения f(x)=0 с заданной точностью (метод Ньютона)
Помогите решить задачу. Найти приближенно все (в том числе комплексные) корни уравнения f(x)={x}^{4}-2.7{x}^{3}+3 с точностью...

30
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
31.08.2013, 12:18
Студворк — интернет-сервис помощи студентам
Я вроде тоже нашаманил: изменения в процедуре FindChild
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Sub FindChild(nextwin&, m$)
Do
   If nextwin <> 0 Then
      List1.AddItem m & Str(nextwin) & " " & FindCaption(nextwin)
         If GetWindow(nextwin, GW_CHILD) > 0 Then 'если у ЭТОГО дочернего тоже есть дети, то прибавляем уровень вложения
             m = m & " ---"
             FindChild GetWindow(nextwin, GW_CHILD), m
         If GetWindow(nextwin, GW_HWNDLAST) > 0 Then ' если ЭТОТ дитя последний, то убавляем.................
         If Len(m) > 4 Then m = Left(m, Len(m) - 4)
         End If
         End If
    End If: nextwin = GetWindow(nextwin, GW_HWNDNEXT)
Loop While nextwin <> 0
End Sub
И видим то, что надо
Изображения
 
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
31.08.2013, 12:28  [ТС]
АвирТракМенеджер больше находит)

Ща пытаюсь так же замутить)
Ещё бы кнопку спойлер научится делать чтоб все дети под ним прятались)
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
31.08.2013, 12:43
Цитата Сообщение от radlif Посмотреть сообщение
АвирТракМенеджер больше находит)
Вложение 303376
Ща пытаюсь так же замутить)
Ещё бы кнопку спойлер научится делать чтоб все дети под ним прятались)
Ну ТАКОЕ уж не в Листе (наверно) надо делать Сейчас "старшие" что-нибудь подскажут...
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
31.08.2013, 12:52  [ТС]
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Const TH32CS_SNAPPROCESS As Long = 2&
Const MAX_PATH As Integer = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CreateToolhelpSnapshot Lib "Kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib "Kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "Kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
 
Private Sub Command1_Click()
List1.Clear
Dim hSnapShot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapShot = 0 Then
Exit Sub
End If
uProcess.dwSize = Len(uProcess)
r = ProcessFirst(hSnapShot, uProcess)
Do While r
List1.AddItem uProcess.szExeFile + "  " + Str(uProcess.th32ProcessID)
r = ProcessNext(hSnapShot, uProcess)
Loop
Call CloseHandle(hSnapShot)
End Sub

На форму листбокс и кнопку)

Идея такая кликаем процесс и во 2 листе все его окошки)
Это не сложно, но проблема в другом, мы опять получим все окна связанные с заголовком, а не
с процессом.
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
31.08.2013, 16:40
Вот такую систему ПсевдоСпойлеров сделал в Листе:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long ' âîçâðàùàåò äåñêðèïòîð îêíà, ñâÿçàííîãî ñ äàííûì îêíîì. Èìåþòñÿ ââèäó îòíîøåíèÿ ìåæäó äî÷åðíå - ðîäèòåëüñêèìè îêíàìè èëè îòíîøåíèÿ ìåæäó äî÷åðíèìè îêíàìè ñàìîãî ðîäèòåëüñêîãî îêíà
Const GW_HWNDNEXT = 2: Const GW_CHILD = 5: Const GW_HWNDLAST = 1
Private Declare Function GetDesktopWindow Lib "user32" () 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 GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) 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 Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
Dim List0(1000) As String, NomZap%, UrVl(1000) As Byte, NomVl%, Otkr(1000) As Boolean, Visi(1000) As Boolean
'-----------------------------------------
Private Sub Form_Load()
Form1.Show: DoEvents
FindWin GetWindow(GetDesktopWindow(), GW_CHILD)
 
NomZap = NomZap - 1
For i = 0 To NomZap 'âûâîäèì â Ëèñò ïîëíîñòüþ çàêðûòûé ñïèñîê
m = IIf(UrVl(i) < UrVl(i + 1), "+", "")
If UrVl(i) = 1 Then
List1.AddItem m & List0(i)
Visi(i) = True
End If
Next i
End Sub
 
Public Sub FindWin(hwnd&)
If hwnd <> 0 Then
   NomVl = 1
   'List1.AddItem Str(hwnd) & " " & FindCaption(hwnd) '+ Str(NomVl)
   List0(NomZap) = Str(hwnd) & " " & FindCaption(hwnd) 'çàïîìèíàåì ñòðîêó â List0()
   UrVl(NomZap) = 1: NomZap = NomZap + 1: NomVl = 2:
   FindChild GetWindow(hwnd, GW_CHILD), " ---"
   FindWin GetWindow(hwnd, GW_HWNDNEXT)
End If
End Sub
 
Public Sub FindChild(nextwin&, m$)
Do
   If nextwin <> 0 Then
      'List1.AddItem m & Str(nextwin) & " " & FindCaption(nextwin) '+ Str(NomVl)
      List0(NomZap) = Str(nextwin) & " " & FindCaption(nextwin) 'çàïîìèíàåì ñòðîêó â List0()
      UrVl(NomZap) = NomVl: NomZap = NomZap + 1:
         If GetWindow(nextwin, GW_CHILD) > 0 Then 'åñëè ó ÝÒÎÃÎ äî÷åðíåãî òîæå åñòü äåòè, òî ïðèáàâëÿåì óðîâåíü âëîæåíèÿ
             m = m & " ---": NomVl = NomVl + 1
             FindChild GetWindow(nextwin, GW_CHILD), m
         If GetWindow(nextwin, GW_HWNDLAST) > 0 Then ' åñëè ÝÒÎÒ äèòÿ ïîñëåäíèé, òî óáàâëÿåì.................
         m = Left(m, Len(m) - 4): NomVl = NomVl - 1
         End If
         End If
    End If: nextwin = GetWindow(nextwin, GW_HWNDNEXT)
Loop While nextwin <> 0
End Sub
 
Function FindCaption(hwnd&) As String
Dim strCaption$
dummy& = GetWindowTextLength(hwnd)
  If dummy <> 0 Then
       strCaption = String(dummy + 1, " ")
       dummy = GetWindowText(hwnd, strCaption, dummy + 1)
       sSave = strCaption: If Asc(Right(strCaption, 1)) = 0 Then sSave = Left(strCaption, Len(strCaption) - 1) 'îòñåêàåì êîíå÷íûé "êâàäðàò"
       FindCaption = sSave:
  End If:
End Function
 
Private Sub list1_Click()
If Left(LTrim(List1.List(List1.ListIndex)), 1) = "+" Then
For i = 0 To NomZap
If Mid(LTrim(List1.List(List1.ListIndex)), 2) = List0(i) Then
Otkr(i) = True: a = UrVl(i)
 
For j = i + 1 To NomZap
If UrVl(j) = a + 1 Then
Visi(j) = True
Else: Exit For
End If
Next j:
 
RefreshList
Exit For
End If
Next i:
End If
 
If Left(LTrim(List1.List(List1.ListIndex)), 1) = "-" Then
For i = 0 To NomZap
If Mid(LTrim(List1.List(List1.ListIndex)), 2) = List0(i) Then
Otkr(i) = False: a = UrVl(i)
 
For j = i + 1 To NomZap
If UrVl(j) > a Then
Visi(j) = False
Otkr(j) = False
Else: Exit For
End If
Next j:
 
RefreshList
Exit For
End If
Next i:
End If
 
End Sub
 
Public Sub RefreshList()
List1.Clear
For i = 0 To NomZap 'ïåðåïèñûâàåì Ëèñò
m = IIf(UrVl(i) < UrVl(i + 1), "+", "")
If Otkr(i) = True Then m = "-"
m1 = Space((UrVl(i) - 1) * 5)
If Visi(i) = True Then List1.AddItem m1 & m & List0(i)
Next i
End Sub
Ещё надо бы доделать (если это возможно в Листе):
1) Чтоб строки не меняли цвет при клике (а то рябит в глазах от ИХ мелькания)
2) Чтоб Лист после Рефреша оставался в том же положении (а то перепрыгивает в самый верх)
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
31.08.2013, 21:52
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Кликните здесь для просмотра всего текста

Модуль
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Option Explicit
 
Declare Function EnumThreadWindows Lib "user32" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As Long) As Long
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal Hwnd As Long, lpdwProcessId As Long) As Long
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal Hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal Hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal Hwnd As Long) As Long
Declare Function GetParent Lib "user32" (ByVal Hwnd As Long) As Long
 
 
Function EnumChildProc(ByVal lhWnd As Long, ByVal lParam As Long) As Long
    Dim txt As String, l As Long, pnt As Long
    
    l = GetWindowTextLength(lhWnd) + 1
    txt = Space(l)
    GetWindowText lhWnd, txt, l
    txt = Left$(txt, l)
    
    If l = 1 Then txt = vbNullString
    
    pnt = GetParent(lhWnd)
    
    Form1.tvwWnd.Nodes.Add "wnd" & CStr(pnt), tvwChild, "wnd" & CStr(lhWnd), ClassName(lhWnd) & ": " & Chr$(34) & txt & Chr$(34)
    
    EnumChildProc = True
End Function
Function EnumWindowProc(ByVal lhWnd As Long, ByVal lParam As Long) As Long
    Dim txt As String, l As Long, pnt As Long
    
    l = GetWindowTextLength(lhWnd) + 1
    txt = Space(l)
    GetWindowText lhWnd, txt, l
    txt = Left$(txt, l)
   
    Form1.tvwWnd.Nodes.Add , tvwChild, "wnd" & CStr(lhWnd), ClassName(lhWnd) & ": " & Chr$(34) & txt & Chr$(34)
    EnumChildWindows lhWnd, AddressOf EnumChildProc, 0
    
    EnumWindowProc = True
End Function
Private Function ClassName(Hwnd As Long) As String
    Dim l As Long
    ClassName = Space$(255)
    l = GetClassName(Hwnd, ClassName, 254)
    ClassName = Left(ClassName, l)
End Function
Форма
Visual Basic
1
2
3
4
5
Option Explicit
 
Private Sub Form_Load()
    EnumChildWindows 0, AddressOf EnumWindowProc, 0
End Sub

Для перебора из потока использовать EnumThreadWindows
Миниатюры
Как найти все окна приложения, в том числе вложенные  
Вложения
Тип файла: rar EnumWindowThread.rar (1.8 Кб, 20 просмотров)
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
31.08.2013, 22:04  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Кликните здесь для просмотра всего текста

Модуль
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Option Explicit
 
Declare Function EnumThreadWindows Lib "user32" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As Long) As Long
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal Hwnd As Long, lpdwProcessId As Long) As Long
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal Hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal Hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal Hwnd As Long) As Long
Declare Function GetParent Lib "user32" (ByVal Hwnd As Long) As Long
 
 
Function EnumChildProc(ByVal lhWnd As Long, ByVal lParam As Long) As Long
    Dim txt As String, l As Long, pnt As Long
    
    l = GetWindowTextLength(lhWnd) + 1
    txt = Space(l)
    GetWindowText lhWnd, txt, l
    txt = Left$(txt, l)
    
    If l = 1 Then txt = vbNullString
    
    pnt = GetParent(lhWnd)
    
    Form1.tvwWnd.Nodes.Add "wnd" & CStr(pnt), tvwChild, "wnd" & CStr(lhWnd), ClassName(lhWnd) & ": " & Chr$(34) & txt & Chr$(34)
    
    EnumChildProc = True
End Function
Function EnumWindowProc(ByVal lhWnd As Long, ByVal lParam As Long) As Long
    Dim txt As String, l As Long, pnt As Long
    
    l = GetWindowTextLength(lhWnd) + 1
    txt = Space(l)
    GetWindowText lhWnd, txt, l
    txt = Left$(txt, l)
   
    Form1.tvwWnd.Nodes.Add , tvwChild, "wnd" & CStr(lhWnd), ClassName(lhWnd) & ": " & Chr$(34) & txt & Chr$(34)
    EnumChildWindows lhWnd, AddressOf EnumChildProc, 0
    
    EnumWindowProc = True
End Function
Private Function ClassName(Hwnd As Long) As String
    Dim l As Long
    ClassName = Space$(255)
    l = GetClassName(Hwnd, ClassName, 254)
    ClassName = Left(ClassName, l)
End Function
Форма
Visual Basic
1
2
3
4
5
Option Explicit
 
Private Sub Form_Load()
    EnumChildWindows 0, AddressOf EnumWindowProc, 0
End Sub

Для перебора из потока использовать EnumThreadWindows
Ругается на txt = Space(l)
Пишет нет места для строки О_о хотя у тебя как вижу всё норм
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
31.08.2013, 22:32
Цитата Сообщение от radlif Посмотреть сообщение
Ругается на txt = Space(l)
Пишет нет места для строки О_о хотя у тебя как вижу всё норм
Посмотри, чему у тебя равно l. Попробуй вместо l написать 255 например
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
01.09.2013, 11:19  [ТС]
Спасибо)
Мне этот пример на неделю работы задаст (разобрать по полочкам, изучить, в самодельную справку частично перекинуть)

Добавлено через 12 часов 36 минут
Если не сложно помогите с TreeView, уже весь мозг поломал
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) 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 Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
Const GW_HWNDNEXT = 2:
Const GW_CHILD = 5
Const GW_OWNER = 4
Const GW_HWNDFIRST = 0
 
Dim buff$
Dim hwnds As Long 'õåíäåë îêíà
Dim kontrq&
Dim Shet&
Dim Sstr$
Dim zzc$
 
Private Sub Form_Load()
    Shet = 0
    hwnds = FindWindow(vbNullString, "ÌåãàÔîí Èíòåðíåò")
    zzc = "#" & Str(hwnds) 'õåíäåë ñòðî÷íî
    TreeView1.Nodes.Add , , zzc, zzc & "  " & Hstr(hwnds) 'Íóëåâîå îêíî ñïèñêà
    Call Ñêàíîêîí(hwnds, zzc)
End Sub
 
Private Function Hstr(HenTek) As String
    If HenTek <> 0 Then
        Dim buffz As String
        buffz = Space(50)
        SendMessage HenTek, &HD, 40, ByVal buffz
        buffz = Trim(buffz)
        buffz = Left(buffz, Len(buffz) - 1)
        Hstr = buffz
    End If
End Function
 
 
Private Function Ñêàíîêîí(hwnds, zzc)
    Dim zzxx$
    Dim HenTek As Long 'ïîëó÷àåì äåñêðèïòîð ñëåäóþùåãî îêíà â Z-order
    HenTek = GetWindow(hwnds, GW_CHILD)  'Ïîëó÷àåì äåñêðèïòîð äî÷åðíåãî îêíà
    zzxx = "#" & CStr(hwnds) ' îïðåäåëÿåì ñëåäóåùåå äî÷åðíåå îêíî
    'TreeView1.Nodes.Add zzc, tvwChild, zzxx, zzc & Hstr(HenTek)
    
    TreeView1.Nodes.Add zzc, tvwChild, zzxx, zzxx & Hstr(HenTek)
    Do
        If HenTek <> 0 Then   'íå èñïîëüçóéòå ôëàæêè åñëè òàêîãî îêíà íå ñóùåñòâóåò
            Shet = Shet + 1
            List1.AddItem Shet & Sstr & "  " & Str(HenTek) + "   " + Hstr(HenTek)
            'Ïðîâåðêà íà äåòåé-------------------------------------------
            kontrq = GetWindow(HenTek, GW_CHILD) 'Ïîëó÷àåì äåñêðèïòîð äî÷åðíåãî îêíà
            If kontrq <> 0 Then 'åñëè äèòÿ íåòó ïðîïóñêàåì ýòîò øàã
                Sstr = Sstr + Space(8)
                hwnds = HenTek 'ïåðåäà¸ì õåíäë ïåðåìåííîé ôóíêöèè
                Call Ñêàíîêîí(HenTek, zzc)
                Sstr = Right(Sstr, 8)
            End If
            '------------------------------------------------------------
        End If
        HenTek = GetWindow(HenTek, GW_HWNDNEXT) 'Ïîëó÷àåì õåíäåë ñëåäóþùåãî îêíà
    Loop While HenTek <> 0
End Function


Любая попытка построить древовидный список приводить либо к ошибке что неверный ключ,
либо к списку с 1 уровнем вложенности.
По примеру с этого сайта всё работает в чистом проекте.
http://www.xserver.ru/computer/langprogr/basic/21/

Но при попытке создать дочернюю вкладку таким образом,
всё время одни ошибки лезут, уже часов 5 убил....
Visual Basic
1
2
TreeView1.Nodes.Add "ru", tvwChild, "narod", "narod"
TreeView1.Nodes.Add "narod", tvwChild, "www", "www"
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
01.09.2013, 12:08
Цитата Сообщение от radlif Посмотреть сообщение
либо к списку с 1 уровнем вложенности
Конечно так и будет, т.к. у Вас переменная-ключ zzc нигде не изменяется
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
01.09.2013, 12:12  [ТС]
Уже нашёл в чём причина, ключ надо объявлять только в том случае если у дочерней вкладки появится ещё одна.
Просто норм справки в нэте нету, самому понять сразу не всегда выходит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.09.2013, 12:12

Как сделать так, чтобы все окна Проводника открывались не каскадом, а в одном и том же месте?
Всем привет. Есть в вин7 одна маленькая, но вредная особенность, которая лично меня мучает уже очень давно. При открытии новых окон...

Определите все (в том числе комплексные) корни уравнения
Определите все(и в том числе комплексные) корни уравнения как определить комплексние корни ??

Как запретить сворачивание окна приложения при нажатии кнопки "свернуть все окна"
Что происходит при нажатии этой кнопки в плане сообщениий, и как их перехватить и игнорировать,что бы окно не сворачивалось? Чем это...

Как запустить экзешник, в том числе и на другом ПК
Можно ли запустить экзешник приложения, написанное на windows form, без исходного кода? тоесть скопировал экзешник куда нибудь на флешку и,...

Почему программа не выводит сообщения о том,что той или иной цифры в числе нет,если в ней всё прописано?
int a, b, k, i,b1; int n; i = 0; b1 = 0; Console.Write(&quot;Введите натуральное число: &quot;); n =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru