Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript

Модерирует : ShIvADeSt

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AndVGri

Цитата:
Вот ещё версия

О, то что нужно, спасибо!
 
P.S
А по поводу InputBox есть идеи? там тоже нельзя узнать нажал ли юзер Отмена, или он просто не ввёл ничего и нажал OK

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:54 28-12-2007
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
Так InputBox при нажатии "Отмена" возвращает пустую строку. Так что ориентируйся на это. С наступающим

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 03:51 29-12-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
С наступающим всех!
 
Подскажите как средствами vbs получить PID процесса и убить его?

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:21 29-12-2007
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AndVGri

Цитата:
InputBox при нажатии "Отмена" возвращает пустую строку

В этом то и проблема...
 
Во пример:
 

Код:
Do
    Input = InputBox("Type something:", "Hi", "Default")
    If Input = "" Then Exit Do
    MsgBox "You typed: " & Input
Loop

 
Если ввести что-то, и нажать ОК, то видим сообщение с тем что набрали, если нажать отмена, то выходим с цикла, но если ничего не ввести, и нажать ОК, то также выходим с цикла, я хотел бы узнать, что пользователь хочет оставить пустую строку, но продолжить дальше, а не отменить операцию.
 
С наступающим!
 
Maza Faka

Цитата:
как средствами vbs получить PID процесса и убить его?

Я нашёл только средствами WMI:
 

Код:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'Notepad.exe'")
 
For Each objProcess in colProcessList
    objProcess.Terminate()
Next

 
И тебя с наступающим!

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 11:24 29-12-2007
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
Ну так и спроси через

Код:
 
If Input = "" Then
    If MsgBox("Вы ничего не ввели. Отменить выполение?", _
        vbQuestion + vbYesNo, "Внимание") = vbYes Then
        Exit Do
    End If
End If
 

Хотя, если алгоритм предусматривает получение пустой строки из InputBox, то не знаю как обойти. Может в описании для этого случая и использовать Default, как действие по умолчанию?

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 11:42 29-12-2007 | Исправлено: AndVGri, 11:53 29-12-2007
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AndVGri

Цитата:
так и спроси через

Это единственный способ, но не очень удобьный, имхо.
 

Цитата:
использовать Default, как действие по умолчанию?

Но как определить что юзер ввёл Default, и не нажал Отмена?
 
Ладно, не критично, мне это по сути для общего круга знании нужно было.
Спасибо ещё раз за помощь.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 12:21 29-12-2007
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR

Цитата:
Input = InputBox("Type something:", "Hi", "Default")

Так "Default" и есть текст по умолчанию, если пользователь ничего не вводил, то в Input = "Default", если он нажал "Ок", если нажата "Отмена", то будет Input = "". Если же стёр "Default" и ничего не ввёл, то  Input = "", что будем считать эквивалентным "Отмена"

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 15:06 29-12-2007
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Если же стёр "Default" и ничего не ввёл, то  Input = "",

Будет ровняться "" вне зависимости от того, нажал ли юзер "ОК" или "Отмена" - поэтому определить что конкретно он нажал невозможно, мне например нужно узнать что юзер нажал ОК, но при этом хочет использовать значение по умолчанию, и этого проверить немогу, т.к он мог нажать Отмена - вот если бы функция устанавливала уровень ошибочности (Err.Number) при нажатии Отмена, тогда было бы удобнее.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:23 29-12-2007
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
chainick2006
Цитата:
как можно получить список зарегистрированных в системе COM-объектов

Код:
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ClassicCOMClassSetting", , 48)
For Each objItem In colItems
  If Len(objItem.ProgId) > 0 And (Len(objItem.InprocServer32) > 0 Or Len(objItem.LocalServer32) > 0) Then
  Wscript.Echo "Description: " & objItem.Description
    If Len(objItem.VersionIndependentProgId) > 0 Then
      Wscript.Echo "VersionIndependentProgId: " & objItem.VersionIndependentProgId
    Else
      Wscript.Echo "ProgId: " & objItem.ProgId
    End If
    Wscript.Echo "ComponentId: " & objItem.ComponentId
    If Len(objItem.InprocServer32) > 0 Then
      Wscript.Echo "InprocServer32: " & objItem.InprocServer32
    Else
      Wscript.Echo "LocalServer32: " & objItem.LocalServer32
    End If
    Wscript.Echo "------------------------------------"
  End If
Next


Цитата:
как получить список всех доступных объектов сервера АТ и получить список всех членов (методы, свойства) нужного мне объекта, например, AT.Application?
Это сделать значительно сложнее, т.к. все свойства и методы COM объекта хранятся не в реестре, а внутри файла dll (ocx, exe), который эти методы предоставляет. Некоторые проги (тот же PrimalScript, Adersoft Script Editors и т.п.) позволяют это сделать. Есть и самостоятельные утилиты (например, MS OLEView), которые могут это делать...
Вот тут я нашел скрипт (использующий TLBINF32.DLL) который так же позволяет исследовать внутренности объекта.
В общем, вариантов решений - уйма, но, увы, многие - платные , "глючат" по страшному, используют для работы монстроидальные библиотеки, выдают инфу в неудобоваримом виде...
В общем, ссылок я могу накидать кучу, но порекомендовать что то идеальное - увы, не смогу...

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 17:48 30-12-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR

Цитата:
Я нашёл только средствами WMI:

Сгодится! Спасибо!  

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:36 31-12-2007
IVAN8

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Есть скрипт для Indesign, который открывает линкованые eps в MathType.
 
Dim myInDesign
 Dim MySel
 Set myInDesign = CreateObject("InDesign.Application")
 Set MySel = myInDesign.Selection
 fname = MySel.Item(1).Graphics.Item(1).ItemLink.FilePath
Set WshShell = CreateObject("WScript.Shell")
ReturnCode = WshShell.Run("MathType.exe """+fname+"""", 1, True)
 
Как дописать или переделать скрипт так, чтобы MathType печатал формулу в PDF и закрывался.  
 
Задача, на самом деле, состоит в том, чтобы из готовых eps’ов сделать PDF.
Я пытался просто печатать файлы списками, но в реестре есть только это
 
HKEY_CLASSES_ROOT\Applications\MathType.exe\shell\open\command
"C:\Program Files\MathType\MathType.exe" "%1"
 
Может, есть возможность написать некую программу, которая бы открывала с помощью MathType файлы из указанной папки, а затем отправляла на печеть?
 
Буду признателен за советы.

Всего записей: 42 | Зарегистр. 18-07-2003 | Отправлено: 19:20 04-01-2008
DonkeyHottt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, как с помощью vbs сделать активным окно, а потом закрыть его?
Скрипт уже есть просто надо дописать в него это дополнение.
Заранее спасибо.

Всего записей: 104 | Зарегистр. 26-12-2004 | Отправлено: 19:15 12-01-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DonkeyHottt

Цитата:
как с помощью vbs сделать активным окно, а потом закрыть его?

 
Мне не известен vbs метод закрытия окна, но можно использовать сочетание клавиш Alt + F4...
 

Код:
Set WshShell = CreateObject("WScript.Shell")
 
iActive = WinWaitActivate "Title", 5
If iActive = 1 Then WshShell.SendKeys("%{F4}")
 
Function WinWaitActivate(Title, TimeOut)
    TimerInit = Timer
    iRet = WshShell.AppActivate(Title)
    While iRet = 0
        Wscript.Sleep(10)
        iRet = WshShell.AppActivate(Title)
        If TimeOut > 0 And (Timer - TimerInit) >= TimeOut Then
            WinWaitActivate = 0
            Exit Function
        End If
    WEnd
    WinWaitActivate = 1
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:59 12-01-2008
DonkeyHottt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
    Спасибо за ответ, но к сожалению мои скромные знания vbs, а точнее их полное отсутствие не позволили воспользоваться им в полной мере. Дело вообще вот в чем.
Есть некий скрипт, который запускает программу (база данных Access) и вводит логин и пароль а потом нажимает несколько раз "OK" чтобы убрать всякие всплывающие окошки во время старта базы. И все, но остается одно окно (кстати у него нет кнопки на панели задач, как это для vbs считается окном или что это) и закрывать его приходится в ручную тыкая мышом в крестик. Хотелось бы автоматизировать этот процесс. Скрипт писал не я. Я только нашел похожий и методом тыка адаптировал его для своих целей. Но остается это окно...
    Я добавил Ваш код в конец своего. Для опытов использую "PrimalScript". В Вашем коде заменил "Title" на название своего окна "Copy file (for non-reg users)"
В названии окна есть круглые скобки.
Получил:

Код:
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\...\2000.mdb"
WScript.Sleep 3000
WshShell.SendKeys "123"
WScript.Sleep 300
WshShell.SendKeys "{tab}"
WScript.Sleep 300
WshShell.SendKeys "456"
WScript.Sleep 300
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
Set WshShell = CreateObject("WScript.Shell")  
 
iActive = WinWaitActivate "Copy file (for non-reg users)", 5  
If iActive = 1 Then WshShell.SendKeys("%{F4}")  
 
Function WinWaitActivate(Copy file (for non-reg users), TimeOut)  
    TimerInit = Timer  
    iRet = WshShell.AppActivate(Copy file (for non-reg users))  
    While iRet = 0  
        Wscript.Sleep(10)  
        iRet = WshShell.AppActivate(Copy file (for non-reg users))  
        If TimeOut > 0 And (Timer - TimerInit) >= TimeOut Then  
            WinWaitActivate = 0  
            Exit Function  
        End If  
    Wend  
    WinWaitActivate = 1  
End Function

При запуске появляется ошибка в строке

Код:
iActive = WinWaitActivate "Copy file (for non-reg users)", 5

"Предпологается наличие окончания инструкции"
А почему, сам не разберусь...

Всего записей: 104 | Зарегистр. 26-12-2004 | Отправлено: 15:02 13-01-2008 | Исправлено: DonkeyHottt, 15:04 13-01-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DonkeyHottt

Цитата:
В Вашем коде заменил "Title" на название своего окна "Copy file (for non-reg users)"

Заменить то надо было, но не в самой же функции
 

Код:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\...\2000.mdb"
WScript.Sleep 3000
WshShell.SendKeys "123"
WScript.Sleep 300
WshShell.SendKeys "{tab}"
WScript.Sleep 300
WshShell.SendKeys "456"
WScript.Sleep 300
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
WshShell.SendKeys "{Enter}"
 
iActive = WinWaitActivate "Copy file (for non-reg users)", 5
If iActive = 1 Then WshShell.SendKeys("%{F4}")
 
Function WinWaitActivate(Title, TimeOut)
    TimerInit = Timer
    iRet = WshShell.AppActivate(Title)
    While iRet = 0
        Wscript.Sleep(10)
        iRet = WshShell.AppActivate(Title)
        If TimeOut > 0 And (Timer - TimerInit) >= TimeOut Then
            WinWaitActivate = 0
            Exit Function
        End If
    Wend
    WinWaitActivate = 1
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 16:14 13-01-2008 | Исправлено: ViSiToR, 16:41 13-01-2008
DonkeyHottt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
Опять этаже ошибка и в этой же строке.

Код:
iActive = WinWaitActivate "Copy file (for non-reg users)", 5

"Предпологается наличие окончания инструкции"
Компилятор не доходит до функции помоему. А что ему надо?

Всего записей: 104 | Зарегистр. 26-12-2004 | Отправлено: 18:16 13-01-2008
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DonkeyHottt

Цитата:
"Предпологается наличие окончания инструкции"  
Компилятор не доходит до функции помоему. А что ему надо?

Ему нужны скобки в функции:

Код:
iActive = WinWaitActivate ("Copy file (for non-reg users)", 5)


Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 19:40 13-01-2008
DonkeyHottt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush

Цитата:
Ему нужны скобки в функции:

точно! Сработало.
Окно закрылось, правда вместе со всей базой

Всего записей: 104 | Зарегистр. 26-12-2004 | Отправлено: 20:42 13-01-2008
DonkeyHottt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Этот код почему-то 2 раза нажимает Alt-F4.
То есть, если я руками запускаю базу и после старта делаю это окно активным мышкой и потом нажимаю Alt-F4 один раз, то закрывается только это маленькое окно, а вся база остается, если еще раз нажать Alt-F4, то уже закроется вся база. Вот и получается, что код нажимает Alt-F4 2 раза. Но почему, сам не пойму.

Всего записей: 104 | Зарегистр. 26-12-2004 | Отправлено: 19:33 15-01-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DonkeyHottt

Цитата:
получается, что код нажимает Alt-F4 2 раза

Скрипт посылает один раз, видимо посылает именно когда главное окно активно.
 
Какой заголовок у главного окна?
 
P.S
Для подобной автоматизации лучше использовать AutoIt

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 22:30 15-01-2008
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript
ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru