Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908

Заполнение полей сторонней программы

20.12.2016, 20:37. Показов 2320. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Всем рано или поздно надоедает заполнять одни и те же поля в той или иной программе просящей пароль и логин каждый раз. Хорошо если 1-2 раза в день, а если сотни раз?
Давайте вместе подумаем и решим эту задачу.
На сколько понимаю придется декларировать что то типа ActiveWindows или FindWindows.
Пусть логин и пароль лежат в текстовом файле рядом с программой.
Как найти поля в которые вводить? Да вообще что да как?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2016, 20:37
Ответы с готовыми решениями:

Импорт картинок из сторонней программы
Здравствуйте Уважаемые форумчане. Помогите разобраться с проблемой. Мне нужно импортировать картинки из сторонней программы в таблицу...

Скрытие окна запускаемой сторонней программы
Я решил вынести оставшийся вопрос отдельно. До этого уже обсуждали остальные мои вопросы. Не все захочется всё читать и вникать 0 дан ли...

Заполнение полей в браузере
Как программно заполнить поля на странице регистрации допустим на почте рамблера https://id.rambler.ru/account/registration поля где...

17
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
20.12.2016, 21:04
Как из программы управлять другой, уже запущенной программой
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
21.12.2016, 14:26
Цитата Сообщение от blackeangel Посмотреть сообщение
Всем привет. Всем рано или поздно надоедает заполнять одни и те же поля в той или иной программе просящей пароль и логин каждый раз. Хорошо если 1-2 раза в день, а если сотни раз?
Давайте вместе подумаем и решим эту задачу.
На сколько понимаю придется декларировать что то типа ActiveWindows или FindWindows.
Пусть логин и пароль лежат в текстовом файле рядом с программой.
Как найти поля в которые вводить? Да вообще что да как?
Если актуально могу помочь...
Когда то потратил несколько дней на это...

p/s как всегда спасибо The trick сильно помог в этом...
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
21.12.2016, 14:35  [ТС]
kreotodr, все актуально. Что нужно для этого и где брать?
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
21.12.2016, 14:38
все сюда кидайте...
я поясню...
Как минимум понадобится Spy++

Добавлено через 2 минуты
вот кстати полный работающий листинг на примере программы ДОМАШНЯЯ БУХГАЛТЕРИЯ
Как из программы управлять другой, уже запущенной программой
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
21.12.2016, 15:23  [ТС]
kreotodr, вот данные из spy.
Программа сама находится на сервере, пользователь запускается лишь ярлык у себя на ПК.
Миниатюры
Заполнение полей сторонней программы  
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
21.12.2016, 15:24  [ТС]
Заполнить надо имя и пароль, и нажать на регистрация
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
21.12.2016, 15:27
а ну так просто...
сначала детектите с помощю SPYТО КУДА НУЖНО ПИСАТЬ...

В моем случае, это было ОКНО программы с текстом... "Предупреждение системы безопасности Windows"
Далее поиск элементов (поля, чекбоксы, кнопки и тд...)

Вот листинг, поиска окна... Потом в в окне ищем кнопку, и нажимаем на нее

Visual Basic
1
2
3
4
5
6
7
8
hwnd = FindWindow(vbNullString, "Предупреждение системы безопасности Windows")
If hwnd Then
        hBtn = FindWindowEx(hwnd, 0, StrPtr("Button"), StrPtr("&Нет"))
            If CBool(hBtn) Then
                       SendMessage hBtn, WM_LBUTTONDOWN, 1, ByVal 0
                       SendMessage hBtn, WM_LBUTTONUP, 0, ByVal 0
            End If
    End If
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
21.12.2016, 16:08  [ТС]
kreotodr, 2 вопроса:
1. Как этот кусок кода тестить?
2. А по-русски?

Добавлено через 32 минуты
Распишите кто откуда берется?
Кто есть ищменяемые переменные и т.п.
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
21.12.2016, 18:26
вечером сброшу готовый проект....
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
22.12.2016, 06:41
Вот он...
Вложения
Тип файла: rar prjEventHook.rar (5.3 Кб, 23 просмотров)
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
22.12.2016, 06:42
И еще один
Вложения
Тип файла: rar Предупреждение системы безопасности Windows.rar (5.7 Кб, 24 просмотров)
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
22.12.2016, 06:49
Вот что то еще...для диалоговых окон..

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
248
249
250
'
' Декларации закинул все.. Лишние удалите
'
 
Option Explicit
 
Public Declare Function INITCOMMONCONTROLSEX Lib "Comctl32" Alias "InitCommonControlsEx" (ByRef TLPINITCOMMONCONTROLSEX As INITCOMMONCONTROLSEX) As Long
Public Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Long, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Any) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function GetComputerNameA Lib "kernel32" (ByVal lpBuffer As String, nSize As Long) As Long
Public Declare Function WNetGetUserA Lib "mpr.dll" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
Public Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Public Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Public Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Public Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function GetVolumeInformation Lib "kernel32.dll" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Public Declare Function DestroyWindow Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hWnd As Long) As Long
Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Public Declare Function ShellExecute Lib "shell32.dll" 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
Public 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 Sub tmrKillWindowScript_Timer()
 
    '
    ' таймер закрытия окон скриптов (только для первой копии)
    '
 
On Error GoTo ErrorHandler
    Dim hWnd    As Long
    Dim hEdit   As Long
    Dim hBtn    As Long
    Dim hPanel  As Long
    Dim cls     As String
    Dim sLn     As Long
    Dim i       As Integer
 
            
            '
            ' Алгоритм #0 - удаление окна, по маске
            '
                
                For i = 1 To intCountWinToClose
                    killWinProck IniSett_WinToClose(i)
                Next
                
If IniSett_UseAlgoritmWinToClose <> "ВСЕ" Then Exit Sub
            '
            ' Алгоритм #1 - удаление окна
            '
            
            hWnd = FindWindow(vbNullString, "Предупреждение системы безопасности Windows")
            If hWnd Then
                    DestroyWindow (hWnd)
                    SendMessage hWnd, WM_CLOSE, 0, 0 ' для подстраховки
                 If IniSett_logget = "YES" Then Logget "{Окно 'Безопасность Windows - Загрузка куки' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм Destroy Windows}", 4
            End If
 
            hWnd = FindWindow(vbNullString, "Безопасность Windows")
            If hWnd Then
                    DestroyWindow (hWnd)
                    SendMessage hWnd, WM_CLOSE, 0, 0 ' для подстраховки
                If IniSett_logget = "YES" Then Logget "{Окно 'Безопасность Windows - Ввод имени и Пароля' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм Destroy Windows}", 4
            End If
        
            hWnd = FindWindow(vbNullString, "Скачивание файла")
            If hWnd Then
                    DestroyWindow (hWnd)
                    SendMessage hWnd, WM_CLOSE, 0, 0 ' для подстраховки
                 If IniSett_logget = "YES" Then Logget "{Окно 'Скачивание файла' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм Destroy Windows}", 4
            End If
            
            hWnd = FindWindow(vbNullString, "Ошибка веб-страницы")
            If hWnd Then
                    DestroyWindow (hWnd)
                    SendMessage hWnd, WM_CLOSE, 0, 0 ' для подстраховки
                 If IniSett_logget = "YES" Then Logget "{Окно 'Ошибка веб-страницы' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм Destroy Windows}", 4
            End If
            
            hWnd = FindWindow(vbNullString, "Предупреждение системы безопасности")
            If hWnd Then
                    DestroyWindow (hWnd)
                    SendMessage hWnd, WM_CLOSE, 0, 0 ' для подстраховки
                 If IniSett_logget = "YES" Then Logget "{Окно 'Предупреждение системы безопасности - Сертификат' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм Destroy Windows}", 4
            End If
            
            hWnd = FindWindow(vbNullString, "Сообщение с веб-страницы")
            If hWnd Then
                    DestroyWindow (hWnd)
                    SendMessage hWnd, WM_CLOSE, 0, 0 ' для подстраховки
                 If IniSett_logget = "YES" Then Logget "{Окно 'Сообщение с веб-страницы' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм Destroy Windows}", 4
            End If
            
         
           
            hWnd = FindWindow(vbNullString, "SiteParser (TM)")
            If hWnd Then
                    DestroyWindow (hWnd)
                    SendMessage hWnd, WM_CLOSE, 0, 0 ' для подстраховки
                 If IniSett_logget = "YES" Then Logget "{Окно 'SiteParser (TM) - Программа не работает' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм Destroy Windows}", 4
            End If
            
            '
            ' Алгоритм #2 - (если не сработал первый) - ищем кнопку и клацаем на ней...
            '
            
            hWnd = FindWindow(vbNullString, "Безопасность Windows")
            If hWnd Then
                hBtn = FindChilds(hWnd, vbNullString, "Отмена")
                    If CBool(hBtn) Then
                        If IniSett_logget = "YES" Then Logget "{Окно 'Безопасность Windows - Ввод имени и Пароля' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                        PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
        
            hWnd = FindWindow(vbNullString, "Предупреждение системы безопасности Windows")
            If hWnd Then
                hBtn = FindWindowExF(hWnd, 0, StrPtr("Button"), StrPtr("&Нет"))
                    If CBool(hBtn) Then
                        If IniSett_logget = "YES" Then Logget "{Окно 'Безопасность Windows - Загрузка куки' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                        PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
        
            hWnd = FindWindow(vbNullString, "Скачивание файла")
            If hWnd Then
                hBtn = FindWindowExF(hWnd, 0, StrPtr("Button"), StrPtr("Отмена"))
                    If CBool(hBtn) Then
                        If IniSett_logget = "YES" Then Logget "{Окно 'Скачивание файла' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                        PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            hWnd = FindWindow(vbNullString, "Ошибка веб-страницы")
            If hWnd Then
                hBtn = FindWindowExF(hWnd, 0, StrPtr("Button"), StrPtr("&Нет"))
                    If CBool(hBtn) Then
                        If IniSett_logget = "YES" Then Logget "{Окно 'Ошибка веб-страницы' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                        PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            hWnd = FindWindow(vbNullString, "Предупреждение системы безопасности")
            If hWnd Then
                hBtn = FindWindowExF(hWnd, 0, StrPtr("Button"), StrPtr("Д&а"))
                    If CBool(hBtn) Then
                        If IniSett_logget = "YES" Then Logget "{Окно 'Предупреждение системы безопасности - Сертификат' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                        PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            hWnd = FindWindow(vbNullString, "Сообщение с веб-страницы")
            If hWnd Then
                hBtn = FindWindowExF(hWnd, 0, StrPtr("Button"), StrPtr("ОК"))
                    If CBool(hBtn) Then
                        If IniSett_logget = "YES" Then Logget "{Окно 'Сообщение с веб-страницы' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                        PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            hWnd = FindWindow(vbNullString, "Сообщение с веб-страницы")
            If hWnd Then
                hBtn = FindWindowExF(hWnd, 0, StrPtr("Button"), StrPtr("Отмена"))
                    If CBool(hBtn) Then
                        If IniSett_logget = "YES" Then Logget "{Окно 'Сообщение с веб-страницы' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                        PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            hWnd = FindWindow(vbNullString, "Веб-браузер")
            If hWnd Then
                
                hBtn = FindWindowExF(hWnd, 0, StrPtr("Button"), StrPtr("&Да"))
                    If CBool(hBtn) Then
                        If IniSett_logget = "YES" Then Logget "{Окно 'Веб-браузер' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                        PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            hWnd = FindWindow(vbNullString, "SiteParser (TM) - Предупреждение системы безопасности")
            If hWnd Then
                hBtn = FindWindowExF(hWnd, 0, StrPtr("Button"), StrPtr("&Не устанавливать"))
                    If CBool(hBtn) Then
                        If IniSett_logget = "YES" Then Logget "{Окно 'SiteParser (TM) - Предупреждение системы безопасности' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                        PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            hWnd = FindWindow(vbNullString, "about:blank#start=embed")
            If hWnd Then
                hBtn = FindChilds(hWnd, vbNullString, "ОК")
                    If CBool(hBtn) Then
                          If IniSett_logget = "YES" Then Logget "{Окно 'about:blank#start=embed' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                          PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            hWnd = FindWindow(vbNullString, "SiteParser (TM)")
            If hWnd Then
                hBtn = FindChilds(hWnd, vbNullString, "&Закрыть программу")
                    If CBool(hBtn) Then
                          If IniSett_logget = "YES" Then Logget "{Окно 'SiteParser (TM) - Программа не работает' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                          PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            
          
            hWnd = FindWindow(vbNullString, "SiteParser (TM)")
            If hWnd Then
                hBtn = FindChilds(hWnd, vbNullString, "Закрыть программу")
                    If CBool(hBtn) Then
                          If IniSett_logget = "YES" Then Logget "{Окно 'SiteParser (TM) - Программа не работает' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                          PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
            
            hWnd = FindWindow(vbNullString, "SiteParser (TM)")
            If hWnd Then
                hBtn = FindChilds(hWnd, vbNullString, "&Закрыть программу")
                    If CBool(hBtn) Then
                          If IniSett_logget = "YES" Then Logget "{Окно 'SiteParser (TM) - Программа не работает' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм CommandButtom Click}", 4
                          PostMessage hBtn, BM_CLICK, 0&, 0
                    End If
            End If
 
Exit Sub
ErrorHandler:
    DebugErrWriteLog "frmMain", "tmrKillWindowScript", Err
End Sub
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
22.12.2016, 06:54
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Function killWinProck(strMask As String) As Boolean
        hWDSearch = 0
        EnumWindowsFullName = ""
        EnumWindowsMask = strMask
        EnumWindows AddressOf EnumWindowsProc, ByVal 0&
        
        If hWDSearch Then
            SendMessage hWDSearch, WM_CLOSE, 0, 0
            DestroyWindow (hWDSearch)
            If IniSett_logget = "YES" Then Logget "{Окно '" & EnumWindowsFullName & "' препятствовало дальнейшему парсингу, действие: закрыто - Алгоритм Enum Destroy Windows}", 4
        End If
 
End Function
Добавлено через 1 минуту
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
Public Function EnumWindowsProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
     Dim sSave  As String
     Dim Ret    As Long
        
        Ret = GetWindowTextLength(hWnd)
        sSave = Space(Ret)
        GetWindowText hWnd, sSave, Ret + 1
        EnumWindowsFullName = sSave
        
        '
        ' определяем алгоритм расопзнования окна
              
        '
        
        Select Case IniSett_AlgoritmWinToClose
        
                Case "ЕСЛИ НАЗВАНИЕ НАЧИНАЕТСЯ С МАСКИ"
                    If UCase(Left(sSave, Len(EnumWindowsMask))) = UCase(EnumWindowsMask) Then
                        hWDSearch = hWnd
                        Exit Function
                    End If
                
                Case "ЕСЛИ НАЗВАНИЕ СОДЕРЖИТ МАСКУ"
                    If InStr(1, sSave, EnumWindowsMask) Then
                        hWDSearch = hWnd
                        Exit Function
                    End If
                
                Case "ТОЧНОЕ СОВПАДЕНИЕ С УЧЕТОМ РЕГИСТРА"
                    If sSave = EnumWindowsMask Then
                        hWDSearch = hWnd
                        Exit Function
                    End If
                
                Case "ТОЧНОЕ СОВПАДЕНИЕ БЕЗ УЧЕТА РЕГИСТРА"
                    If UCase(sSave) = UCase(EnumWindowsMask) Then
                        hWDSearch = hWnd
                        Exit Function
                    End If
                
                Case Else
                    If UCase(Left(sSave, Len(EnumWindowsMask))) = UCase(EnumWindowsMask) Then
                        hWDSearch = hWnd
                        Exit Function
                    End If
                    
        End Select
        
        
     
     EnumWindowsProc = True
End Function
Добавлено через 23 секунды
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
Public Function Find_Process_API(strProsses As String) As Integer
 
    Dim hSnapshot&, uProcess As PROCESSENTRY32
    Dim r&, rClose&, hProc&, ProcessName$, ProcessToClose$, ProcessFound As Boolean
    Dim intI As Integer
    Dim retCode
     
    ProcessToClose = strProsses
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
    uProcess.dwSize = Len(uProcess)
    r = Process32First(hSnapshot, uProcess)
 
    Do While r
      ProcessName = Left$(uProcess.szExeFile, IIf(InStr(uProcess.szExeFile, Chr$(0)) > 0, InStr(uProcess.szExeFile, Chr$(0)) - 1, 0))
        If StrComp(ProcessName, ProcessToClose, vbTextCompare) = 0 Then
            ProcessFound = True
            hProc = OpenProcess(&H1, False, uProcess.th32ProcessID)
                Find_Process_API = 1
                rClose = Err.LastDllError
            Exit Do
        End If
       r = Process32Next(hSnapshot, uProcess)
    Loop
     
    CloseHandle hSnapshot
    If ProcessFound Then CloseHandle hProc
 
End Function
Добавлено через 2 минуты
В первой задаче нужно было:
1. определить запущено ли приложени
2. найти поле для ввода пароля
3. ввести пароль
4. нажать "ок"

Во второй задаче нужно было:
1. найти по заголовку окна "окно"
2. закрыть это "окно"

Код - это пример для закрытия массы окон по разным признакам и тд и тп...Уже и не помню что там точно было:

Добавлено через 12 секунд
Надеюсь помог...
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
26.12.2016, 12:48  [ТС]
kreotodr, не работает по вашей методе по причинам:
Кнопки имею одинаковый класс
Все редактируемые поля имеют одинаковый класс
Это все видно из дерева на скриншоте в посте выше.
Как тут быть?

Добавлено через 29 секунд
kreotodr, не работает по вашей методе по причинам:
Кнопки имею одинаковый класс
Все редактируемые поля имеют одинаковый класс
Это все видно из дерева на скриншоте в посте выше.
Как тут быть?
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
26.12.2016, 12:53  [ТС]
Вот, посмотрите по внимательнее
Миниатюры
Заполнение полей сторонней программы  
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
26.12.2016, 14:24  [ТС]
К тому же мне надо заполнить 2 поля, поэтому ваш код не редактируется под что либо.

Добавлено через 3 минуты
И ещё надо чтобы программа все время висела в оперативном и проверяла каждый раз.

Добавлено через 1 минуту
А не как сейчас, один раз проверила и ушла из оперативники...
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
27.12.2016, 20: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
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
Attribute VB_Name = "modEventHook"
Private Declare Function SetWinEventHook Lib "user32" (ByVal eventMin As Long, _
                                                 ByVal eventMax As Long, _
                                                 ByVal hmodWinEventProc As Long, _
                                                 ByVal pfnWinEventProc As Long, _
                                                 ByVal idProcess As Long, _
                                                 ByVal idThread As Long, _
                                                 ByVal dwFlags As Long) As Long
Private Declare Function UnhookWinEvent Lib "user32" (ByVal hWinEventHook As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function CloseWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameW" (ByVal hwnd As Long, _
                                                                          ByVal lpClassName As Long, _
                                                                          ByVal nMaxCount As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExW" (ByVal hWndParent As Long, _
                                                                          ByVal hWndChildAfter As Long, _
                                                                          ByVal lpClassName As Long, _
                                                                          ByVal lpWindowName As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hwnd As Long, _
                                                                        ByVal wMsg As Long, _
                                                                        ByVal wParam As Long, _
                                                                        lParam As Any) As Long
Private Const WM_SETTEXT        As Long = &HC
Private Const EVENT_OBJECT_SHOW As Long = &H8002&
Private Const WM_LBUTTONDOWN    As Long = &H201
Private Const WM_LBUTTONUP      As Long = &H202
 
Dim hEvent As Long
 
' // Начать захват
Public Sub Hook()
    ' Устанавливаем хук на создание окон в системе
    hEvent = SetWinEventHook(EVENT_OBJECT_SHOW, EVENT_OBJECT_SHOW, 0, AddressOf WinEventProc, 0, 0, 0)
End Sub
 
' // Закончить захват
Public Sub Unhook()
    ' Снимаем хук
    UnhookWinEvent hEvent
End Sub
 
' // Функция вызывается при создании окна
Private Sub WinEventProc(ByVal hWinEventHook As Long, _
                         ByVal dwEvent As Long, _
                         ByVal hwnd As Long, _
                         ByVal idObject As Long, _
                         ByVal idChild As Long, _
                         ByVal dwEventThread As Long, _
                         ByVal dwmsEventTime As Long)
    Dim cls As String
    Dim sLn As Long
    cls = Space(255)
    ' Получаем имя класса окна
    sLn = GetClassName(hwnd, StrPtr(cls), Len(cls))
    If sLn Then
        cls = Left(cls, sLn)
        ' Форма подтверждения пароля
        If cls = "WindowsForms10.Window.8.app.0.33c0d9d" Then
            Dim hEdit   As Long
            Dim hBtn    As Long
            Dim hPanel  As Long
            ' Ищем контейнер
            hPanel = FindWindowEx(hwnd, 0, StrPtr("WindowsForms10.Window.8.app.0.33c0d9d"), 0)
          ' hwnd2 = FindWindow(vbNullString, "Проверка доступа")
           If hwnd Then
            ' Ищем поле ввода пароля
           hEdit = FindWindowEx(hPanel, 0, StrPtr("WindowsForms10.EDIT.app.0.33c0d9d"), 0)
            ' Ищем кнопку ОК
            hBtn = FindWindowEx(hPanel, 0, StrPtr("WindowsForms10.BUTTON.app.0.33c0d9d"), StrPtr("ОК"))
           ' Call CloseWindow(hwnd)
                If CBool(hBtn) Then
                ' Вводим текст в поле ввода
                'SendMessage hEdit, WM_SETTEXT, 0, ByVal StrPtr("волга")
                ' Жмем на кнопку
                SendMessage hBtn, WM_LBUTTONDOWN, 1, ByVal 0
                SendMessage hBtn, WM_LBUTTONUP, 0, ByVal 0
         '       Unload frmEventHook
                End If
           End If
    End If
 'Stop
End Sub
Добавлено через 4 минуты
А еще когда нажимаю на stop visual падает без ошибок молча. В чем беда?

Добавлено через 4 часа 2 минуты
И что это такое
решение через графику
И на сколько это лучше?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2016, 20:12
Помогаю со студенческими работами здесь

Заполнение полей DataGrid с помощью др. Data grid
Ситуация: Кликнув на поле в одном DataGrid1 появлялся др. DataGrid2 из которого можна выбрать нужное поле для внесения в основной...

TextBox в Word: одновременное заполнение нескольких полей
День добрый. Ребят, может кто подскажет? Нужно для ворда 2010 следующее: вставляю в разные места документа текстовое поле №1, пишу в...

Заполнение полей в сторонней программе
Начал не давно изучать Delphi. Сейчас делаю программу и нужно заполнить два поля. И как мне это сделать ?

3D из сторонней программы
Здравствуйте! Есть такая задача: создать чертёж и его 3D объект в некоторой программе и сделать доступным пользователю на сайте вращать...

Запуск сторонней программы из программы
Приветствую! Нужна ваша помощь. Есть две программы, одна собирает всю информацию о PC и пишет ее в файл, далее генерирует Private &amp;...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru