Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование "удобняшек" на VBScript

Автор: mozers
Дата сообщения: 26.10.2007 08:21
Sun Ray
Пожалуй в сторону HTA...
Автор: Smitis
Дата сообщения: 26.10.2007 14:06
Sun Ray

Цитата:
Как на VB сделать меню для открытия программ? Подскажиет куда копать...

Создавая окно ИЕ
Хотя требуется уточнение: VBS или всё-таки VB? Если последнее, то это не сюда.
Автор: Sun Ray
Дата сообщения: 27.10.2007 15:19
Любые методы, в общем создал отдельную тему тут... http://forum.ru-board.com/topic.cgi?forum=8&topic=24232
Автор: Nervniy2000
Дата сообщения: 06.11.2007 17:16
подскажите плиз..
есть скрипт.. делает много всего, в конце запускает программу..
Вопрос ... как его научить отвечать "ОК" после выполнения этой программы?
Автор: ViSiToR
Дата сообщения: 06.11.2007 21:17
Nervniy2000

Цитата:
как его научить отвечать "ОК" после выполнения этой программы?


Примерно так:


Код: AppPath = "calc.exe"
ExecWait(AppPath)
MsgBox "All done!", 64, "Finish.."

Sub ExecWait(sPath)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec(sPath)

While oExec.Status = 0
WScript.Sleep 100
WEnd
End Sub
Автор: Sun Ray
Дата сообщения: 09.11.2007 09:21
Подскажите по скрипту....

Код: Const USER_PROFILE = &H28&

Dim objComputer
Dim strServer
Dim strHomeDir
Dim pShell, strIP

Set objComputer = CreateObject("Shell.LocalMachine")
Set WshShell = CreateObject("Wscript.Shell")
strServer = objComputer.MachineName

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(USER_PROFILE)
Set objFolderItem = objFolder.Self
strHomeDir = objFolderItem.Path


if Left(strServer,3) = "TS-" then
WshShell.run "subst b: """ & strHomeDir & """"

Set oWTSCOM = CreateObject("EOLWTSCOM.WTSCOM")

strIP = oWTSCOM.WTSQuerySessionInformation(0, -1, 14)


'strIP = pShell.ExpandEnvironmentStrings("%CLIENTNAME%")
set fs=Wscript.CreateObject("Scripting.FileSystemObject")
set wn=Wscript.CreateObject("Wscript.Network")

if fs.DriveExists("LPT1:") then wn.RemoveNetworkDrive "LPT1:", true, true

wn.MapNetworkDrive "LPT1:", "\\"& strIP &"\EPSON", True

'strNUSE = "net use LPT1: \\" & strIP & "\EPSON"
'WshShell.run "net use LPT1: /delete"
wscript.sleep 1000
'WshShell.run strNUSE
end if
WSCript.Quit
Автор: Nervniy2000
Дата сообщения: 09.11.2007 09:31
ViSiToR
спасиб, но сделал немного по другому ..

проблемы не закончились .. .
теперь надо дописать его получать от домена группы компьютеров
группы пользователей уже работают, а вто группы компов никак не могу сделать ..
т.е. если компьютер в группе А, то сделать ето...
Автор: Cyril Konst
Дата сообщения: 10.11.2007 13:09
народ, подскажите скриптик для переноса учёток, паролей и папок пользователей ("Мои документы" и "Рабочий стол") с одного компа(сервера) на другой. Пользователей много. AD нет.
Автор: efrik
Дата сообщения: 14.11.2007 10:10
Хочу попросить привести пример скрипта, выполняющий следующее:

1. Создаётся окно с надписью "Скрипт работает. Ждите....". При этом скрипт не останавливается, не ждёт нажатий кнопок в этом окне как MessageBox. Да и вообще на окне не должно быть контролов, в том числе кнопок закрытия, сворачивания. пример окна - "Применение параметров компьютера" при входе в домен.

2. Выполняются некоторые действия в скрипте

3. Окно убирается.
Автор: mozers
Дата сообщения: 14.11.2007 15:02
efrik
Варианты имеются... Можно, например, так:
Код: Set Hh = CreateObject([no]"Internet.HHCtrl"[/no])
[no]' начинаем что то делать[/no]
Hh.TextPopup [no]"Скрипт работает. Ждите...."[/no], [no]"Verdana,20"[/no], 1, 1, 1, 1
[no]' Выполняются некоторые действия в скрипте[/no]
WScript.Sleep 3000
[no]' Выполняются некоторые действия в скрипте[/no]

[no]'все сделали - Окно убирается[/no]
Set Hh = Nothing
Автор: efrik
Дата сообщения: 14.11.2007 15:55
Спасибо, но это не совсем то...

Во-первых, это окошко появляется в месте указателя мышки, так что если запускаем скрипт по Enter, а мышка где-то у края, то окошка не видно
Во-вторых, если щёлкнуть по окошку, то оно закроется, а это не есть хорошо....
Автор: mozers
Дата сообщения: 15.11.2007 09:21
efrik
Еще вариант:
Код: Set msg = Alert ([no]"Скрипт работает. Ждите...."[/no])
[no]' Выполняются некоторые действия в скрипте[/no]
WScript.Sleep 3000
[no]' Выполняются некоторые действия в скрипте[/no]

[no]'все сделали - Окно убирается[/no]
msg.Quit
Set msg = Nothing
WScript.Quit

Function Alert (message)
Set objIE = WScript.CreateObject([no]"InternetExplorer.Application"[/no])
objIE.Left =300
objIE.Top = 500
objIE.Height = 80
objIE.Width = 280
objIE.MenuBar = 0
objIE.ToolBar = 0
objIE.StatusBar = 0
objIE.Resizable = 0
objIE.Navigate [no]"about:blank"[/no]
While objIE.Busy
Wscript.Sleep 200
Wend
objIE.Visible = 1

html = [no]""[/no]
html = html & [no]"<head><title> Alert </title></head>"[/no]
html = html & [no]"<body style=""font:12pt 'Verdana'; color:red; background-color:buttonface; overflow:auto;"">"[/no]
html = html & [no]" <p>"[/no] & message
html = html & [no]"</body>"[/no]

objIE.Document.Write [no]"<html>"[/no] & html & [no]"</html>"[/no]
Set Alert = objIE
End Function
Автор: ViSiToR
Дата сообщения: 15.11.2007 10:45
mozers

Цитата:
Еще вариант:

Тут тоже можно закрыть окошко

efrik
А что если в цикле постоянно показывать тот самый popup?

Вот так к примеру:


Код: Set Hh = CreateObject("Internet.HHCtrl")
Text = "Скрипт работает. Ждите...."

iTemer = Timer
TimeOut = 10

Do While 1
'Показываем Popup окошко
Hh.TextPopup Text, "Verdana,20", 1, 1, 1, 1

' Выполняем некоторые действия в скрипте
Wscript.Sleep(1500)

'Если закончили (в данном примере по истечению 10-ти секунд), то закрываем popup и выходим с цикла
If Timer - iTemer >= TimeOut Then
Set Hh = Nothing
Exit Do
End If
Loop
Автор: mozers
Дата сообщения: 15.11.2007 12:22
Вопрос оказался интересным
А вот, еще вариант:
alert.hta
Код: [no]<html><head>[/no]
[no]<hta:application id=hta_id[/no]
[no] applicationName=Alert[/no]
[no] showInTaskBar=no[/no]
[no] caption=no[/no]
[no] innerBorder=no[/no]
[no] selection=no[/no]
[no] scroll=no[/no]
[no] contextmenu=no />[/no]
[no]<script[/no][no] [/no][no]language[/no][no]=[/no]javascript[no]>[/no]
var winWidth=280;
var winHeight=60;
var winPosX=screen.width/2-winWidth/2;
var winPosY=screen.height/2-winHeight/2;
window.resizeTo(winWidth, winHeight);
window.moveTo(winPosX, winPosY);
[no]</script>[/no]
[no]</head>[/no]
[no]<body[/no][no] [/no][no]bgcolor[/no][no]=[/no]buttonface[no] [/no][no]style[/no][no]="font:12pt 'Verdana'; color:red"[/no][no]>[/no]
[no]<p>[/no]Скрипт работает. Ждите....
[no]</body>[/no]
[no]<script[/no][no] [/no][no]language[/no][no]=[/no]javascript[no]>[/no]
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("C:\\TEMP\\test.vbs", 0, true);
self.close();
[no]</script>[/no]
[no]</html>[/no]
Автор: efrik
Дата сообщения: 15.11.2007 14:23
mozers

Тяжёлые скрипты у тебя получаются. В первом случае идёт обращение к ресурсам IE, что само по себе тянет время. На небыстрых компах это чувствительно. К тому же, раз уж запускается IE, то выскакивает окошко авторизации на прокси.

Неужели в системе нет никакого ActiveX работы с модальными окнами сообщений?. Или просто рисования серого прямоугольника с текстом?
Автор: mozers
Дата сообщения: 15.11.2007 17:14

Цитата:
Неужели в системе нет никакого ActiveX работы с модальными окнами сообщений?.
Увы, мелкософтовцы как то вообще не подумали о формах
Вот и приходится измудрятся или ставить какой нить ActiveX стороннего производителя...
Автор: Sun Ray
Дата сообщения: 16.11.2007 02:54
Как передать значение из f.ReadAll в l_sSource?

Код:
        Dim l_lReturn as Long
Dim l_sSource as String 'исходный текст
Dim l_sDestination as String 'возвращаемый текст
l_lReturn = oemtochar(l_sSource, l_sDestination)
Автор: mozers
Дата сообщения: 16.11.2007 21:20
Sun Ray
Цитата:
Как передать значение из f.ReadAll в l_sSource?
А че так не передается что ли???
Код: l_sSource = f.ReadAll
Автор: Sun Ray
Дата сообщения: 17.11.2007 06:30

Цитата:
А че так не передается что ли???

Да, затупил, но вот так что-то не хотит

Код:
Dim l_lReturn as Long
Dim l_sSource as String
Dim l_sDestination as String
Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
l_sSource = f.ReadAll
f.close
l_lReturn = oemtochar(l_sSource, l_sDestination)
Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
l_sDestination = f.Write
f.Close
Автор: mozers
Дата сообщения: 17.11.2007 11:54

Цитата:
но вот так что-то не хотит
Я бы дико удивился если бы это заработало - слишком много ошибок.
Для начала я бы советовал что нибудь почитать. Например - это. Вообще тут много статеек на эту тему.

Цитата:
как на терминальном сервере можно прочитать IP-адрес подключенного клиента
Не знаю. С этим вопросом лучше - сюда.
Автор: abz
Дата сообщения: 17.11.2007 13:18
Помогите создать VBScript для того, чтобы в тотале повесить его на кнопку и чтобы, при его срабатывании, создавался пустой файл с сегодняшней датой в текущем каталоге, формата: !16-11-2007.txt и этот файл открывался в блокноте без вопросов. Если такой файл существует, то открывался он.
Автор: naPmu3aH
Дата сообщения: 17.11.2007 14:03
abz
Totala не имею как и желания его ставить, а вот задача проверки/создания файла и открытия его в нотепаде решается примерно так (правда обычный CMD, а не VBScript):

Код:
IF NOT EXIST "!%date:~-10,2%-%date:~-7,2%-%date:~-4,4%.txt" (
echo. >> "!%date:~-10,2%-%date:~-7,2%-%date:~-4,4%.txt"
)
notepad.exe "!%date:~-10,2%-%date:~-7,2%-%date:~-4,4%.txt"
Автор: abz
Дата сообщения: 17.11.2007 14:46
naPmu3aH

Открывается не только блокнот, но и висит консоль с командой. Это не подходит, так как хочется vbs, чтобы даже не мелькала консоль (а не то, чтобы висела!) при нажатии.

Добавлено:
Висение консоли победил командой start перед notepad, но всё же хочется vbs
Автор: AndVGri
Дата сообщения: 17.11.2007 17:11
abz

Код:
Option Explicit
Const inFolder = "c:\temp\"
Dim fso, File, pShell, pStream

Set fso = CreateObject("Scripting.FileSystemObject")
File = Now
File = "!" & Day(File) & "-" & Month(File) & "-" & Year(File) & ".txt"
File = inFolder & File
If Not fso.FileExists(File) Then
    Set pStream = fso.CreateTextFile(File)
    pStream.Close
End If

Set pShell = WScript.CreateObject("WScript.Shell")
pShell.Exec "notepad.exe " & File
Автор: abz
Дата сообщения: 17.11.2007 17:29
AndVGri

Мне надо в текущем каталоге создавать файл, а не c:\temp
Автор: AndVGri
Дата сообщения: 17.11.2007 17:39
abz
Ну так и передавай текущий каталог из Total commander в скрипт как параметр, а забираешь через WScript.Arguments(0)
Автор: mozers
Дата сообщения: 17.11.2007 17:56
abz AndVGri
Проще удалить из скрипта всякое упоминание о inFolder, тогда файл будет создаваться там, откуда запущен (а не там где лежит, как многие думают) скрипт. (Т.е. для Тотала если не запишешь ничего в параметр "Путь запуска:" то файл создастся там, где тебе нужно)
Автор: abz
Дата сообщения: 17.11.2007 17:59
mozers

Победил. Спасибо.
Автор: Minko Lazer
Дата сообщения: 18.11.2007 16:18
Привет!
И все-таки, у кого-нибудь получилось на VBS запустить существующее и настроенное VPN соединение, а потом после того как будут выполнены нужные операции (как операции сделать знаю) его (соединение) закрыть.
Спасибо!
Автор: Nervniy2000
Дата сообщения: 19.11.2007 17:06
при подключении сетевого принтера, не могу вставить в скрипт авторизацию пользователя.. подскажите строчку плиз

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

Предыдущая тема: Работа в Delphi c CryptoApi


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.