Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/50: Рейтинг темы: голосов - 50, средняя оценка - 4.58
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19

Как получить Handle элемента управления пользовательской формы?

04.09.2014, 11:54. Показов 10807. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллеги, привет !!!

недавно столкнулся с тем, что невозможно нормально получить hWnd контрола... в среде VBA

например, я знаю как получить описатель с помощю FindWindow(vbNullString, me.Caption)

но этого недостаточно, надо получить описатель контрола...

напртимер, я забросил некий контрол, и пытаюсь получить hWnd_Txt= FindWindowEx (hWnd, 0 "Trunder.."

не могу понять, что требуется, в VB6 такой проблемы нет, там это есть в свойствах почти любого
контрола

помогите вот с чем, ... как получить описатели разных контролов, (очень нужно)

Добавлено через 35 минут
Наверное зря спросил, врят-ли кто сможет ответить
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.09.2014, 11:54
Ответы с готовыми решениями:

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

Перенос текста из элемента управления одной формы на элемент управления другой
Здрасте, нужна помощь!) Мне нужно чтобы когда я ввожу в поле Text какую либо запись в одной форме и при нажатии на кнопку оно...

Как запретить закрытие пользовательской формы
Приветствую всех знатоков! у меня 2 вопроса: 1 - каким образом сделать UserForm1 незакрывающуюся? То есть чтобы на форме...

21
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 13:37
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Это не указатель, а хендл. Его имеют только окна, windowless контролы его не имеют. Те которые имеют возвращают его посредством метода _GethWnd (handle = Frame1.[_GethWnd]). Но для этого объект должен наследовать интерфейс MSForms.Control
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
04.09.2014, 15:06  [ТС]
The Trick, тема была переименованна не мной.. но это не важно
так как это сделать ?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 15:07
Цитата Сообщение от Антихакер32 Посмотреть сообщение
так как это сделать ?
Ты издеваешься?
Цитата Сообщение от The trick Посмотреть сообщение
Те которые имеют возвращают его посредством метода _GethWnd (handle = Frame1.[_GethWnd])
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
04.09.2014, 15:09  [ТС]
_GethWnd ..это что, скрытый метод.. ?, что это?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 15:10
Цитата Сообщение от Антихакер32 Посмотреть сообщение
скрытый метод.. ?, что это?
Да.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
04.09.2014, 16:38  [ТС]
Не работает для TextBox.. возвращает 0

а его мне и надо было..

Visual Basic
1
2
3
4
5
6
7
Private Sub Frame1_Click()
    Frame1.Caption = Frame1.[_GethWnd]
End Sub
 
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    TextBox1.Text = TextBox1.[_GethWnd]
End Sub

.. почему в VBA всё через ж..у ?
не работают подовляющее больнинство нужных свойств и методов..
зато нагроможденно всякой ерунды..
из за чего потом всю среду глючит

Добавлено через 9 минут
..сделал продвинутый запрос в строке гугл ..

Получить Handle vba OR excel "[_GethWnd]" -net -64 -c++ -c# -delphi

-..ни одного адекватного ответа, никто этим еще не интересовался
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 16:52
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Не работает для TextBox.. возвращает 0
Цитата Сообщение от Антихакер32 Посмотреть сообщение
.ни одного адекватного ответа, никто этим еще не интересовался
Потому что я тебе его уже дал.
Цитата Сообщение от The trick Посмотреть сообщение
Его имеют только окна, windowless контролы его не имеют.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
04.09.2014, 17:14  [ТС]
Скрытых методов и свойств, даже больше чем *открытых*
странно, как вообще можно говорить о программировании на VBA, это несерьёзно
Кликните здесь для просмотра всего текста


Добавлено через 9 минут
Цитата Сообщение от The trick Посмотреть сообщение
Его имеют только окна, windowless
тогда такой вопрос, хочу у вас спросить коллега, а как получить hWnd у TextBox ???

Добавлено через 2 минуты
Сейчас делаю класс для мульти-использования хуков..
так вот, мне надо знать как получить это свойство, иначе не получится продемонстрировать

Добавлено через 2 минуты
Вот мои разработки..

Модуль mHook
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
Option Explicit
'
'        © Антихакер32™
'        Модуль многократного использования хуков,
'        и отлова любого оконного сообщения
'
Public Const GWL_WNDPROC = -4
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Dim Co As New Collection
 
Public Function DelMessage(Key$) As Boolean
    'Удаление сообщения
    Dim hWnd&, v: On Error GoTo ERRR
    hWnd = Co(Key)(0): Co.Remove Key: DelMessage = True
    For Each v In Co: If v(0) = hWnd Then Exit Function
    Next: DelMessage = SetWindowLong(hWnd, GWL_WNDPROC, 0)
ERRR:
End Function
 
Public Function CloseClassHooks(ClassPtr&) As Boolean
    'Закрытие хуков связанных только с этим классом
    Dim s$, v: On Error GoTo ERRR
    For Each v In Co: If v(5) = ClassPtr Then s = s & " " & v(0) & v(1)
    Next
    For Each v In Split(Mid$(s, 2))
        Call SetWindowLong(Co(v)(0), GWL_WNDPROC, 0)
        Co.Remove CStr(v)
    Next: CloseClassHooks = True
ERRR:
End Function
 
Public Function CloseHooks(hWnd&) As Boolean
    'Закрытие хуков этого окна
    Dim s$, v: On Error GoTo ERRR
    CloseHooks = SetWindowLong(hWnd, GWL_WNDPROC, 0)
    For Each v In Co
        If v(0) = hWnd Then s = s & " " & v(0) & v(1)
    Next
    For Each v In Split(Mid$(s, 2))
        Co.Remove CStr(v)
    Next: CloseHooks = True
ERRR:
End Function
 
Public Function CloseAll() As Boolean
    'Закрытие всех хуков (обычно по завершении программы)
    Dim v: On Error GoTo ERRR
    For Each v In Co
        CloseAll = SetWindowLong(v(0), GWL_WNDPROC, 0)
    Next: Set Co = Nothing: CloseAll = True
ERRR:
End Function
 
Public Function AddHook(hWnd&, Message&, ProcObject As Object, _
ProcName$, ClassPtr&) As Boolean
    Dim SWL&: On Error GoTo ERRR
    If Co Is Nothing Then Set Co = New Collection
    DelMessage (hWnd & Message) 'Снятие старого хука
    SWL = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)
    Co.Add Array(hWnd, Message, ProcObject, ProcName, SWL, ClassPtr), CStr(hWnd & Message)
    AddHook = SWL > 0
ERRR:
End Function
 
Private Function WindowProc(ByVal hWnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim SLW&, v: On Error GoTo ERRR
    For Each v In Co
        If v(0) = hWnd Then SLW = v(4) 'Крючёк (тоесть Hook)
        If v(0) = hWnd And v(1) = Msg Then
            WindowProc = CallByName(v(2), v(3), VbMethod, hWnd, Msg, wParam, lParam)
            If WindowProc = 0 Then Exit Function
    End If: Next
ERRR:
    If SLW Then WindowProc = CallWindowProc(SLW, hWnd, Msg, wParam, lParam)
End Function



Класс UGHook
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
Option Explicit
 
Public Function DelMessage(Key$) As Boolean
    'Удаление сообщения (Ключ состоит из *hWnd & Message*)
    'Если это сообщение было последим, то снимаются все хуки с этого окна
    DelMessage = mHook.DelMessage(Key)
End Function
 
Public Function CloseHooks(hWnd&) As Boolean
    'Закрытие всех хуков указанного окна
    CloseHooks = mHook.CloseHooks(hWnd)
End Function
 
Public Function CloseAll() As Boolean
    'Закрытие абсолютно всех хуков (обычно по завершении программы)
    CloseAll = mHook.CloseAll
End Function
 
Public Function AddHook(hWnd&, Message&, ProcObject As Object, _
ProcName$) As Boolean
    'Добавление хука
    AddHook = mHook.AddHook(hWnd, Message, ProcObject, ProcName, ObjPtr(Me))
End Function
 
Private Sub Class_Terminate()
    mHook.CloseClassHooks (ObjPtr(Me))
End Sub


Добавлено через 2 минуты
Пример использования примерно такой

Visual Basic
1
2
3
4
5
6
Public Function TXMove(ParamArray Arg())
    On Error Resume Next
    Arg(1) = WM_NCLBUTTONDOWN
    Arg(2) = HTCAPTION
    TXMove = 1
End Function
Добавлено через 1 минуту
Visual Basic
1
2
3
4
5
6
Option Explicit
Dim hk As New UGHook
 
Private Sub Command1_Click()
    hk.AddHook Text1.hWnd, WM_LBUTTONDOWN, Me, "TXMove"
End Sub
Добавлено через 2 минуты
На VB6 это работает, так-как я уже сказал проблем нет, с этим свойством
его можно получить у всех контролов кроме лэйбла и рисовальных фигур
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 17:14
Смотри
Миниатюры
Как получить Handle элемента управления пользовательской формы?  
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 17:15
Цитата Сообщение от Антихакер32 Посмотреть сообщение
тогда такой вопрос, хочу у вас спросить коллега, а как получить hWnd у TextBox
Сколько раз еще написать
Цитата Сообщение от The trick Посмотреть сообщение
Его имеют только окна, windowless контролы его не имеют.
?
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
04.09.2014, 17:33  [ТС]
Значит никак...

Добавлено через 7 минут
Ну как-то же оно должно управляться.. пусть даже той-же средой VBA ?
..может я не там ищу ? у меня нет специальных средств для получения еще большей инфы..

Добавлено через 2 минуты
Кстати, что это за мониторинговая программа, которая у вас на картинке ???
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 17:38
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Ну как-то же оно должно управляться.. пусть даже той-же средой VBA ?
..может я не там ищу ? у меня нет специальных средств для получения еще большей инфы..
Скажи мне как получить хендл руки или ноги? Никак нельзя, его не существует в природе. Значит с этим контролом не будут работать API функции. Управляться он может миллионом разных способов.
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Кстати, что это за мониторинговая программа, которая у вас на картинке
SpyXX
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
04.09.2014, 17:41  [ТС]
... да уж.., для меня это новость, значит среда VBA, не только глючная,
но ещё и отстойная в плане, того что не у всех контролов можно увидеть хэндл
придётся это учесть.. найти в себе мужество и смириться с этим фактом
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 17:44
Цитата Сообщение от Антихакер32 Посмотреть сообщение
... да уж.., для меня это новость, значит среда VBA, не только глючная,
но ещё и отстойная в плане, того что не у всех контролов можно увидеть хэндл
придётся это учесть.. найти в себе мужество и смириться с этим фактом
Это чушь. Среда VBA на 100% выполняет свои задачи.
2
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
04.09.2014, 18:05  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Среда VBA на 100% выполняет свои задачи.
да хоть на 200, мне нужен описатель TxBox, и я его не получил, а значит
не смогу реализовать более гибкое управление, ..как вариант придется делать свои с помощю
CreateWindows.., ..запускать их милионным способом, и управлять

Добавлено через 12 минут
Для тех кто не понял

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
Option Explicit
'
'Стандартные компоненты с помощью API
'
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function CreateWindowEx Lib "user32.dll" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hWnd As Long) As Long
Private Const BS_PUSHBUTTON = &H0&
Private Const WS_CHILD = &H40000000
Private Const WS_VISIBLE = &H10000000
Private Const WS_EX_CLIENTEDGE = &H200&
Private Const LVS_REPORT = &H1
Private Const ES_MULTILINE = &H4&
Private Const ES_AUTOVSCROLL = &H40&
Private Const WS_DLGFRAME = &H400000
Private Const WS_BORDER = &H800000
Private m_hButton As Long
Private m_hWndLV As Long
Private m_hEdit As Long
Private m_hLabel As Long
Public hWnd As Long
 
Private Sub UserForm_Initialize()
    Dim lngStyle As Long
    hWnd = FindWindow(vbNullString, Me.Caption)
    'Define style
    lngStyle = BS_PUSHBUTTON Or WS_CHILD Or WS_VISIBLE
    'Create the button
    m_hButton = CreateWindowEx(0&, "BUTTON", "Click Me!", lngStyle, 190, 10, 150, 50, Me.hWnd, 0&, _
    Application.hInstance, ByVal 0&)
    'Define style
    lngStyle = WS_CHILD Or WS_VISIBLE Or LVS_REPORT
    'Create the listview
    m_hWndLV = CreateWindowEx(WS_EX_CLIENTEDGE, "SysListView32", vbNullString, lngStyle, 10, _
    10, 100, 100, Me.hWnd, 0, Application.hInstance, ByVal 0&)
    'Define style
    lngStyle = WS_DLGFRAME Or ES_AUTOVSCROLL Or ES_MULTILINE Or WS_CHILD Or WS_VISIBLE
    'Create the textbox
    m_hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "TextBox", lngStyle, 10, 120, 240, 100, _
    Me.hWnd, 0&, Application.hInstance, ByVal 0&)
    'Define style
    lngStyle = WS_BORDER Or WS_CHILD Or WS_VISIBLE
    'Create the label
    m_hLabel = CreateWindowEx(0&, "STATIC", "Label!", lngStyle, 260, 170, 150, 30, Me.hWnd, 0&, Application.hInstance, _
    ByVal 0&)
End Sub
 
Private Sub UserForm_Terminate()
    'Cleanup
    Call DestroyWindow(m_hButton)
    Call DestroyWindow(m_hWndLV)
    Call DestroyWindow(m_hEdit)
    Call DestroyWindow(m_hLabel)
End Sub
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 18:07
Цитата Сообщение от Антихакер32 Посмотреть сообщение
да хоть на 200, мне нужен описатель TxBox, и я его не получил, а значит
не смогу реализовать более гибкое управление, ..как вариант придется делать свои с помощю
CreateWindows.., ..запускать их милионным способом, и управлять
Это никак не коррелирует с высказыванием
Цитата Сообщение от Антихакер32 Посмотреть сообщение
значит среда VBA, не только глючная,
но ещё и отстойная
Я не могу получить хендл лейбла, таймера в VB6, значит VB6 глючный? Я не могу получить хендл контрола из WebBrowser'а - значит WebBrowser глючный? Я не могу получить хендл из бесчисленного множества вещей в мире - значит мир глючный? VBA не обязан работать так, как хочешь ты. Windowless контролы - это довольно частое явление, например в VB6 или C++ такие запросто создаются.

Добавлено через 36 секунд
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Для тех кто не понял
Удачи в обработке событий.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
04.09.2014, 18:27  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Удачи в обработке событий.
ну да, еще и события (весь мир глючный ..шутка )

Добавлено через 8 минут
The trick, может не в тему, события вообще никак себя не показывают
если создать контролы как у меня, как можно там чтото инициализировать подскажи,
на примере моего кода в 16 посте

Добавлено через 8 минут
Можно собственно вот как сделать
создать несколько классов, в которых будут реализованны события и свойства
компонентов, события отлавливать через хуки.. и посылать сообщения через PostMessage
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.09.2014, 18:27
Вот пример https://www.cyberforum.ru/blog... g2067.html
Органы управления уведомляют родителя посредством WM_COMMAND, WM_NOTIFY для некоторых контролов, ну и конечно стандартные сообщения WM_LBUTTONDOWN, WM_KEYDOWN, WM_CHAR, WM_PAINT ... много их.
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
04.09.2014, 19:35  [ТС]
Спасибо что ты мне помогаеш, (признаюсь.. не ожидал.. )

Добавлено через 3 минуты
WM_COMMAND
WM_NOTIFY
..вот бы найти нормальную литру на русском, где был бы коментарий к каждой такой
константе

Добавлено через 13 минут
Хотя.. можно всё разузнать если про-мониторить каждую
но это очень нудно

Добавлено через 15 минут
Есть еще идея !
раз уж у меня есть класс, для отлова оконных сообщений
значит мне нужно сделать класс в котором будут все возможные события
Visual Basic
1
2
3
4
5
6
Pubic Event WM_MOVE
Pubic Event WM_NOTIFY 'и тд
 
Public Function WM_MOVE_(ParamArray Arg())
  RaiseEvent WM_MOVE
End Sub
CallByName, если и будет передовать, то передаст что надо
ловить их уже в форме UserForm

Добавлено через 23 минуты
Вот как должно всё работать, я скомпилировал эксешник
со своими классами на уровне одного проекта для внутреннего использования
и вот как там чётко всё работает.. смотри(..те)
Кликните здесь для просмотра всего текста

Скомпилированная программа
ТЭСТ.rar (15.0 Кб)


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
Внутренности формы
 
[VB]Option Explicit
'Пример использования таймера на VBA
Dim tmr1 As UGTimer
Dim tmr2 As UGTimer
Dim tt As New UGTT
Dim hk As New UGHook
 
Const HTCAPTION = 2
Const WM_MOVE = &H3
Const WM_SIZE = &H5
Const WM_LBUTTONDOWN = &H201
Const WM_NCLBUTTONDOWN = &HA1
 
'2 строчки для манифеста
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Sub Form_Initialize(): InitCommonControls: End Sub
 
Public Function TXMove(ParamArray Arg())
    On Error Resume Next
    Arg(1) = WM_NCLBUTTONDOWN
    Arg(2) = HTCAPTION
    TXMove = 1
End Function
 
Private Sub Command2_Click()
    hk.DelMessage Text1.hWnd & WM_LBUTTONDOWN
End Sub
 
Private Sub Command3_Click()
    hk.AddHook Text1.hWnd, WM_LBUTTONDOWN, Me, "TXMove"
End Sub
 
Private Sub Form_Load()
    'Создаём 2 таймера, для особой наглядности
    Set tmr1 = New UGTimer
    Set tmr2 = New UGTimer
    'Вносим аркументы, какая наша процедура будет
    'мониторинговой, тоесть таймер ее будет вызывать
    tmr1.StartTimer Me, "RaiseTimer1", 1000
    tmr2.StartTimer Me, "RaiseTimer2", 100
    Choose(1, New UGObj).FrameRePaint [_Default]
End Sub
 
 
Private Sub Command1_MouseDown(index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    Const s = "Если ты легко и просто //выбил двери головой? //Значит ты тупой и толстый //а не сильный и крутой!!!", r = "//"
    tt.ShowTT Command1(index).hWnd, "Привет", Replace(s, r, vbCrLf), [Важная информация]
End Sub
 
Public Sub RaiseTimer1()
    Static i&: i = i + 1
    Text2 = Text2 & "*" & i & "*" & vbCrLf: Text2.SelStart = Len(Text2)
    
'    Debug.Print "*" & i & "*"
    'Разные ускорения
    If i > 3 Then tmr1.Interval = 100
    If i > 30 Then tmr1.Interval = 1000
    If i > 32 Then tmr1.Enabled = False
End Sub
 
Public Sub RaiseTimer2()
    Static i&: i = i + 1
    Text2 = Text2 & Chr(i + 33): Text2.SelStart = Len(Text2)
'    Debug.Print Chr(i + 33);
    If i > 128 Then tmr2.Enabled = False
End Sub
[/VB]


Добавлено через 4 минуты
Одно но!, на VBA такое сделать невозможно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.09.2014, 19:35
Помогаю со студенческими работами здесь

Как получить handle формы?
Создал форму способом описанным здесь: https://www.cyberforum.ru/blogs/390663/blog2003.html #include "MyForm.h" using...

Как получить handle дочернего элемента если функция вызывается по событию?
Для задания координат подсказки для элементов div на все div с name="div2" навешивается Listener который вызывает функцию mousemove_xy в...

Как из дочерней формы получить доступ к элементу управления родительской формы
Есть две формы: родительская(Form1) и дочерняя(Form2). В родительской форме(Form1) находятся textBox1 и button1. В дочерней форме...

Получить handle элемента
Доброе время суток я уже всю голову себе сломал как получить handle эмелента на форме есть компонент Chromium ...

Как получить доступ к элементам управления другой формы
как можно получит значение элементов первой формы если в проекте 2 формы Form1 f = new Form1(); f.ShowDialog(); this.textBox1.Text =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru