Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/140: Рейтинг темы: голосов - 140, средняя оценка - 4.53
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16

Тестирование полезных кодов и примеров

15.10.2012, 00:56. Показов 29809. Ответов 301
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если Ваш код из темы Готовые решения и полезные коды на Visual Basic 6.0

неправильно собран или неработоспособен, он будет перенесен сюда.

Для доведения кода в рабочее состояние в порядке обсуждения создайте новую тему
2
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2012, 00:56
Ответы с готовыми решениями:

Тестирование полезных скриптов
В этой теме нужно писать: - о багах в выложенных полезных скриптах (закрепленная тема); - ошибках в кодах, на которые ведут ссылки...

Программное тестирование кодов
Доброго! Часто возникает потребность протестить некоторую программку, обычно небольшую. Т.к. в большинстве случаев это надо сделать быстро,...

Cумма кодов четных символов равна сумме кодов нечетных
Даны два поля edit1 и edit2. и кнопка button1. Нужно чтобы при нажатии на кнопку, проверялось: сумма кодов четных символов была равна сумме...

301
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
16.04.2023, 16:17
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Mikle Quits Посмотреть сообщение
крутить какую-нибудь анимацию между нажатиями KeyDown
анимационная гифка или таймера
0
 Аватар для Mikle Quits
776 / 293 / 17
Регистрация: 21.01.2023
Сообщений: 486
16.04.2023, 16:26
Просто двигай контрол или просто точку по форме.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
17.04.2023, 14:23
Karapet's Walk.exe очень хорошая игра, мне понравилась, и не нагружает ЦП, вспомнил сразу старые добрые игры на приставке)
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
17.04.2023, 14:28
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Тут на форуме лежит ещё пара моих игр в другом разделе:
Несколько небольших игрушек
Несколько небольших игрушек
Они обе на выходе используют Direct3D с vsync, и поэтому там нет такой загрузки ядра.
И последний вопрос у меня остался, как главный герой этой игры может висеть на воздухе, в то время как ни один пиксель не соприкасается с полом/землёй (на чём можно стоять)?

Я даже увеличенный фрагмент приложил, ноль пикселей соприкасаются с тем на чём можно было бы стоять...
Миниатюры
Тестирование полезных кодов и примеров  
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
17.04.2023, 16:48  [ТС]
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Небольшая игра - логический платформер TNT
Напоминает Lode Runner 1983 года. И, о чудо, она даже в Steam есть
https://store.steampowered.com... er_Legacy/
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
17.04.2023, 16:50
А мне напомнило старые добрые DOS'овские игры)
0
sleep
 Аватар для I can
4935 / 4610 / 841
Регистрация: 13.04.2015
Сообщений: 9,784
17.04.2023, 17:01
Цитата Сообщение от Dragokas Посмотреть сообщение
Напоминает Lode Runner
Или castle excellent
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
17.04.2023, 17:06
Йети!
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
17.04.2023, 17:46  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
А мне напомнило старые добрые DOS'овские игры)
Ээх, молодежь. Lode Runner это не досовская, это ещё ZX-Spectrum.
0
 Аватар для Mikle Quits
776 / 293 / 17
Регистрация: 21.01.2023
Сообщений: 486
17.04.2023, 19:40
Цитата Сообщение от HackerVlad Посмотреть сообщение
как главный герой этой игры может висеть на воздухе
Молодец, нашёл таки к чему прицепиться
Цитата Сообщение от Dragokas Посмотреть сообщение
Напоминает Lode Runner 1983 года
Да, внешне и по механике близко, но геймплей тут совсем другой, никаких монстров, зато с каждой новой картой задачки всё сложнее, на 25-й карте - максимум.
Цитата Сообщение от Dragokas Посмотреть сообщение
Lode Runner это не досовская, это ещё ZX-Spectrum
Я на Atari играл адаптированную версию.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
21.04.2023, 18:13  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Красивое окно
Я переделал красивое окно от The trick, выкладываю новый вариант.
Не в обиду участвовавших в проекте, но по мне все эти современные технологии, не позволяющие полноэкранное окно закрыть "вслепую", наведя мышью на правый вехний угол экрана, выглядят ужасной реализацией.
У программы ACDSee сейчас такое, и это боль, когда привык любые окна закрывать простым движением, и тут бац, появляется нечто "особенное".
Впрочем как и все остальные кнопки приходится клювом нажимать; где бы "клюв" найти?
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
21.04.2023, 18:56
Цитата Сообщение от Dragokas Посмотреть сообщение
Не в обиду участвовавших в проекте
Да, тут есть такой минус, хотя я об этом даже и не думал никогда... Но кто тебе мешает перерисовать кнопки так чтобы кнопка закрытия была в самом верху, просто над этим нужно корпеть и стараться...
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
21.04.2023, 19:31  [ТС]
Перерисовать сложнее, если это уже не твоя программа )
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.05.2023, 20:40  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Программа RegJumpHack
Ну не то, чтобы первая, скорее первая, написанная грамотно (надеюсь).
Здесь уже писал такое. Правда, намудрил со структурами, и часть с TreeView работала только под x32 виндой.

А так, весь этот код можно заменить на 1 строчку: запись вот сюда в реестр полного пути к интересующей ветке, и тогда Regedit сам откроется в нужном месте:
Code
1
HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit
Если ещё кто-то интересуется, здесь есть вариант на VBS с активацией по горячей клавише (переход в ветку реестра, скопированную в буфер обмена).
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
09.05.2023, 21:29
Цитата Сообщение от Dragokas Посмотреть сообщение
А так, весь этот код можно заменить на 1 строчку
Конечно я знаю об этом, вот тут я уже говорил об этом: Нужен исходник по созданию определенного количества папок
Я предложил именно этот код самым первым для решения этой задачи для testuser2.

Добавлено через 6 минут
Цитата Сообщение от Dragokas Посмотреть сообщение
работала только под x32 виндой
У меня работает в 64-битной семёрке без проблем вообще и в XP 32-битной

Добавлено через 4 минуты
Цитата Сообщение от Dragokas Посмотреть сообщение
написанная грамотно (надеюсь)
Единственный косяк не открывает корневые папки, такие как, HKEY_LOCAL_MACHINE и т.д. если в пути только эта корневая папка, надо бы подправить это...

Добавлено через 5 минут
Всё, подправил, теперь открывает и корневые папки если ничего нет в пути больше:
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
Option Explicit
' *--------------------------------------------*
' | Программа RegJumpHack                      |
' | Версия 1.0                                 |
' | Copyright (c) 09.05.2023 by HackerVlad     |
' | e-mail: vladislavpeshkov@ya.ru             |
' *--------------------------------------------*
 
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 hWndParent As Long, ByVal hWndChildAfter As Long, ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShellExecute Lib "shell32" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WaitForInputIdle Lib "user32" (ByVal hProcess As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function VirtualAllocEx Lib "kernel32.dll" (ByVal hProcess As Long, lpAddress As Any, ByRef dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function VirtualFreeEx Lib "kernel32.dll" (ByVal hProcess As Long, ByVal lpAddress As Long, ByRef dwSize As Long, ByVal dwFreeType As Long) As Long
Private Declare Function SendMessageW Lib "user32" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
Private Const INFINITE = -1
Private Const MEM_COMMIT = &H1000&
Private Const PAGE_READWRITE = 4&
Private Const PROCESS_QUERY_INFORMATION = 1024
Private Const PROCESS_VM_OPERATION = &H8
Private Const PROCESS_VM_READ = 16
Private Const PROCESS_VM_WRITE = &H20
Private Const MEM_RELEASE = &H8000&
Private Const TVIS_EXPANDED = &H20
 
Private Type TVITEM   ' was TV_ITEM
  mask As Long
  hItem As Long
  State As Long
  stateMask As Long
  pszText As Long   ' pointer
  cchTextMax As Long
  iImage As Long
  iSelectedImage As Long
  cChildren As Long
  lParam As Long
End Type
 
Sub CollapseVBIDETree()
    Dim hwndVBIDE As Long, hwndVBAProj As Long, hwndTV As Long
    Dim hwndCurrent As Long, hwndChildCurrent As Long
    Dim bSuccessModule As Boolean, bSuccessElse As Boolean, sNodeName As String
 
    'Find the handle of the VBEIDE window, down to the treeview in the project window
    hwndVBIDE = FindWindow("wndclass_desked_gsk", vbNullString)             'VBIDE Window
    hwndVBAProj = FindWindowEx(hwndVBIDE, 0&, "PROJECT", vbNullString)      'The Project - VBAProject Window
    hwndTV = FindWindowEx(hwndVBAProj, 0&, "SysTreeView32", vbNullString)   'The Treeview in the VBAProject Window
 
    'Get the handle of the Root of the Treeview
    hwndCurrent = TreeView_GetRoot(hwndTV)
 
    'Loop through all the children of the treeview.  This is all the current VBA Projects.
    'We can loop through until there are none left and a handle of zero is return
    Do While hwndCurrent <> 0
        sNodeName = GetTVItemText(hwndTV, hwndCurrent)
        Print sNodeName
        
        'Get the first child in the current project which is the 'Microsoft Excel Objects'
        hwndChildCurrent = TreeView_GetChild(hwndTV, hwndCurrent)
        'Set up a boolean to check if there is a 'Modules' child.  If not, we'll collapse the whole project
        bSuccessModule = False
 
        'Loop through all the child nodes to find the 'Modules' node
        Do While hwndChildCurrent <> 0
            'Get the name of the node
            sNodeName = GetTVItemText(hwndTV, hwndChildCurrent)
            
            Debug.Print sNodeName
            
            'If we find the Modules node then Expand it and flag it
            If sNodeName = "Modules" Then
                bSuccessModule = TreeView_Expand(hwndTV, hwndChildCurrent, TVE_EXPAND)
            Else
            'Otherwise collapse it
                bSuccessElse = TreeView_Expand(hwndTV, hwndChildCurrent, TVE_COLLAPSE)
            End If
            hwndChildCurrent = TreeView_GetNextSibling(hwndTV, hwndChildCurrent)
        Loop
 
        'If we don't find a Modules child then collapse the entire branch for that project
        If Not bSuccessModule Then
            Call TreeView_Expand(hwndTV, hwndCurrent, TVE_COLLAPSE)
        Else
        'Some workbooks if collapsed would stay collapsed so make sure they are expanded
            Call TreeView_Expand(hwndTV, hwndCurrent, TVE_EXPAND)
        End If
 
        'Move onto the next project
        hwndCurrent = TreeView_GetNextSibling(hwndTV, hwndCurrent)
    Loop
End Sub
 
Private Sub Command1_Click()
    Dim hRegEdit As Long
    Dim hSysTreeView32 As Long
    Dim hwndCurrent As Long
    Dim hwndChildCurrent As Long
    Dim pid As Long
    Dim hProcess As Long
    Dim tVI As TVITEM
    Dim tVI_new As TVITEM
    Dim pMem As Long
    Dim pMemStr As Long
    Dim lpWritten As Long
    Dim pszText As String * 256
    Dim sNodeName As String
    Dim cls(255) As Byte
    Dim hwndChildCurrent2 As Long
    Dim Paths() As String
    Dim PathStr As String
    Dim i As Integer
    
    PathStr = Text1.Text
    If Right$(PathStr, 1) = "\" Then PathStr = Mid$(PathStr, 1, Len(PathStr) - 1)
    
    If InStr(1, PathStr, "_") = 0 Then
        Beep
        Exit Sub
    End If
    
    Paths = Split(PathStr, "\")
    
    ' Найти окно редактора реестра
    hRegEdit = FindWindow("RegEdit_RegEdit", vbNullString)
    
    If hRegEdit = 0 Then ' Если редактор реестра не запущен, то запустить его
        ' Функция ShellExecute, в отличии от CreateProcess, позволяет запускать программы которые
        ' находятся в пропатченых каталогах (из всех каталогов переменной окружения среды PATH),
        ' таким образом, нам даже не надо вычислять каталог Windows и где лежит этот regedit.exe
        ShellExecute 0, "Open", "regedit.exe", vbNullString, vbNullString, vbNormalFocus
        
        Do ' Ожидаем появления окна
            hRegEdit = FindWindow("RegEdit_RegEdit", vbNullString)
        Loop While hRegEdit = 0 ' Выполнять цикл до тех пор пока не будет найдено искомое окно
        
        GetWindowThreadProcessId hRegEdit, pid ' Вычисляем PID процесса regedit
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0, pid)  ' Открываем процесс на полный доступ
        WaitForInputIdle hProcess, INFINITE ' Ожидаем окончательной загрузки программы regedit
    Else ' RegEdit уже был запущен
        GetWindowThreadProcessId hRegEdit, pid ' Вычисляем PID процесса regedit
        hProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0, pid)  ' Открываем процесс на полный доступ
    End If
    
    ' Найти дерево SysTreeView32 в окне реестра
    hSysTreeView32 = FindWindowEx(hRegEdit, ByVal 0&, "SysTreeView32", vbNullString)
    
    hwndCurrent = TreeView_GetRoot(hSysTreeView32) ' Получить дескриптор корня дерева
    
    Do While hwndCurrent <> 0 ' Получить доступ к TVM_GETITEM другого процесса
        ' Создать две страницы памяти: одну для структуры, другую для строки
        pMem = VirtualAllocEx(hProcess, ByVal 0&, 0, MEM_COMMIT, PAGE_READWRITE)
        pMemStr = VirtualAllocEx(hProcess, ByVal 0&, 0, MEM_COMMIT, PAGE_READWRITE)
        
        tVI.mask = TVIF_TEXT
        tVI.hItem = hwndCurrent
        tVI.pszText = pMemStr
        tVI.cchTextMax = MAX_ITEM
        
        WriteProcessMemory hProcess, pMem, tVI, Len(tVI), lpWritten ' Записать в память процесса структуру tVI
        SendMessageW hSysTreeView32, TVM_GETITEM, 0, pMem ' Послать запрос на определение текса ветки дерева
        ReadProcessMemory hProcess, pMemStr, ByVal pszText, MAX_ITEM, 0&
        sNodeName = GetStrFromBufferA(pszText)
        
        hwndChildCurrent = TreeView_GetChild(hSysTreeView32, hwndCurrent) ' Открыть корень дерева "Компьютер"
        
        Do While hwndChildCurrent <> 0 ' Начать перебор первичных кустов главного корневого узла "Компьютер"
            tVI.hItem = hwndChildCurrent
            WriteProcessMemory hProcess, pMem, tVI, Len(tVI), lpWritten ' Записать в память процесса структуру tVI
            WriteProcessMemory hProcess, pMemStr, ByVal VarPtr(cls(0)), MAX_ITEM, lpWritten ' Стереть старые данные
            
            SendMessageW hSysTreeView32, TVM_GETITEM, 0, pMem ' Послать запрос на определение текса ветки дерева
            ReadProcessMemory hProcess, pMemStr, ByVal pszText, MAX_ITEM, 0&
            ReadProcessMemory hProcess, pMem, tVI_new, Len(tVI_new), 0& ' Получить новое состояние
            sNodeName = GetStrFromBufferA(pszText)
            
            If StrComp(sNodeName, Paths(0), vbTextCompare) = 0 Then ' Если это первичный ключ
                TreeView_Expand hSysTreeView32, hwndChildCurrent, TVE_EXPAND ' Открыть первичный ключ
                
                If UBound(Paths) > 0 Then
                    For i = 1 To UBound(Paths)
                        hwndChildCurrent2 = TreeView_GetChild(hSysTreeView32, IIf(i = 1, hwndChildCurrent, hwndChildCurrent2))
                        
                        Do While hwndChildCurrent2 <> 0
                            tVI.hItem = hwndChildCurrent2
                            WriteProcessMemory hProcess, pMem, tVI, Len(tVI), lpWritten ' Записать в память процесса структуру tVI
                            WriteProcessMemory hProcess, pMemStr, ByVal VarPtr(cls(0)), MAX_ITEM, lpWritten ' Стереть старые данные
                            
                            SendMessageW hSysTreeView32, TVM_GETITEM, 0, pMem ' Послать запрос на определение текса ветки дерева
                            ReadProcessMemory hProcess, pMemStr, ByVal pszText, MAX_ITEM, 0&
                            sNodeName = GetStrFromBufferA(pszText)
                            
                            If StrComp(sNodeName, Paths(i), vbTextCompare) = 0 Then ' Если это глубинный ключ
                                TreeView_Expand hSysTreeView32, hwndChildCurrent2, TVE_EXPAND ' Открыть глубинный ключ
                                If i = UBound(Paths) Then
                                    ' В самом конце выделить нужный элемент дерева
                                    WaitForInputIdle hProcess, INFINITE
                                    SendMessageW hSysTreeView32, TVM_SELECTITEM, TVGN_CARET, hwndChildCurrent2
                                    SendMessageW hSysTreeView32, TVM_SELECTITEM, TVGN_FIRSTVISIBLE, hwndChildCurrent2
                                End If
                                
                                Exit Do ' Для ускорения процедуры, мы не будем перебирать дальше список уже неинтересуемых нами параметров
                            End If
                            
                            hwndChildCurrent2 = TreeView_GetNextSibling(hSysTreeView32, hwndChildCurrent2)
                        Loop
                    Next
                End If
            Else
                If (tVI_new.State And TVIS_EXPANDED) <> 0 Then ' Если главный куст дерева открыт
                    TreeView_Expand hSysTreeView32, hwndChildCurrent, TVE_COLLAPSE ' Послать запрос на закрытие главноего куста
                End If
            End If
            
            hwndChildCurrent = TreeView_GetNextSibling(hSysTreeView32, hwndChildCurrent)
        Loop
        
        hwndCurrent = TreeView_GetNextSibling(hSysTreeView32, hwndCurrent)
    Loop
    
    ' Освободить память
    VirtualFreeEx hProcess, pMem, ByVal 0&, MEM_RELEASE
    VirtualFreeEx hProcess, pMemStr, ByVal 0&, MEM_RELEASE
    CloseHandle hProcess
End Sub
 
Private Sub Command2_Click()
    ' А эта процедурка сворачивает дерево в VB IDE с проектами и формами и модулями
    CollapseVBIDETree
End Sub
 
Private Sub Form_Load()
    Top = 600
    Left = Screen.Width / 2 - Me.Width / 2
End Sub
 
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        KeyAscii = 0
        Command1_Click
    End If
End Sub
Добавлено через 5 минут
Прошу прощения, 64-битный регедит у меня и правда не работает, только 32-битная версия (хоть и 64-битная винда)

Добавлено через 1 минуту
Странно

Добавлено через 8 минут
Ну да, значит есть такая проблема, что структура другая наверное должна быть для 64-битного процесса, тут что-то такое написано: https://stackovergo.com/ru/q/1... endmessage

Добавлено через 6 минут
Dragokas, я если честно не знаю как сделать чтобы и для 64-битного regedit работало тоже, этим заниматься надо... Но смотри если моя программа на VB6 и она, конечно же 32-битная, значит запуская regedit она тоже вызывает 32-битную версию regedit и всё работает поэтому.

Добавлено через 3 минуты
Ай, зачем этим вообще заниматься, вон сейчас в Windows 10 уже адресная строка появилась у regedit'а
Я просто для самообразования написал это, хобби у меня такое, учусь программировать...
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
10.05.2023, 02:34  [ТС]
С 32-битным редактором реестра не особо интересно работать, ибо там содержимое всех 64-битных ключей будет переадресованное.
Даже тот ключ Run, который у тебя сейчас прописан, он 64-битный, и содержимое отображается от 32-битного ключа.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
10.05.2023, 12:23
Цитата Сообщение от Dragokas Посмотреть сообщение
32-битным редактором реестра не особо интересно работать
Лучше бы подсказал место ошибки в коде почему не работает с 64-битным, чем критиковать...
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
10.05.2023, 13:38  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Лучше бы подсказал место ошибки в коде почему не работает с 64-битным, чем критиковать...
Добрый вечер. Кто автор?
А тебе уже писал выше, что с этим вопросом не справился. И не так, чтобы было особое желание сесть и всё внимательно перепроверить. И я уже упоминал, что скорее всего на x64 другие структуры. Твоё подсказал = сядь и сделай за тебя. Зачем мне над этим кроптеть, если мой вариант как VB6 так и VBS отлично работают на x64 regedit, пусть и с частичной эмуляцией клавишь через SendMessage на этапе выбора названия параметра в ключе.
Ты написал, что у тебя все прекрасно работает на x64 и не нужно вообще заниматься исправлением, я объяснил, почему это плохо, где здесь критика? Да и что в этом плохого?
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
10.05.2023, 13:46
Цитата Сообщение от Dragokas Посмотреть сообщение
Добрый вечер
У меня лично сейчас день.

Добавлено через 3 минуты
Там вообще можно написать эту программу так чтобы вообще не влазить в процесс регэдита, ключи можно открывать по индексам не зная его текста, можно предполагать основываясь на своём собственном списке реестра, правда точность будет не 100% я об этом думал уже...

Добавлено через 2 минуты
А ошибка скорее всего в структуре, я предполагаю, что нужен 64-битный указатель на строку, у меня 32-битный
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
10.05.2023, 14:03
HackerVlad, ошибка из-за того что размер полей структур разный. Вот пример для listview'а https://www.vbforums.com/showt... ost5537289 для treeview там аналогично будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2023, 14:03
Помогаю со студенческими работами здесь

Парочка полезных видеоуроков по C++
323e1ffiYjw AEA7GmPli5Y OH7g2lfsYEU Может какой-нибудь следующий &quot;учитель&quot; посмотрит и передумает делать свои уроки :)

Удаленное тестирование приложение/Пересылка на тестирование
Если кто-то написал приложение под андроид и захочет показать другому человеку, то достаточно отослать apk. А как обстоит с этим дело в...

Unit -тестирование или автоматизированное тестирование
Доброго времени суток. Я программирую «для себя» второй год, на выходе получаются разного рода приложения от постоянно подающих с...

Не Большой Набор Полезных Функций
Функция проверки на наличие не запрещенных символов в поле, где ? - запрещенные символы Function Check_BadSymbols(sStr As String) As...

USBasp - пара возможно полезных плюшек.
Уважаемые коллеги! Возможно то, что я опишу - баян с бородищей. Готов принять справедливую критику. Но вдруг кому-то поможет. Держу...


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

Или воспользуйтесь поиском по форуму:
260
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru