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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы, задачи и их решения по VBScript.

 
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
 
Смежные темы:
Сценарии Windows
Командная строка, батники\сценарии (bat, cmd)
Скрипты KiXtart

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:12 12-07-2011 | Исправлено: Smitis, 23:28 26-02-2018
Black_Lung



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

Код:
 
Set shl = WScript.CreateObject("WScript.Shell")
shl.Run "rasphone.exe -f "&chr(34)&"rasphone.pbk"&chr(34)&" -d  "&chr(34)&"1c-vpn"&chr(34), 1, true
if shl.Run("ping -w 1 -n 2 10.10.10.4", 0, true) = 0 then shl.Run "1c.rdp rasdial /D",1,true


Всего записей: 275 | Зарегистр. 09-10-2008 | Отправлено: 14:44 20-01-2012
3aki



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

Всего записей: 122 | Зарегистр. 05-12-2006 | Отправлено: 16:54 20-01-2012
Scaramanga



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Привет всем.  Задача следующая. Необходимо получить OU и Фамилию Имя текущего пользователя, из AD и добавить полученноe в переменные %OU% %FirstName% %LastName%. Помогите реализовать пожалуйста. Заранее спасибо

Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 20:45 23-01-2012 | Исправлено: Scaramanga, 20:46 23-01-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Scaramanga
что за OU? что за переменные в %%? и как именно из AD нужно тащить данные? может все же как-то поподробнее расскажите о поставленной задаче, а то понять из урывочного сообщения ничего нельзя.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 12:22 24-01-2012
Black_Lung



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Scaramanga
Пользователь берется текущий залогиненый на компе, а комп задается параметром

Код:
strComputer = Wscript.arguments.Item(0)
Set Shell = CreateObject("WScript.Shell")
Sdir=Shell.CurrentDirectory
Set FSO = CreateObject("Scripting.FileSystemObject")
Set DDD = FSO.CreateTextFile(Sdir+"\ddd.bat", True)
 
Const ADS_SCOPE_SUBTREE = 10
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 10
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE  
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colComputer
login=objComputer.UserName
next  
if IsNull(login)=True then
    OU="None logged in"
    FirstName="None logged in"
    LastName="None logged in"
    else
    user=split(login,"\")
    objCommand.CommandText="SELECT cn,distinguishedName FROM 'LDAP://DC=domen,DC=com' WHERE objectcategory='User' and  samAccountName='"&user(1)&"'"
    Set objRecordSet = objCommand.Execute
    if objRecordSet.EOF=0 and objRecordSet.BOF=0 then
        dname=Split(objRecordSet.Fields(0).Value, ",")
        for x=0 to ubound(dname)
            if left(dname(x),3)="OU=" then OU=OU&right(dname(x),len(dname(x))-3)&"\"
            next
        Name=split(objRecordSet.Fields(1).Value, " ")
        FirstName=name(1)
        LastName=name(2)
                end if
    end if
    
 
Set objWMIService = nothing
 
DDD.writeline("SET OU="&chr(34)&OU&chr(34))
DDD.writeline("SET FirstName="&chr(34)&FirstName&chr(34))
DDD.writeline("SET LastName="&chr(34)&LastName&chr(34))
DDD.Close
 
shell.run "ddd.bat",1,true
 
Set FSO = nothing
Set DDD = nothing
 

Всего записей: 275 | Зарегистр. 09-10-2008 | Отправлено: 12:25 24-01-2012 | Исправлено: Black_Lung, 12:35 24-01-2012
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо передать запущенному батнику со свёрнутым или невидимым окном нажатие клавиши без его разворачивания или выхода из сумрока. Имя , PID ну и любую инфу из tasklist можно выдрать. То есть при запуске скрипта передавалось нажатие заранее прописанной клавиши в определённое окно, можно любыми средствами. Есть решения?

Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:05 02-02-2012 | Исправлено: king_stiven, 19:13 02-02-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
king_stiven
через vbs - нет. по крайней мере если речь идет о чистом синтаксисе, а не предустановленных библиотеках вроде dynwrap.dll. пробовал средствами vbs переключаться на окно и использовать SendKeys, но это лишь подтвердило мою теорию, так как контрол (в данном случае речь именно о них), на котором по дефолту устанавливается фокус не обязательно может быть элемент управления button, это может быть и textbox и combobox, - да все что угодно. однако данная задача вполне решаема с помощью другой технологии - PowerShell, в которой реализована поддержка WinAPI (не напрямую, конечно, а спредварительным созданием нужной библиотеки или типа (командлет Add-Type)).
кстати, контрол клавиши был получен с помощью Spy++?

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 10:20 03-02-2012 | Исправлено: ComradG, 10:20 03-02-2012
Evgeny972



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Цитата:
задача вполне решаема с помощью другой технологии - PowerShell
Или AutoIt

Всего записей: 15511 | Зарегистр. 23-08-2002 | Отправлено: 10:26 03-02-2012
ComradG



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

Цитата:
Или AutoIt
гы! или на Python - выбор просто огромен.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 10:42 03-02-2012
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Evgeny972
Понял, есть некоторое решение, только куда это ткнуть не знаю. Есть проект на дельфи
http://content.mail.ru/arch/23707/1420468.html
или такое
http://borland.xportal.ru/forum/viewtopic.php?t=18159&start=0&postdays=0&postorder=asc&highlight=&sid=d257c239f7c5efa01f0015db07c8d251
 
щас пойду в програмирование, там меня может пнут, куда надо.

Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:27 03-02-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
king_stiven
рад бы помочь, но с делфи не знаком.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 11:33 03-02-2012
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
а вот это что не знаешь, какой язык?
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool __stdcall EnumProc(HWND _HWND)
{
        if(_HWND)
        {
                HGLOBAL _HGLOBAL = GlobalAlloc(GMEM_SHARE, sizeof(unsigned long));
 
                DWORD * _PID     = (unsigned long *) GlobalLock(_HGLOBAL);
                DWORD _RESULT    = GetWindowThreadProcessId(_HWND, _PID);
 
                if(_RESULT)
                {
                        char _CLASS [ 95];
 
                        GetClassName (_HWND, _CLASS,  95);
 
                        AnsiString Class = _CLASS;
 
                        if(Class == "TMainForm")
                        {
                                SendMessage(_HWND, WM_KEYDOWN, VK_F1, 1);
                        }
                }
        }
 
        return true;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
        EnumWindows((WNDENUMPROC)EnumProc, 0);
}
//--------------------------------------------------------------------------

Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:20 03-02-2012
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как лучше реализовать watchdog для решения такой задачи: клиентская софтина видеонаблюдения иногда (1-2 раза в неделю) теряет связь с сервером и требуется ее перезапуск.  
 
Когда она работает в штатном режиме, то загрузка проца как минимум 10-15%.
Т.е. в цикле проверяем запущен ли нужный ехе файл, если да то смотрим загрузку процессора, если она меньше 10%, то выполняем команду перезапуска (или лучше лог-аута юзера). Ну и попутно можно еще лог небольшой вести с датой\временем перезапуска.
 
Основной вопрос в отслеживании загрузки проца. Притом желательно замерять загрузку именно конкретным процессом.

Всего записей: 1033 | Зарегистр. 30-05-2006 | Отправлено: 12:41 03-02-2012
yse

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вопрос как запустить системный значок из библиотеки или
Как извлечь иконки из библиотеки shell32.dll
 
и при этом запустить ,нужен пример на vbs

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 18:55 03-02-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
king_stiven
к чему, собственно, нужно было постить сей сишный код?
 
gap5
а мониторинг подразумевается с правами админа?
 
yse
запустить что? и вообще вопрос о чем? создать ярлык программы с установленным для него значком из shell32.dll? пишите, пожалуйста, разборчиво, а не так, чтобы разбираться с бутылкой.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 16:53 04-02-2012
yse

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

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 00:29 05-02-2012 | Исправлено: yse, 22:39 05-02-2012
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
желательно нет
и софтина запущена от имени обычного юзера
 
у НЕадмина могут быть проблемы?

Всего записей: 1033 | Зарегистр. 30-05-2006 | Отправлено: 20:42 06-02-2012
ComradG



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

Цитата:
у НЕадмина могут быть проблемы?
нет, если не оперировать в скрипте объектами Win32, поэтому я и уточняю условия мониторинга загруженности процессора. не обещаю, но постараюсь что-нибудь сообразить.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 21:05 06-02-2012
Engraf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В представленном ниже коде при попытке переименовать файл (mFiles.Name=str), если файл с таким именем уже существует, скрипт "вылетает" из цикла (как при Exit For). Почему так?

Код:
...
On Error Resume Next
...
For Each mFiles In mailF.Files
 If Right(mFiles.Name,4)=".msg" Then
  i=CInt(Left(Right(mFiles.Name,14),10))
  If i < CInt(oldCount) Then
   i=i+CInt(oldCount)
   str="pd5" & String(10-Len(CStr(i)),"0") & i & ".msg"
   Err.Clear
   mFiles.Name=str
   If Err.Number<>0 Then
    logFile.WriteLine(String(9," ") & "#Can not rename " & mFiles.Name & " to " & str)
   End If
  End If
 End If
Next
...


Всего записей: 67 | Зарегистр. 07-08-2007 | Отправлено: 14:16 10-02-2012 | Исправлено: Engraf, 14:22 10-02-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Engraf
на самом деле это даже не переименование, а попытка присвоить объекту файловой системы некоторое значение; вот вам, будучи мужчиной, не было бы неприятно, если бы вас обозвали Наташей? здесь то же самое. чтобы корректно переименовать файл должно использовать метод MoveFile (по крайней мере если используется FileSystemObject):
Код:
Set objFSO = CreateObject("Scripting.FileSystemObject")
...
objFSo.MoveFile "C:\test.txt" "C:\rest.txt"

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 17:19 10-02-2012
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru