Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
VBS

Автоматический ввод цифр в окне inputbox

30.01.2015, 09:47. Показов 4516. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
Set s = CreateObject("WScript.Shell")
c = nVar1 + 200
do
p = InputBox ("бла бла бла","Администратор")
s.sendkeys "8"
wscript.sleep c
s.sendkeys "9"
wscript.sleep c
s.sendkeys "0"
wscript.sleep c
s.sendkeys "8"
wscript.sleep c
s.sendkeys "9"
wscript.sleep c
s.sendkeys "1"
wscript.sleep c
s.sendkeys "0"
wscript.sleep c
s.sendkeys "0"
wscript.sleep c
s.sendkeys "7"
wscript.sleep c
s.sendkeys "3"
wscript.sleep c
s.sendkeys "6"
wscript.sleep c
s.sendkeys "1"
wscript.sleep c
s.sendkeys "9"
wscript.sleep c
s.sendkeys "9"
wscript.sleep c
s.sendkeys "5"
wscript.sleep c
s.sendkeys "0"
wscript.sleep c
s.sendkeys "3"
wscript.sleep c
s.sendkeys "2"
wscript.sleep c
s.sendkeys "8"
wscript.sleep c
loop until p = "8908910073619950328"
MsgBox "Получилось"
Этот скрипт открывает окно InputBox и только после нажатия на закрыть или отмена и т.д., "нажимает" на эти цифры, можно ли сделать так чтобы при открытии InputBox они начинали нажиматься именно в нём?
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2015, 09:47
Ответы с готовыми решениями:

Ввод в InputBox только цифр
Народ, такая проблема, написал программу для решения диффуравнения, все работает как часы.. Но есть одно НО! 1) Мне нужно сделать, чтобы...

Ввод только цифр и запятой в InputBox
Прошу помощи в реализации данной задачи. Нужно сделать, чтобы в InputBox разрешалось вводить только цифры и запятую, иначе выводилась...

Как осуществить ввод букв и цифр вручную в окне написанной программы
Здраствуйте уважаемые коллеги) Редактировала программу под себя, вернее скрипт Все сделала как надо кроме - ввода вручную букв и цифр...

24
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
31.01.2015, 08:44
Цитата Сообщение от Jeka_Osokin Посмотреть сообщение
... можно ли сделать так чтобы при открытии InputBox они начинали нажиматься именно в нём?
Нет. Окно функции InputBox() открывается в модальном режиме, т.е. до момента его закрывания работа сценария приостанавливается.
1
5 / 5 / 3
Регистрация: 16.04.2014
Сообщений: 33
01.02.2015, 12:41
как то так
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
Set fso = createobject ("scripting.filesystemobject")
Set oShell = CreateObject("WScript.Shell")
' ----Создаём временный файл, запускаем его и удаляем----
Set tempfile = fso.CreateTextFile("2.vbs", True)
tempfile.WriteLine("Set s = CreateObject("& Chr(34) &"WScript.Shell"& Chr(34) &")") 
tempfile.WriteLine("wscript.sleep 20") 
tempfile.WriteLine("s.sendkeys "& Chr(34) &"8"& Chr(34)) 
tempfile.WriteLine("wscript.sleep 350") 
tempfile.WriteLine("s.sendkeys "& Chr(34) &"9"& Chr(34)) 
tempfile.WriteLine("wscript.sleep 350") 
tempfile.WriteLine("s.sendkeys "& Chr(34) &"7"& Chr(34)) 
tempfile.WriteLine("wscript.sleep 350") 
tempfile.WriteLine("s.sendkeys "& Chr(34) &"6"& Chr(34)) 
tempfile.WriteLine("wscript.sleep 350") 
tempfile.WriteLine("s.sendkeys "& Chr(34) &"5"& Chr(34)) 
tempfile.Close
 
oShell.Run "wscript 2.vbs", 0, False
' ----/Создаём временный файл, запускаем его и удаляем----
 
Set s = CreateObject("WScript.Shell")
c = nVar1 + 200
p = InputBox ("бла бла бла","Администратор")
 
fso.DeleteFile("2.vbs")
1
251 / 239 / 16
Регистрация: 31.12.2009
Сообщений: 324
01.02.2015, 13:11
xuor, это у вас как-бы классический "лаунчер"
получился (типа пусковая ракетная установка) - один скрипт генерит
другой скрипт, а другой в свою очередь передает параметры первому,
почти "косвенная рекурсия"
0
5 / 5 / 3
Регистрация: 16.04.2014
Сообщений: 33
01.02.2015, 17: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
Set fso = createobject ("scripting.filesystemobject")
Set oShell = CreateObject("WScript.Shell")
c = nVar1 + 200
p = "8908910073619950328"
' ----Создаём временный файл, запускаем его и удаляем----
tempdist = oShell.ExpandEnvironmentStrings("%TEMP%") &  "\2.vbs"
Set tempfile = fso.CreateTextFile(tempdist, True)
tempfile.WriteLine("Set s = CreateObject("& Chr(34) &"WScript.Shell"& Chr(34) &")") 
tempfile.WriteLine("wscript.sleep 20") 
 
For i = 1 To Len(p)
tempfile.WriteLine("s.sendkeys "& Chr(34) & Mid(p,i,1) & Chr(34)) 
tempfile.WriteLine("wscript.sleep " & c) 
Next
 
tempfile.Close
oShell.Run "wscript " & tempdist, 0, False
' ----/Создаём временный файл, запускаем его и удаляем----
 
Set s = CreateObject("WScript.Shell")
c = nVar1 + 200
p = InputBox ("бла бла бла","Администратор")
fso.DeleteFile(tempdist) 
 
MsgBox "Получилось"
1
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
01.02.2015, 18:19
xuor, окно функции InputBox() может потерять фокус. Следовательно, его перед каждым вводом надо, хотя бы попытаться активировать.
1
5 / 5 / 3
Регистрация: 16.04.2014
Сообщений: 33
01.02.2015, 22:56
Лучший ответ Сообщение было отмечено Dragokas как решение

Решение

Поправил
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
Function GetCurrentProcessID()
    With GetObject("winmgmts:root\cimv2:win32_process.Handle='" &_
        CreateObject("WScript.Shell").Exec("rundll32 kernel32,Sleep").ProcessId & "'")
        GetCurrentProcessID = .ParentProcessId
        .Terminate
    End With
End Function
 
Set fso = createobject ("scripting.filesystemobject")
Set oShell = CreateObject("WScript.Shell")
c = nVar1 + 200
p = "8908910073619950328"
pid = GetCurrentProcessID() ' получаем PID запущенного скрипта
 
' ----Создаём временный файл, запускаем его и удаляем----
tempdist = oShell.ExpandEnvironmentStrings("%TEMP%") &  "\2.vbs"
Set tempfile = fso.CreateTextFile(tempdist, True)
tempfile.WriteLine("Set s = CreateObject("& Chr(34) &"WScript.Shell"& Chr(34) &")") 
tempfile.WriteLine("wscript.sleep 20") 
 
For i = 1 To Len(p)
tempfile.WriteLine("s.AppActivate (" & pid & ")") 
tempfile.WriteLine("s.sendkeys "& Chr(34) & Mid(p,1,i) & Chr(34)) 
tempfile.WriteLine("wscript.sleep " & c) 
Next
 
tempfile.Close
oShell.Run "wscript " & tempdist, 0, False
' ----/Создаём временный файл, запускаем его и удаляем----
 
Set s = CreateObject("WScript.Shell")
p = InputBox ("бла бла бла","Администратор")
fso.DeleteFile(tempdist) 
 
MsgBox "Получилось"
2
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
02.02.2015, 02:41
Если не предполагается одновременной работы нескольких экземпляров одного и того же сценария, то для определения PID запущенного сценария можно обойтись только средствами WMI. Пример:
Visual Basic
1
2
3
4
5
Function GetCurrentProcessID()
    For Each objItem In GetObject("winmgmts:root\cimv2").ExecQuery("SELECT CommandLine,Handle FROM Win32_Process")
        If InStr(1, objItem.CommandLine, WScript.ScriptFullName, vbTextCompare) > 0 Then GetCurrentProcessID = objItem.Handle
    Next
End Function
1
1379 / 834 / 89
Регистрация: 08.02.2017
Сообщений: 3,485
Записей в блоге: 1
01.02.2020, 18:10
Цитата Сообщение от Dragokas Посмотреть сообщение
Определить ProcessID текущего запущенного скрипта.
Можно еще так
Visual Basic
1
2
3
4
5
Function GetID
    For Each obj in GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Process")
        if instr(obj.CommandLine,WScript.ScriptFullname) then GetID=obj.processid
    next
end Function
0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
01.02.2020, 19:54
testuser2, тот метод, который, конечно, был мне известен задолго до публикации в том то и дело, что куда быстрее и удобней вашего, ибо исключает обращение к коллекции и цикл.
0
1379 / 834 / 89
Регистрация: 08.02.2017
Сообщений: 3,485
Записей в блоге: 1
02.02.2020, 06:03
Цитата Сообщение от FlasherX Посмотреть сообщение
куда быстрее и удобней вашего
Если замерять пипки, у моей получается короче , то есть лучше /особливо если добавить exit for/, но в целом примерно одинаково, то беж незначительно или не критично. Насчет удобства тут спорить не стану наверное там очень удобнее.. но я лишь привел "простой пример".
0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
02.02.2020, 11:38
testuser2, уж поверьте, никого тут ваша пипка не интересует.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
For i = 0 To 9
  S = S & vbCr & vbCr & "testuser2: " & Speed1 & vbCr & "xuor: " & Speed2
Next
MsgBox Mid(S, 3)
 
Function Speed1
    T = Timer
    For Each Pr in GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Process")
        if InStr(Pr.CommandLine, WSH.ScriptFullname) Then GetID = Pr.processid : Exit For
    next
    Speed1 = CDbl(Timer - T) & " сек"
end Function
 
Function Speed2
    T = Timer
    With GetObject("winmgmts:root\cimv2:win32_process.Handle='" &_
        CreateObject("WScript.Shell").Exec("rundll32 kernel32,Sleep").ProcessId & "'")
        GetCurrentProcessID = .ParentProcessId
        Speed2 = CDbl(Timer - T) & " сек"
        .Terminate
    End With
End Function
Результаты:

Цитата Сообщение от testuser2 Посмотреть сообщение
я лишь привел "простой пример".
Ваш пример — лишь ухудшенная версия нижеследующего.
0
1379 / 834 / 89
Регистрация: 08.02.2017
Сообщений: 3,485
Записей в блоге: 1
02.02.2020, 14:50
Visual Basic
1
2
3
4
5
Function GetID 
    For Each pr in GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Process where name='wscript.exe'")
        if InStr(pr.CommandLine, WSH.ScriptFullname) Then GetID = pr.processid : Exit For end if
    next
end Function
Ну мне торопиться не куда и всякие непонятные CDbl'ы не нужны, разве что строчечку подправить, хватит и того. Ассемблерщиков бы на вас натраваить..
Изображения
 
0
1379 / 834 / 89
Регистрация: 08.02.2017
Сообщений: 3,485
Записей в блоге: 1
02.02.2020, 16:25
Цитата Сообщение от testuser2 Посмотреть сообщение
'if InStr(pr.CommandLine, WSH.ScriptFullname) Then GetID = pr.processid : Exit For end if
Visual Basic
1
GetID = pr.processid :Exit For
0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
02.02.2020, 16:55
Цитата Сообщение от testuser2 Посмотреть сообщение
всякие непонятные CDbl'ы не нужны
Совет — если вы чего-то не знаете, то лучше помалкивайте. СDbl приводит экспоненциальную запись, которую периодически возвращает Timer, в нормальный читабельный вид.

Ваш скриншот мне ни о чём не говорит. Вы мне скриншот результатов с моим кодом приведите, добавив where name='wscript.exe' в 8 строку.

