Форум программистов, компьютерный форум CyberForum.ru

Visual Basic

Войти
Регистрация
Восстановить пароль
 
blackeangel
4 / 4 / 0
Регистрация: 22.07.2015
Сообщений: 372
#1

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

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

Всем привет. Всем рано или поздно надоедает заполнять одни и те же поля в той или иной программе просящей пароль и логин каждый раз. Хорошо если 1-2 раза в день, а если сотни раз?
Давайте вместе подумаем и решим эту задачу.
На сколько понимаю придется декларировать что то типа ActiveWindows или FindWindows.
Пусть логин и пароль лежат в текстовом файле рядом с программой.
Как найти поля в которые вводить? Да вообще что да как?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2016, 20:37     Заполнение полей сторонней программы
Посмотрите здесь:

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

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

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

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

Индекс текстовых полей - Visual Basic
Всем привет! На форме есть текстовые поля всего 10 шт. Имена txtData(Index).Text Вопрос, как определить, что на каком-то из полей...

Очистка текстовых полей - Visual Basic
Друзья, я только начал учиться. Поэтому вопрос Простейший. Итак, 2 текстбокса 2 кнопки. Нажатием "Command1" я задаю в текстбоксах...

Обьеденить 18 текстовых полей в одном - Visual Basic
Всем привет. Я в программировании новичек,поэтому стартовых знаний...эмм..проще говоря мне очень далеко до совершенства на языке VB. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
The trick
Модератор
6934 / 2398 / 741
Регистрация: 22.02.2013
Сообщений: 3,449
Записей в блоге: 74
20.12.2016, 21:04     Заполнение полей сторонней программы #2
Как из программы управлять другой, уже запущенной программой
kreotodr
17 / 17 / 8
Регистрация: 15.08.2014
Сообщений: 425
21.12.2016, 14:26     Заполнение полей сторонней программы #3
Цитата Сообщение от blackeangel Посмотреть сообщение
Всем привет. Всем рано или поздно надоедает заполнять одни и те же поля в той или иной программе просящей пароль и логин каждый раз. Хорошо если 1-2 раза в день, а если сотни раз?
Давайте вместе подумаем и решим эту задачу.
На сколько понимаю придется декларировать что то типа ActiveWindows или FindWindows.
Пусть логин и пароль лежат в текстовом файле рядом с программой.
Как найти поля в которые вводить? Да вообще что да как?
Если актуально могу помочь...
Когда то потратил несколько дней на это...

p/s как всегда спасибо The trick сильно помог в этом...
blackeangel
4 / 4 / 0
Регистрация: 22.07.2015
Сообщений: 372
21.12.2016, 14:35  [ТС]     Заполнение полей сторонней программы #4
kreotodr, все актуально. Что нужно для этого и где брать?
kreotodr
17 / 17 / 8
Регистрация: 15.08.2014
Сообщений: 425
21.12.2016, 14:38     Заполнение полей сторонней программы #5
все сюда кидайте...
я поясню...
Как минимум понадобится Spy++

Добавлено через 2 минуты
вот кстати полный работающий листинг на примере программы ДОМАШНЯЯ БУХГАЛТЕРИЯ
Как из программы управлять другой, уже запущенной программой
blackeangel
4 / 4 / 0
Регистрация: 22.07.2015
Сообщений: 372
21.12.2016, 15:23  [ТС]     Заполнение полей сторонней программы #6
kreotodr, вот данные из spy.
Программа сама находится на сервере, пользователь запускается лишь ярлык у себя на ПК.
Миниатюры
Заполнение полей сторонней программы  
blackeangel
4 / 4 / 0
Регистрация: 22.07.2015
Сообщений: 372
21.12.2016, 15:24  [ТС]     Заполнение полей сторонней программы #7
Заполнить надо имя и пароль, и нажать на регистрация
kreotodr
17 / 17 / 8
Регистрация: 15.08.2014
Сообщений: 425
21.12.2016, 15:27     Заполнение полей сторонней программы #8
а ну так просто...
сначала детектите с помощю 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
blackeangel
4 / 4 / 0
Регистрация: 22.07.2015
Сообщений: 372
21.12.2016, 16:08  [ТС]     Заполнение полей сторонней программы #9
kreotodr, 2 вопроса:
1. Как этот кусок кода тестить?
2. А по-русски?

Добавлено через 32 минуты
Распишите кто откуда берется?
Кто есть ищменяемые переменные и т.п.
kreotodr
17 / 17 / 8
Регистрация: 15.08.2014
Сообщений: 425
21.12.2016, 18:26     Заполнение полей сторонней программы #10
вечером сброшу готовый проект....
kreotodr
17 / 17 / 8
Регистрация: 15.08.2014
Сообщений: 425
22.12.2016, 06:41     Заполнение полей сторонней программы #11
Вот он...
Вложения
Тип файла: rar prjEventHook.rar (5.3 Кб, 5 просмотров)
kreotodr
17 / 17 / 8
Регистрация: 15.08.2014
Сообщений: 425
22.12.2016, 06:42     Заполнение полей сторонней программы #12
И еще один
Вложения
Тип файла: rar Предупреждение системы безопасности Windows.rar (5.7 Кб, 5 просмотров)
kreotodr
17 / 17 / 8
Регистрация: 15.08.2014
Сообщений: 425
22.12.2016, 06:49     Заполнение полей сторонней программы #13
Вот что то еще...для диалоговых окон..

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
kreotodr
17 / 17 / 8
Регистрация: 15.08.2014
Сообщений: 425
22.12.2016, 06:54     Заполнение полей сторонней программы #14
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 секунд
Надеюсь помог...
blackeangel
4 / 4 / 0
Регистрация: 22.07.2015
Сообщений: 372
26.12.2016, 12:48  [ТС]     Заполнение полей сторонней программы #15
kreotodr, не работает по вашей методе по причинам:
Кнопки имею одинаковый класс
Все редактируемые поля имеют одинаковый класс
Это все видно из дерева на скриншоте в посте выше.
Как тут быть?

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

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

Добавлено через 1 минуту
А не как сейчас, один раз проверила и ушла из оперативники...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2016, 20:12     Заполнение полей сторонней программы
Еще ссылки по теме:

Ошибка редактирования полей в RECORDSET - Visual Basic
Работаю в VB6 + ADO + ACCESS Клиентский курсор Добавление записи: При присваивании пустого значения TEXTBOX числовому полю...

Дополнение пробелами текстовых полей - Visual Basic
Как сделать чтобы при запросе к базе поля выдавались с фактическими значениями, а не дополненные пробелами до фиксированной длины. Где-то...

Проверка на заполненность текстовых полей - Visual Basic
Создаем форму с полями для ввода в документ. Заранее в документе делаю закладки. На форме есть две кнопки &quot;отменить&quot; и &quot;выполнить&quot;. Вот для...

Макрос для заполнения полей в декларации - Visual Basic
Уважаемые, нужна помощь, есть бланк налоговой декларации в Exel - надо создать макрос который будет брать данные из листа на котором будут...

Произвольное количество полей в отчете (не DataReport) - Visual Basic
Уважаемые Форумчане! Я столкнулся со следующей проблемой. При создании отчетов я использую встроенный DataReport. Все отлично, все...


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

Или воспользуйтесь поиском по форуму:
blackeangel
4 / 4 / 0
Регистрация: 22.07.2015
Сообщений: 372
27.12.2016, 20:12  [ТС]     Заполнение полей сторонней программы #18
Почему не работает это
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 минуты
И что это такое
решение через графику
И на сколько это лучше?
Yandex
Объявления
27.12.2016, 20:12     Заполнение полей сторонней программы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru