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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

   

Ermashov

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер всем.
 
Есть проблемка, нужно обработать порядка нескольких тысяч документов word на предмет просмотра параметра используемого шаблона документа, и при необходимости замена этого параметра. Этот параметр если открыть word находится в меню сервис/шаблоны и надстройки/шаблон документа.

Всего записей: 51 | Зарегистр. 25-02-2008 | Отправлено: 17:50 05-11-2009
galaxyMINSK

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите плиз, если кто знает как и есть возможность помочь.  
В скайпе можно редактировать свои отправленные сообщения, нужно что бы каждые пять минуть исправляла все отправленные сообщения смайликами.  
Что имеем:
1) Server 2003 все пользователи работают в терминале у некоторых открыта два скайпа.
2) Скайп последняя версия
Очень надеюсь на Вашу помощь.
Спасибо.

Всего записей: 11 | Зарегистр. 09-02-2007 | Отправлено: 18:21 09-11-2009
CYMar



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи! Кто нибудь может посоветовать что нибудь подобное AppActivate? Пролистал тему, многие задаються вопросом, но решения так и не нашел. Вот суть проблемы:
Необходимо после запуска системы открыть приложение, и после открытия данного приложения открыть одно из его окон (скорее всего по Hotkey F11).

Код:
Option Explicit
Dim WshShell, theAzi
Set WshShell = WScript.CreateObject("WScript.Shell")
Set theAzi = WshShell.Exec("azi.exe")
WScript.Sleep 15000
WshShell.AppActivate theAzi.ProcessID
WshShell.SendKeys "{F11}"

Эта задача должна выполняться в фоне, соответсвенно с SendKeys сразу возникает проблема.
Попробовал  

Код:
Active = WinWaitActivate(Title, 5)  
If Active Then WshShell.SendKeys("{F11}")  
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

если активно другое приложение - то эффекта не получил. Может есть какие нибудь соображения по этому поводу?

Всего записей: 81 | Зарегистр. 29-07-2006 | Отправлено: 12:47 16-11-2009 | Исправлено: CYMar, 12:52 16-11-2009
Sergey_AV



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, плииз - есть скрипт: http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=1142&limit=1&m=1#1
как бы избавиться от консольного окошка при его работе? Имеется ввиду действие программы ping.exe. Сам то скрипт запустить без консольного окошка можно, а следы его деятельности?

Всего записей: 2336 | Зарегистр. 05-03-2002 | Отправлено: 14:42 16-11-2009
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CYMar
Цитата:
после открытия данного приложения открыть одно из его окон  
Такие задачи лучше решать с помощью AutoIt (он под такие дела заточен).
 
Sergey_AV
Консольное окошко возникает не от ping.exe, а от oShell.Exec
Можно заменить вызов
Код:
oShell.Exec("%comspec% /c ping.exe " & url & " 2>&1")

вызовом
Код:
oShell.Run("%comspec% /c ping.exe " & url & " > output.txt 2<&1", 0, true)
А затем читать не oExec.StdOut.ReadAll, а файл output.txt.

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 16:24 17-11-2009
Ufimez

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
есть форма, на ней TDBGrid в ней нередактируемые колонки и строки, по ним можно перемещаться, можно ли каким либо образом узнать текст ячейки на которой находишься?
 
- копирование в буфер обмена непроходит
- с помощью AutoItX3.dll Au3Info получилось получить информацию об объекте
Class - TDBGrid
Instance - 1
но вот текст показанный и скрытый там отсутствует

Всего записей: 162 | Зарегистр. 20-01-2006 | Отправлено: 07:55 18-11-2009
alur2005



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите можно ли как то с помощью VBS узнать под кем сейчас работает залогинившийся user  , под пользователем , под локальным админом или под опытным пользователем.

Всего записей: 824 | Зарегистр. 06-09-2005 | Отправлено: 12:04 19-11-2009 | Исправлено: alur2005, 12:37 23-11-2009
Sergey_AV



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

Цитата:
Консольное окошко возникает не от ping.exe, а от oShell.Exec  
Можно заменить вызов

Спасибо! Вроде бы при помощи добрых людей все заработало .

Всего записей: 2336 | Зарегистр. 05-03-2002 | Отправлено: 13:00 20-11-2009 | Исправлено: Sergey_AV, 13:01 20-11-2009
aknyazhev

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, помогите отладить скрипт. Сам я необходимыми знаниями не обладаю, поиском по гуглю задачу не решил.
 
Вводная:
Есть статья
http://www.samag.ru/cgi-bin/go.pl?q=articles;n=12.2005;a=05
В ней в конце есть глава "Подведение итогов". В ней рассматривается скрипт excel.vbs, там же приводят ЧАСТЬ его листинга, цитирую:
 
 
"Далее приводится фрагмент сценария, реализующего все эти действия.
 
Листинг 7. Создание документа Excel c результатами
 
…………….
 
Set s = oE.Sheets(1)     ' Лист 1
 
s.Name = "Список"        
 
Set s1 = oE.Sheets(2)    ' Лист 2
 
s1.Name = "Сумма"        
 
s.Rows(1).RowHeight = 2 * s.StandardHeight  
 
s.Cells(1,1) = "Список установленных приложений"  
 
s.Cells(2,1) = "Имя компьютера"      
 
s.Cells(2,2) = "Приложения"          
 
s.Columns("A:B").Columns.AutoFit  
 
With s.Range("A1:B1")  
 
  .MergeCells = True  
 
  .VerticalAlignment = xlCenter
 
  .HorizontalAlignment = xlCenter
 
  .Font.Size=14
 
End With
 
s1.Rows(1).RowHeight = 2 * s1.StandardHeight  
 
s1.Cells(1,1) = "Количество установленных приложений"  
 
s1.Cells(2,1) = "Приложение"      
 
s1.Cells(2,2) = "Всего установок"        
 
s1.Columns("A:B").Columns.AutoFit  
 
With s1.Range("A1:B1")  
 
  .MergeCells = True  
 
  .VerticalAlignment = xlCenter
 
  .HorizontalAlignment = xlCenter
 
  .Font.Size=14
 
End With
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Set fso = CreateObject("Scripting.FileSystemObject")
 
' Получаем сведения о файлах, находящихся в данной папке
 
Set fld = fso.GetFolder(".")
 
Set objTextFile2 = objFSO.OpenTextFile("c:\temp\tmp", ForWriting, True)
 
For Each fi In fld.Files
 
If fi.name<>"excel.vbs" AND fi.name<>"result.xls" Then  
 
' Файл сценария и файл отчета не открывать
 
Set readPCFile = objFSO.OpenTextFile(fi, ForReading)
 
i = 0
 
s.Cells(n, 1) = fi.name ' Имя файла – это имя компьютера
 
Do Until readPCFile.AtEndOfStream  
 
strNextLine = readPCFile.Readline
 
  i = i + 1
 
  ' Первые 6 строк в файлах отчетах – это шапка,  
 
  ' экспортировать не нужно
 
  If i>6 Then  
 
    s.Cells(n, 2) = strNextLine
 
   objTextFile2.WriteLine (strNextLine)
 
    n = n + 1
 
    End If
 
  Loop
 
 readPCFile.Close
 
End If
 
Next
 
objTextFile2.close
 
f=3
 
Set objTextFile2 = objFSO.OpenTextFile("c:\temp\tmp", ForReading)
 
Do Until ObjTextFile2.AtEndOfStream  
 
 strNextLine = objTextFile2.Readline
 
 ' ищем вхождения имени приложения
 
 Set fc = s1.Columns("A").Find(strNextLine)
 
 If  fc Is Nothing  Then ' не нашли, тогда добавляем  
 
  s1.Cells(f,1)=strNextLine
 
  Set fc = s.Columns("B").Find(strNextLine)
 
   If Not fc Is Nothing  Then
 
    count=0
 
   With s.Columns("B")
 
    Set c = .Find(strNextLine)
 
    If Not c Is Nothing Then
 
        firstAddress = c.Address
 
        Do
 
           ' считаем количество установок  
 
           count=count+1
 
            Set c = .FindNext(c)
 
        Loop While Not c Is Nothing And c.Address <> firstAddress
 
    End If
 
End With
 
s1.Cells(f,2)=Count ' сохраняем количество установок
 
 End If
 
f=f+1
 
End If
 
Loop"
 
Вопрос. Что мне нужно дописать в начале листинга, что бы он заработал? Очень надеюсь на вашу помощь, господа.

Всего записей: 1 | Зарегистр. 02-11-2009 | Отправлено: 12:40 25-11-2009
alur2005



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aknyazhev
 
вот тебе программа и никаких скриптов
 
http://forum.ru-board.com/topic.cgi?forum=35&topic=8637&start=0

Всего записей: 824 | Зарегистр. 06-09-2005 | Отправлено: 19:20 25-11-2009 | Исправлено: alur2005, 19:21 25-11-2009
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не подскажете, как определить, числовое ли значение в Array(x, 1)?
IsNumeric  и Val не работают...
Т.е. мне надо поменять переменные, если там число (3 цифры), но ничего не делать, если пусто или текст. Не хочется анализировать символы, может есть попроще выход?
if Val(Dt(x,5)) <> ent then ent = Dt(x,5): sdvig = sdvig + 1

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 18:01 26-11-2009
Nagual



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
делаю замену фрагментов текста, а именно html классов на нижний регистр
 
// перевод классов в нижний регистр
html = html.replace(/class="[^№]*?"/g, '');  
 
при этом текст заменяется на то, что в ''
 
сама функция выглядит так
.toLowerCase()  
 
то есть ищет код правильно, а вот заменяет на то, что в здесь '' а мне нужно чтобы оставался тот же текст, только в нижнем регистре
 
никак не соображу, где как написать
 

Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 18:33 26-11-2009
alroy

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hugo121
Честно говоря я не понял в чем у тебя проблема все работает вот пример ниже  

Код:
 
Dim Arr(2,2)
 
Arr(0, 0)= "1111" : Arr(0, 1) = "aaaaaaaaaa"  
Arr(1, 0)= "22222" : Arr(1, 1) = "bbbbbbbbbbb"  
 
 
 
MsgBox("Это [" & Arr(0, 0) & "] цифра- ? " & IsNumeric(Arr(0, 0))& "  !" )
 

Всего записей: 60 | Зарегистр. 15-06-2005 | Отправлено: 22:38 26-11-2009
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alroy
Спасибо, работает, я наверное где-то в другом напутал...
Искал в доках - не нашёл такого оператора, вот и спросил.
Пока пошёл другим путём, обошёлся, но на будущее пригодится.
 
Добавлено:
Ещё вопрос - как обходится то, что после упаковки в exe в vobedit путь к скрипту изменяется на место распаковки экзешника? Может, другой программой компилить? Какой?
 
И ещё - как написать диалог выбора папки? Ни одного примера не нашёл, всюду файлы выбираются, а приспособить к папке не получается.

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 09:16 27-11-2009 | Исправлено: Hugo121, 13:36 27-11-2009
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nagual
Вопрос, при кажущейся простоте, с подвохом.
Если мы запишем так:
Код:
html = html.replace(/class="([^№]*?)"/gi, 'class="' + '$1'.toLowerCase() + '"');
то скрипт отработает без ошибок, но регистр найденных вхождений не сменит. А все потому, что внутри replace никакие дополнительные преобразования невозможны.
Поэтому приходится маленько мудрить:
Код:
var re = /class="[^№]*?"/gi;
while (
re.exec(html)){
   
html = RegExp.leftContext + RegExp.lastMatch.toLowerCase() + RegExp.rightContext;
}

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 10:30 27-11-2009
Hugo121

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

Код:
 
  Dim objPath, objFolder, objFolderItem, objShell, strPath
  Const MY_COMPUTER = &H11&
  Const WINDOW_HANDLE = 0
  Const OPTIONS = 0
  objPath = ""
  Set objShell = CreateObject("Shell.Application")
  Set objFolder = objShell.Namespace(MY_COMPUTER)
  Set objFolderItem = objFolder.Self
  strPath = objFolderItem.Path  
  Set objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, "Select a folder:", OPTIONS, strPath)    
  If Not objFolder Is Nothing Then
     Set objFolderItem = objFolder.Self
      objPath = objFolderItem.Path  
  Else MsgBox "Folder Not Selected!": wscript.quit
  End If
   
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = objFSO.GetFolder(objPath) 'каталог, где смотреть
Set TheFiles = TheFolder.Files
 
For Each AFile In TheFiles
Msgbox AFile
Next
 

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 15:42 27-11-2009 | Исправлено: Hugo121, 16:59 27-11-2009
alroy

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

Код:
 
'пример прмер использования   nanka "C:\"
 
 
Function nanka (str_byk)
On Error Resume Next
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.BrowseForFolder(0, "Выберите папку откуда вы хотите копировать файлы", 0, str_byk)
nanka = objFolder.Self.Path
If Err.Number <> 0 Then
     MsgBox "Папка не выбрана!" , vbInformation  
     WScript.Quit  
End If
 
End Function
 
 

Всего записей: 60 | Зарегистр. 15-06-2005 | Отправлено: 17:14 27-11-2009
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, только мне надо папку как объект, что бы потом файлы обработать, вот в этом был затык. Просто путь получить легко, дальше не получалось.
Set TheFiles = TheFolder.Files  
For Each AFile In TheFiles  

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 17:26 27-11-2009
Nagual



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers
спасибо, как всегда на высоте, всё отлично пашет

Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 01:19 28-11-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сорри, я, кажется, не так понял... Поэтому del

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 10:00 28-11-2009 | Исправлено: Rush, 11:07 28-11-2009
   

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