И вычёркивать проверку тут нельзя, т.к. скриптов может быть запущено сколько угодно.
А это значит, что даже без вычёркивания в случае запуска одного и того же скрипта ваш код становится неактуальным.
0
1379 / 834 / 89
Регистрация: 08.02.2017
Сообщений: 3,485
Записей в блоге: 1
02.02.2020, 17:27
Цитата Сообщение от FlasherX Посмотреть сообщение
И вычёркивать проверку тут нельзя, т.к. скриптов может быть запущено сколько угодно.
А это значит, что даже без вычёркивания в случае запуска одного и того же скрипта ваш код становится неактуальным.
каюсь, ступанул

Цитата Сообщение от FlasherX Посмотреть сообщение
Вы мне скриншот результатов с моим кодом приведите, добавив
лучше приведите пример практической пользы от десятикратного запроса собственного id скрипта
0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
02.02.2020, 20:02
Цитата Сообщение от testuser2 Посмотреть сообщение
лучше приведите пример практической пользы от десятикратного запроса собственного id скрипта
Функции Speed1/2 как бы должны намекать, что они исключительно тестовые. 10 раз делается для снятия всяких сомнений об одномоментной сбойности скоростей (запуск шпинделя, процессорная нагрузка др. процессами, высвобождение своп и т. п.).

Так уж и быть, дам вам на тест вариант чуть побыстрее и поточнее, т. к. кроме wscript может быть cscript:
Visual Basic
1
2
3
4
5
6
7
8
Function Speed1
    T = Timer
    For Each Pr in GetObject("winmgmts:root\cimv2").ExecQuery("SELECT Handle FROM Win32_Process WHERE CommandLine='" &_
    Replace(CreateObject("WSMan.Automation").CommandLine, "\", "\\") & "'")
        PID = Pr.Handle
    Next
    Speed1 = CDbl(Timer - T) & " сек"
end Function
Добавлено через 2 часа 15 минут
Ну, так что? Теста не будет? Ваш скриншот официально считаем липой? ))
0
03.02.2020, 03:43

Не по теме:

Цитата Сообщение от FlasherX Посмотреть сообщение
Так уж и быть, дам вам на тест вариант чуть побыстрее и поточнее
Не мне, люди пусть пользуются, мене и так хорошо, 0,047 с куда с добром, чай не опоздаю ни куда! Та и не быстрее он ни на грамм.
Цитата Сообщение от FlasherX Посмотреть сообщение
Ваш скриншот официально считаем липой?
У вас мож и лицензия есть на то чтоб "официально" или сертитикат какой?

0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
03.02.2020, 10:28
testuser2, а вы, батенька, тот ещё демагог. Всё через решето воду льёте, а толку ноль.
Значит, реальных результатов теста мы не увидим. Публика, полагаю, цену вашим словам отведёт соответствующую...
0
1379 / 834 / 89
Регистрация: 08.02.2017
Сообщений: 3,485
Записей в блоге: 1
03.02.2020, 11:30
Цитата Сообщение от FlasherX Посмотреть сообщение
а вы, батенька, тот ещё демагог. Всё через решето воду льёте, а толку ноль.
А чем, спрашивается вы занимаетесь? Какой смысл обсуждать, через сито вода быстрей прольется или через дуршлаг, проверять, доказывать..?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2020, 11:30
Помогаю со студенческими работами здесь

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

Запрет на ввод в InputBox
Всем привет! Помогите, пожалуйста) Мой вопрос: как программно запретить ввод некоторых символов(а именно ": \ / ? * ") в...

Inputbox ввод секунд
Здравствуйте, уважаемые форумчане! Подскажите ка с помощью функции InputBox ввести секунды в формате "h:mm:ss". Например:...

ввод даты с помощью Inputbox
Добрый день создаю документ скриптом по нажатию кнопки. поля (их всего 4) заполняются с помощью inputbox после чего документ...

Ограничить ввод букв в InputBox
Здравствуйте, помогите пожалуйста, мне нужно ограничить ввод букв английских и русских в InputBox.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru