Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBS обращение к объекту по названию / 25 сообщений из 28, страница 1 из 2
10.06.2015, 11:39
    #38980928
VBS обращение к объекту по названию
Задача:
В некоем ПО найти и нажать кнопку "Привет, мир!".
Были попытки сделать клик мышью по абсолютным координатам, но этот вариант слишком ненадежен.
Подскажите пожалуйста, есть ли способ сделать нажатие левой кнопки мыши по кнопке, найдя ее по названию?
...
Рейтинг: 0 / 0
10.06.2015, 11:52
    #38980947
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
Можно, но VBS тут не помощник.
...
Рейтинг: 0 / 0
10.06.2015, 11:53
    #38980948
VBS обращение к объекту по названию
Бро, тебе AutoIt нужен?
...
Рейтинг: 0 / 0
10.06.2015, 12:01
    #38980963
VBS обращение к объекту по названию
Не менее важная структура,

Видимо, нужен.
Придется изучать...
Спасибо
...
Рейтинг: 0 / 0
10.06.2015, 12:41
    #38980993
VBS обращение к объекту по названию
Кстати, может WInAPI можно как-то использовать?
...
Рейтинг: 0 / 0
10.06.2015, 12:55
    #38981015
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
Важная бюрократическая структураЗадача:
В некоем ПО найти и нажать кнопку "Привет, мир!".
Были попытки сделать клик мышью по абсолютным координатам, но этот вариант слишком ненадежен.
Подскажите пожалуйста, есть ли способ сделать нажатие левой кнопки мыши по кнопке, найдя ее по названию?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Option Explicit
 
Function TestAdd(A, B)
TestAdd = A + B
End Function
 
Function TestSubstract(A, B)
TestSubstract = A - B
End Function
 
Sub Test(FuncName, K, N)
MsgBox Eval(FuncName & "(K, N)")
End Sub
 
 
Test "TestAdd", 100, 40        ' на экране 140
Test "TestSubstract", 100, 40  ' на экране 60
...
Рейтинг: 0 / 0
10.06.2015, 13:14
    #38981042
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
Важная бюрократическая структураКстати, может WInAPI можно как-то использовать?из VBS? только через com-оболочку. по интернету гуляют com-оболочки для WInAPI разной степени паршивости.
...
Рейтинг: 0 / 0
11.06.2015, 09:06
    #38981817
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
Dynwrapx, одна из COM-оболочки, довольно удобная и глюков не замечал
...
Рейтинг: 0 / 0
11.06.2015, 10:19
    #38981890
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
AntonariyВажная бюрократическая структураКстати, может WInAPI можно как-то использовать?из VBS? только через com-оболочку. по интернету гуляют com-оболочки для WInAPI разной степени паршивости.

Интересно, а как вы структуры собираетесь передавать и получать в VBS? Каждая вторая WinAPI функция работает со структурами.
...
Рейтинг: 0 / 0
11.06.2015, 11:33
    #38982007
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
EoltAntonariyпропущено...
из VBS? только через com-оболочку. по интернету гуляют com-оболочки для WInAPI разной степени паршивости.

Интересно, а как вы структуры собираетесь передавать и получать в VBS? Каждая вторая WinAPI функция работает со структурами.Через объекты аналогичной структуры, например.
Кроме того, я думаю, что с готовой структурой VBS работать сможет. Получить пустую структуру через функцию, заполнить, передать обратно.
...
Рейтинг: 0 / 0
11.06.2015, 11:43
    #38982027
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
AntonariyЧерез объекты аналогичной структуры, например.
Кроме того, я думаю, что с готовой структурой VBS работать сможет. Получить пустую структуру через функцию, заполнить, передать обратно.

VBS может работать со структурой, только если она описана в зарегеной .TLB библиотеке. А передавать указатель на нее, только через COM-враппер в котором есть VarPtr функция. Но это полная фигня, слишком много гемороя. Или таскать вместе со скриптом враппер и какую-нибудь здоровенную WinApiForVb.tlb, где есть почти все структуры для WinAPI. Все это регать перед запуском скрипта. Проще уж на VB6 программу написать.
...
Рейтинг: 0 / 0
11.06.2015, 11:59
    #38982060
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
EoltПроще уж на VB6 программу написать.важные бюрократические структуры не ищут легких путей!
...
Рейтинг: 0 / 0
11.06.2015, 12:17
    #38982082
VBS обращение к объекту по названию
AntonariyEoltПроще уж на VB6 программу написать.важные бюрократические структуры не ищут легких путей!

Важные бюрократические структуры не представляют как это вообще можно осуществить, кроме как использовать программу, которая повторяет действия мыши...
...
Рейтинг: 0 / 0
11.06.2015, 12:28
    #38982102
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
Важные бюрократические структуры нанимают подрядчиков ))
...
Рейтинг: 0 / 0
11.06.2015, 12:30
    #38982111
VBS обращение к объекту по названию
Shocker.ProВажные бюрократические структуры нанимают подрядчиков ))

Это когда бюджет не попилен еще.
Я понимаю, что все это выглядит глупо, но пока не вижу иного выхода как лазить по форумам и спрашивать знающих.
...
Рейтинг: 0 / 0
11.06.2015, 12:39
    #38982126
VBS обращение к объекту по названию
EoltVBS может работать со структурой, только если она описана в зарегеной .TLB библиотеке. А передавать указатель на нее, только через COM-враппер в котором есть VarPtr функция. Но это полная фигня, слишком много гемороя. Или таскать вместе со скриптом враппер и какую-нибудь здоровенную WinApiForVb.tlb, где есть почти все структуры для WinAPI. Все это регать перед запуском скрипта.Фу-фу-фу. Православный VBS-ный способ должен быть в формировании структуры как строки.
...
Рейтинг: 0 / 0
11.06.2015, 12:51
    #38982141
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
Важная бюрократическая структураAntonariyпропущено...
важные бюрократические структуры не ищут легких путей!

Важные бюрократические структуры не представляют как это вообще можно осуществить, кроме как использовать программу, которая повторяет действия мыши...элементарно, если забыть про vbs.

1) найти процесс
2) найти по названию среди его окон верхнего уровня то, в котором находится искомая кнопка. кнопка же не бегает по разным окнам, всегда в одном месте?
3) найти среди его дочерних окон кнопку по названию. или еще каким уникальным признакам.
4) нажать
...
Рейтинг: 0 / 0
11.06.2015, 13:12
    #38982179
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
Не менее важная структураФу-фу-фу. Православный VBS-ный способ должен быть в формировании структуры как строки.

Чтобы сформировать структуру из байтового массива, нужно чтобы в языке была поддержка указателей и типов. Ни того, ни другого в VBS нет. Странно, что ты этого не понимаешь.
...
Рейтинг: 0 / 0
11.06.2015, 14:19
    #38982280
VBS обращение к объекту по названию
Eolt,

ты за деревьями лес потерял. Нужен способ записать/считать непрерывный участок памяти. Он есть, языковой (String, ChrW, AscW, Mid, &). Нужен способ вычисления адреса участка памяти (строки), вызова функции из dll, передачи ей/из неё параметров. Он есть, внеязыковой (COM-оболочка).

Странно, что ты этого не понимаешь.
...
Рейтинг: 0 / 0
11.06.2015, 15:35
    #38982409
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
Не менее важная структураEolt,

ты за деревьями лес потерял. Нужен способ записать/считать непрерывный участок памяти. Он есть, языковой (String, ChrW, AscW, Mid, &). Нужен способ вычисления адреса участка памяти (строки), вызова функции из dll, передачи ей/из неё параметров. Он есть, внеязыковой (COM-оболочка).

Странно, что ты этого не понимаешь.

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1160829&msg=17759180
...
Рейтинг: 0 / 0
11.06.2015, 15:45
    #38982425
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
EoltНе менее важная структураEolt,

ты за деревьями лес потерял. Нужен способ записать/считать непрерывный участок памяти. Он есть, языковой (String, ChrW, AscW, Mid, &). Нужен способ вычисления адреса участка памяти (строки), вызова функции из dll, передачи ей/из неё параметров. Он есть, внеязыковой (COM-оболочка).

Странно, что ты этого не понимаешь.

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1160829&msg=17759180 ты правда не понимаешь.
со структурой можно работать как со строкой.
...
Рейтинг: 0 / 0
11.06.2015, 16:29
    #38982497
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
EoltVBS может работать со структурой, только если она описана в зарегеной .TLB библиотеке
Не только. В своё время пробовал такой код:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim DX, St, pSt
Set DX = CreateObject("DynamicWrapperX") 'Создаём объект

St = DX.Space(8, "") 'Данный String - будет 16 байтовым буфером структуры
pSt = DX.StrPtr(St)

DX.Register "kernel32", "GetLocalTime", "i=l"
DX.GetLocalTime pSt 'Заполняем структуру вызовом API

'Читаем по 2 байта из указателя
MsgBox "Год: " & DX.NumGet(pSt, 0, "n") & vbCrLf & _
	   "Месяц: " & DX.NumGet(pSt, 2, "n") & vbCrLf & _
	   "День: " & DX.NumGet(pSt, 6, "n") & vbCrLf & _
	   "Часы: " & DX.NumGet(pSt, 8, "n") & vbCrLf & _
	   "Минуты: " & DX.NumGet(pSt, 10, "n") & vbCrLf & _
	   "Секунды: " & DX.NumGet(pSt, 12, "n"), vbInformation
...
Рейтинг: 0 / 0
11.06.2015, 16:35
    #38982507
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
Может и не красиво и не ТРУЪ, но 14 кб DLL решают проблемы, бесплатно и не сложно (относительно)
...
Рейтинг: 0 / 0
11.06.2015, 16:40
    #38982515
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
AntonariyEolt http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1160829&msg=17759180 ты правда не понимаешь.
со структурой можно работать как со строкой.

Да со структурой можно работать как со строкой. бюрократическая структура просто переписал мой пост своими словами.
Но дело в том, что строк в VBS нет, есть VARINAT, а это значит что надо получить на него указатель, потом отсчитать смещение до BSTR bstrVal; и получить указатель на строку. Которая в VBS не массив байтов, а массив Unicode, и все функции VBS работают только с Unicode и всегда возвращают WORD, два байта на каждый строковый "символ". Соответственно, собрать бинарную ANSI строку в памяти средствами VBS нельзя. Нужен враппер и .TLB чтобы использовать готовые структуры.
...
Рейтинг: 0 / 0
11.06.2015, 16:45
    #38982520
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS обращение к объекту по названию
VSVLAD
Код: vbnet
1.
Set DX = CreateObject("DynamicWrapperX") 'Создаём объект



Опять воду в ступе...
То что враппер (или .TLB) может вернуть VARIANT с заполненным байтовым массивом содержащим структуру - это всем понятно.
А то что создать эту байтовую строку средствами VBSCRIPT - нельзя, похоже не всем.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBS обращение к объекту по названию / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]