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

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

Автор: LEX1
Дата сообщения: 11.03.2010 23:08
Подскажите, есть ли лучший способ скачать текстовый файл (в utf-8) по защищенному (https) соединению?

Сейчас я использую такой код:


Код: [no]
// var subscPath = 'http://ruadlist.googlecode.com/svn/trunk/adblock.txt';
var subscPath = 'https://easylist.adblockplus.org/liste_fr+easylist.txt';
var defPath = 'ab.txt';
        try{
            var shell = new ActiveXObject('WScript.Shell');
            shell.Run('wget.exe'+' --no-check-certificate -O "'+defPath+'" '+subscPath, 0, 1);
        }
        catch(e){
            var req = new ActiveXObject('WinHTTP.WinHttpRequest.5.1');
            req.Open('GET', subscPath, false);
            req.Option(4) = 0x3300;
            req.Send();
            var stream = new ActiveXObject('ADODB.Stream');
            stream.Type = 1;
            stream.Open();
            stream.Write(req.ResponseBody);
            stream.SaveToFile(defPath, 2);
            stream.Close();
        };[/no]
Автор: mozers
Дата сообщения: 13.03.2010 09:59
LEX1
ИМХО ты предложил совсем неплохое решение
Вместо wget можно использовать cURL.
Вместо ADODB.Stream - FSO (хоть стрим получаешь, хоть - текст, все равно его сохранить как то надо...)
Код: // var subscPath = 'http://ruadlist.googlecode.com/svn/trunk/adblock.txt';
var subscPath = 'https://easylist.adblockplus.org/liste_fr+easylist.txt';
var
defPath = 'ab.txt';
with (new
ActiveXObject('WinHTTP.WinHttpRequest.5.1')) {
Open('GET', subscPath, false);
Option(4) = 0x3300;
Send();
var
FSO = new ActiveXObject("Scripting.FileSystemObject");
with (
FSO.OpenTextFile(defPath, 2, true)) {
Write(responseText);
Close();
}
}
Автор: LEX1
Дата сообщения: 13.03.2010 12:09
В таком варинте, с первой, закомментированной, ссылкой мы почему то получаем ошибку:

Цитата:

Сценарий:    C:\Tools\test\1.js
Строка:    10
Символ:    9
Ошибка:    Invalid procedure call or argument
Код:    800A0005
Источник:     Microsoft JScript runtime error

Возможно неправильная кодировка?
Автор: mozers
Дата сообщения: 13.03.2010 12:42
LEX1
Странно... Код - рабочий... Походу че то ты поправил - вот и не работает. Ну, ладно - "железный" вариант:
Код: // var url = 'http://ruadlist.googlecode.com/svn/trunk/adblock.txt';
var url = 'https://easylist.adblockplus.org/liste_fr+easylist.txt';
var
savePath = 'ab.txt';

var
req = new ActiveXObject('WinHTTP.WinHttpRequest.5.1');
req.Open('GET', url, false);
req.Option(4) = 0x3300; // SslErrorIgnoreFlags
req.Send();
var
FSO = new ActiveXObject("Scripting.FileSystemObject");
var
file = FSO.OpenTextFile(savePath, 2, true);
file.Write(req.responseText);
file.Close();
Автор: LEX1
Дата сообщения: 13.03.2010 13:44
Я имел в виду что нужно убрать комментарий у первой ссылки

Код: [no]var subscPath = 'http://ruadlist.googlecode.com/svn/trunk/adblock.txt';
// var subscPath = 'https://easylist.adblockplus.org/liste_fr+easylist.txt';[/no]
Автор: gourkuff
Дата сообщения: 14.03.2010 09:20
Ребят помогите с задачками ,а то у меня хреново с информатикой..

Задача 1.На Цикл
Предприятие оштрафовали на х рублей.за каждый день неуплаты к сумме штрафа добавляется пеня=0,5% от суммы штрафа.Сколько затратит через неделю.

Задача 2.На цикл
Норма газа за отопительный сезон составляет 100 км^3 на семью.Определить сколько м^3 было израсходовано сверх нормы.если n семей и каждая потребляет не меньше нормы.

Задача3
Температура больного изменялась в течении 2-х недель.Опередить,сколько дней держалось повышение?
Автор: SerBUser
Дата сообщения: 16.03.2010 10:13
Вроде проблему с экпортом данных из Excel в AD решил. Вот код:

Код:
'Установка соединения с AD
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open 'Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
'Конец установки соединения с AD

'Открытие приложения Excel и указание файла для обработки

Worksheets("Лист1").Activate
'Начало цикла перебора строк в Excel'e
i = 11
Do Until Worksheets("Лист1").Cells(i, 1).Value = ""

strCN = Worksheets("Лист1").Cells(i, 1).Value
strAcc = Worksheets("Лист1").Cells(i, 2).Value

pathcheck = ""
'Поиск и получение пути к пользователю в AD

objCommand.CommandText = "<LDAP:// " & strCN & ">;(sAMAccountName=" & strAcc & ");AdsPath, cn;subTree"
Set rs = objCommand.Execute

Do While rs.EOF = False
pathtouser = rs.Fields("AdsPath")
pathcheck = pathtouser
usercn = rs.Fields("cn")
rs.MoveNext
Loop
'Конец поиска и получение пути к пользователю в AD
'Измeнение свойст пользователя

If pathcheck = "" Then
'Пользователь не найден-ничего не делаем
Else
Set objUser = GetObject(pathtouser)
'проверяем - если в Excel в 7 столбце (Компания) не пусто и если отличается от того,
' что у пользователя в AD - то изменяеи в AD данные
If (Worksheets("Лист1").Cells(i, 7).Value <> "") Then
If objUser.Get("company") <> Worksheets("Лист1").Cells(i, 7).Value Then
objUser.Put "company", Worksheets("Лист1").Cells(i, 7).Value
End If
End If
'проверяем - если в Excel в 6 столбце (Подразделение) не пусто и если отличается от того,
' что у пользователя в AD - то изменяеи в AD данные
If (Worksheets("Лист1").Cells(i, 6).Value <> "") Then
If objUser.Get("Department") <> Worksheets("Лист1").Cells(i, 6).Value Then
objUser.Put "Department", Worksheets("Лист1").Cells(i, 6).Value
End If
End If
'проверяем - если в Excel в 8 столбце (Должность) не пусто и если отличается от того,
' что у пользователя в AD - то изменяеи в AD данные
If (Worksheets("Лист1").Cells(i, 8).Value <> "") Then
'If objUser.Get("title") <> Worksheets("Лист1").Cells(i, 8).Value Then
objUser.Put "title", Worksheets("Лист1").Cells(i, 8).Value
'End If
End If
'проверяем - если в Excel в 5 столбце (телефон) не пусто и если отличается от того,
' что у пользователя в AD - то изменяеи в AD данные
If (Worksheets("Лист1").Cells(i, 5).Value <> "") Then
'If objUser.Get("telephoneNumber") <> Worksheets("Лист1").Cells(i, 5).Value Then
objUser.Put "telephoneNumber", Worksheets("Лист1").Cells(i, 5).Value
'End If
End If
objUser.SetInfo
End If
'Конец изминение свойст пользователя
i = i + 1
Loop
'Конец цикла перебора строк в Excel'e
MsgBox ("Выполнение завершено")
Автор: net19
Дата сообщения: 16.03.2010 16:52
Всем привет! Треба vbs-помощь. Поставлена задача - прописать альтернативный dns на всех тачках в сети. Названия компов берутся из файла comp.txt. Те компы что не пинганулись записать в файл not_comp.txt. Вот что наваял на скорую:

Код:
ForReading = 1
strDNS = Array("10.10.1.5","10.10.1.7") ' первичный и вторичный адреса dns-серверов
Set objFSO = CreateObject ("Scripting.FileSystemObject")
Set CompFile = objFSO.OpenTextFile (".\comp.txt", ForReading)
strComputer = CompFile.ReadAll()
    colComp = split (strComputer, vbCrLf)
    Set noCompFile = objFSO.CreateTextFile (".\not_comp.txt", True)
    For Each compName in colComp
        Set objPing = GetObject ("winmgmts:{impersonationLevel=impersonate}").ExecQuery ("select * from Win32_PingStatus where address = '" & compName & "'")
     For Each objStatus in objPing
     If objStatus.StatusCode<>0 Then
                noCompFile.WriteLine compName
     Else
                Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & compName & "\root\cimv2")
                Set colCON = objWMI.ExecQuery("Select * " & _
" From Win32_NetworkAdapterConfiguration " & _
" Where IPENabled=TRUE")
    
For Each objCON In colCON

objCON.SetDNSServerSearchOrder strDNS


Exit For
Exit For
Exit For

Next
            End If
        Next
    Next
    CompFile.Close
    noCompFile.Close
WScript.Echo "Закончили!!!"
Автор: Hugo121
Дата сообщения: 16.03.2010 23:26

Код: For Each objCON In colCON

objCON.SetDNSServerSearchOrder strDNS
next

Exit For
Автор: GenyaMS
Дата сообщения: 17.03.2010 07:51
Здраствуйте! Есть такая задача - получить из Оперы (текст кода/тегов) открытой из VB тем же оператором Shell - страницы. Текст - записать в переменную?
очень нужен код
Автор: gourkuff
Дата сообщения: 17.03.2010 10:45
Ребят помогите с задачками ,а то у меня хреново с информатикой..

Задача 1.На Цикл
Предприятие оштрафовали на х рублей.за каждый день неуплаты к сумме штрафа добавляется пеня=0,5% от суммы штрафа.Сколько затратит через неделю.

Задача 2.На цикл
Норма газа за отопительный сезон составляет 100 км^3 на семью.Определить сколько м^3 было израсходовано сверх нормы.если n семей и каждая потребляет не меньше нормы.

Задача3
Температура больного изменялась в течении 2-х недель.Опередить,сколько дней держалось повышение?
Автор: masikrus
Дата сообщения: 17.03.2010 14:37
Помогите народ, не понимаю в чём косяк, создал скрипт


Код: Set Processes = GetObject("winmgmts://localhost")
Set myProcEnum = Processes.ExecQuery _
    ("SELECT * FROM Win32_Process")
For Each Proc In myProcEnum
If Proc.Name = "Informer.exe" Then
        Proc.Terminate
            End If
                Next
Автор: niichavo
Дата сообщения: 18.03.2010 15:08
masikrus

Цитата:
Есть идеи?

Например, служба "Инструментарий управления Windows" не запущена.
Устранение неполадок с инструментарием WMI в Windows XP с пакетом обновления 2 (SP2)
Автор: llanowar
Дата сообщения: 23.03.2010 12:29
День бодрый, есть вопрос.
Есть шара, надо получить список пользователей, у которых на нее есть права, со списком этих самых прав.
То есть в виде
\\server\public
Иванов - чтение, запись
Петров - чтение
Сидоров - чтение, запись.

на technet смотрел, но не нашел. Прошу помощи.
Автор: gi4417
Дата сообщения: 01.04.2010 14:01
Попалась на глаза книга Ганса-Йохима Берндта "Измерение, управление и регулирование с помощью макросов в Word и Excel".
В книге показано, как с помощью макросов VBA реализовать управление цмфровыми мультиметрами, релейными картами, модемами, ПК-интерфейсами и многое другое с помощью интерфейса RS-232 и библиотеки RSAPI.DLL.


Пример управления модемом:

Attribute VB_Name = "Modul1"
Declare Sub OPENCOM Lib "RSAPI.DLL" (ByVal Parameter$)
Declare Sub CLOSECOM Lib "RSAPI.DLL" ()
Declare Sub TIMEOUT Lib "RSAPI.DLL" (ByVal Ms%)
Declare Function READSTRING Lib "RSAPI.DLL" (ByVal S$) As Integer
Declare Sub SENDSTRING Lib "RSAPI.DLL" (ByVal S$)

Sub Модем()
If vbOK = MsgBox("Этот макрос передает модему, подключенному к порту COM1, команду 'ATI1'", vbOKCancel, "Опрос модема") Then
OPENCOM "COM1:19200,N,8,1"
TIMEOUT 300
SENDSTRING "ATI6" + Chr$(13)
S$ = Space$(200)
i = READSTRING(S$)
MsgBox Mid$(S$, 1, i), vbOKOnly + vbExclamation, "Ответ модема"
CLOSECOM
End If
End Sub

Ясно, что в WSH "Declare" нет. И это надо как-то обойти.
Используют dunwrap.dll, DynaCall.dll (Гюнтер Борн) и т.п.

1. Можно ли выполнять аналогично управление USB -устройствами и как это будет сложно это будет реализовать(на уровне VBA) ?

2. Как это можно реализовать в случае WSH?



Автор: nicka
Дата сообщения: 05.04.2010 00:23
есть папки films и autorun. в папке films находятся фильмы а в папке autorun находится файл autorun.ini в котором и нужно менять строчки

строчки которых нужно менять

title=Disc Title
...
button=Film Title 1
...
action=execute("films\Film Title 1.avi"), minimize
...
button=Film Title 2
...
action=execute("films\Film Title 2.avi"), minimize
...
button=Film Title 3
...
action=execute("films\Film Title 3.avi"), minimize

возможно чтоб при запуске скрипта появился месиджбокс примерно такого вида



и таким способом изменить строки в ini файле?
Автор: vlth
Дата сообщения: 05.04.2010 13:49
nicka, пока не очень понятна задача. Посмотрите предыдущую страницу Программирование "удобняшек" на VBScript, стр.75, может быть тот пример что-то подскажет...
Автор: nicka
Дата сообщения: 05.04.2010 15:37
vlth

Цитата:
Посмотрите предыдущую страницу

нет, к сожалению это не то...

задача менять выделенные жирным шрифтом строки на собственные посредством месиджбокса

например есть autorun.ini файл такого содержания


Цитата:
[justRun setup]
version=2
title=Disc Title
toffset=6
dimentions=1084, 570
images=Autorun.pcd
iindex=6
ioffset=10, 35
font=Arial, 12, $00EEEEEE, 1000
inactivecolor=$00666666

button=Film Title 1
rect=6, 538, 371, 24
action=execute("films\Film Title 1 .avi"), minimize
iindex=7
font=Tahoma, 10, clBlack, 1000

image=11
pos=6, 34

button=Film Title 2
rect=384, 538, 350, 24
action=execute("films\Film Title 2.avi"), minimize
iindex=7
font=Tahoma, 10, clBlack, 1000

button=Film Title 3
rect=741, 538, 336, 24
action=execute("films\Film Title 3 .avi"), minimize
iindex=7
font=Tahoma, 10, clBlack, 1000

image=12
pos=384, 34

image=13
pos=741, 34

button=
rect=1049, 6, 21, 21
action=close
iindex=0


чтоб при запуске скрипта появился месиджбокс с названием Disc Title я запишу например Oliver Hirschbiegel,

потом месиджбокс с названием Film Title 1 , запишу Das Experiment

затем Film Title 2 запишу Der Untergang

и Film Title 3 запишу The Invasion

и чтоб результат стал таким


Цитата:
[justRun setup]
version=2
title=Oliver Hirschbiegel
toffset=6
dimentions=1084, 570
images=Autorun.pcd
iindex=6
ioffset=10, 35
font=Arial, 12, $00EEEEEE, 1000
inactivecolor=$00666666

button=Das Experiment
rect=6, 538, 371, 24
action=execute("films\Das Experiment.avi"), minimize
iindex=7
font=Tahoma, 10, clBlack, 1000

image=11
pos=6, 34

button=Der Untergang
rect=384, 538, 350, 24
action=execute("films\Der Untergang.avi"), minimize
iindex=7
font=Tahoma, 10, clBlack, 1000

button=The Invasion
rect=741, 538, 336, 24
action=execute("films\The Invasion.avi"), minimize
iindex=7
font=Tahoma, 10, clBlack, 1000

image=12
pos=384, 34

image=13
pos=741, 34

button=
rect=1049, 6, 21, 21
action=close
iindex=0
Автор: Hugo121
Дата сообщения: 05.04.2010 16:52

Код:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("c:\autorun.ini")

Input1 = InputBox("Disc Title", "Disc Title", "")
Input2 = InputBox("Film Title 1", "Film Title 1", "")
Input3 = InputBox("Film Title 2", "Film Title 2", "")
Input4 = InputBox("Film Title 3", "Film Title 3", "")

objFile.WriteLine "[justRun setup]"
objFile.WriteLine "version=2"
objFile.WriteLine "title=" & Input1
objFile.WriteLine "toffset=6"
objFile.WriteLine "dimentions=1084, 570"
objFile.WriteLine "images=Autorun.pcd"
objFile.WriteLine "iindex=6"
objFile.WriteLine "ioffset=10, 35"
objFile.WriteLine "font=Arial, 12, $00EEEEEE, 1000"
objFile.WriteLine "inactivecolor=$00666666"
objFile.WriteLine ""
objFile.WriteLine "button=" & Input2
objFile.WriteLine "rect=6, 538, 371, 24"
objFile.WriteLine "action=execute(""films\" & Input2 & ".avi""), minimize"
objFile.WriteLine "iindex=7"
objFile.WriteLine "font=Tahoma, 10, clBlack, 1000"
objFile.WriteLine ""
objFile.WriteLine "image=11"
objFile.WriteLine "pos=6, 34"
objFile.WriteLine ""
objFile.WriteLine "button=" & Input3
objFile.WriteLine "rect=384, 538, 350, 24"
objFile.WriteLine "action=execute(""films\" & Input3 & ".avi""), minimize"
objFile.WriteLine "iindex=7"
objFile.WriteLine "font=Tahoma, 10, clBlack, 1000"
objFile.WriteLine ""
objFile.WriteLine "button=" & Input4
objFile.WriteLine "rect=741, 538, 336, 24"
objFile.WriteLine "action=execute(""films\" & Input4 & ".avi""), minimize"
objFile.WriteLine "iindex=7"
objFile.WriteLine "font=Tahoma, 10, clBlack, 1000"
objFile.WriteLine ""
objFile.WriteLine "image=12"
objFile.WriteLine "pos=384, 34"
objFile.WriteLine ""
objFile.WriteLine "image=13"
objFile.WriteLine "pos=741, 34"
objFile.WriteLine ""
objFile.WriteLine "button="
objFile.WriteLine "rect=1049, 6, 21, 21"
objFile.WriteLine "action=close"
objFile.Write "iindex=0"

objFile.Close


Автор: vlth
Дата сообщения: 05.04.2010 17:18

Цитата:
есть папки films и autorun. в папке films находятся фильмы...

Цитата:
задача менять выделенные жирным шрифтом строки на собственные посредством месиджбокса

nicka, может быть, лучше последовательно выбирать эти фильмы с помощью диалогового окна "Открыть файл" (в данном случае будет не "открыть", а "выбрать")?
Автор: nicka
Дата сообщения: 05.04.2010 18:16
vlth

Супер!

всё работает!

Цитата:
может быть, лучше последовательно выбирать эти фильмы с помощью диалогового окна "Открыть файл" (в данном случае будет не "открыть", а "выбрать")?


было бы здорово!

и будет это работать на других Autorun.ini файлах? например где эти значения будут разными?

Цитата:
toffset=6
dimentions=1084, 570
images=Autorun.pcd
iindex=6
ioffset=10, 35
font=Arial, 12, $00EEEEEE, 1000
inactivecolor=$00666666
...
button=Film Title 1
rect=6, 538, 371, 24
action=execute("films\Film Title 1 .avi"), minimize
iindex=7
font=Tahoma, 10, clBlack, 1000


и если фильмов будет не 3 а 4? 5?

...и чтоб при запуске скрипта был возможен выбор этого *.ini файла...

Огромное Вам Спасибо!
Автор: Hugo121
Дата сообщения: 05.04.2010 18:40
Чтоб при запуске выбрать ини-файл - добавьте к тому, что я писал выше, в начале до строки
Input1 = InputBox("Disc Title", "Disc Title", "")


Код:
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "All Files|*.*"
objDialog.InitialDir = "C:\"
intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
toFile = objDialog.FileName
End If

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(toFile)
Автор: Dimau1981
Дата сообщения: 05.04.2010 18:43
А как процесс убить, чтобы программа корректно завершалась?
После:
ProcessClose("IExplore.exe")
Function ProcessClose(sProcName)
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & sProcName & "'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
End Function
программа считает, что был сбой, и предлагает выполнить определенные действия. Как можно не "убить" процесс, а послать сигнал завершения (аналогично нажатию красного крестика справа вверху)?
Автор: Hugo121
Дата сообщения: 05.04.2010 19:30
nicka, вот вариант с выбором ини-файла и трёх фильмов. Расчитано именно на *.avi - трёхбуквенное расширение, с *.mpeg сработает неправильно (да их и открыть не получится в этом варианте)

Код:
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "ini Files|*.ini"
objDialog.InitialDir = "C:\"
intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
toFile = objDialog.FileName
End If

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(toFile)

Input1 = InputBox("Disc Title", "Disc Title", "")

objDialog.Filter = "AVI Files|*.avi"

intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
toFile = objDialog.FileName
End If
arr = split(toFile, "\")

Input2 = Left(arr(ubound(arr)), Len(arr(ubound(arr))) - 4)

intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
toFile = objDialog.FileName
End If
arr = split(toFile, "\")

Input3 = Left(arr(ubound(arr)), Len(arr(ubound(arr))) - 4)

intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
toFile = objDialog.FileName
End If
arr = split(toFile, "\")

Input4 = Left(arr(ubound(arr)), Len(arr(ubound(arr))) - 4)

objFile.WriteLine "[justRun setup]"
objFile.WriteLine "version=2"
objFile.WriteLine "title=" & Input1
objFile.WriteLine "toffset=6"
objFile.WriteLine "dimentions=1084, 570"
objFile.WriteLine "images=Autorun.pcd"
objFile.WriteLine "iindex=6"
objFile.WriteLine "ioffset=10, 35"
objFile.WriteLine "font=Arial, 12, $00EEEEEE, 1000"
objFile.WriteLine "inactivecolor=$00666666"
objFile.WriteLine ""
objFile.WriteLine "button=" & Input2
objFile.WriteLine "rect=6, 538, 371, 24"
objFile.WriteLine "action=execute(""films\" & Input2 & ".avi""), minimize"
objFile.WriteLine "iindex=7"
objFile.WriteLine "font=Tahoma, 10, clBlack, 1000"
objFile.WriteLine ""
objFile.WriteLine "image=11"
objFile.WriteLine "pos=6, 34"
objFile.WriteLine ""
objFile.WriteLine "button=" & Input3
objFile.WriteLine "rect=384, 538, 350, 24"
objFile.WriteLine "action=execute(""films\" & Input3 & ".avi""), minimize"
objFile.WriteLine "iindex=7"
objFile.WriteLine "font=Tahoma, 10, clBlack, 1000"
objFile.WriteLine ""
objFile.WriteLine "button=" & Input4
objFile.WriteLine "rect=741, 538, 336, 24"
objFile.WriteLine "action=execute(""films\" & Input4 & ".avi""), minimize"
objFile.WriteLine "iindex=7"
objFile.WriteLine "font=Tahoma, 10, clBlack, 1000"
objFile.WriteLine ""
objFile.WriteLine "image=12"
objFile.WriteLine "pos=384, 34"
objFile.WriteLine ""
objFile.WriteLine "image=13"
objFile.WriteLine "pos=741, 34"
objFile.WriteLine ""
objFile.WriteLine "button="
objFile.WriteLine "rect=1049, 6, 21, 21"
objFile.WriteLine "action=close"
objFile.Write "iindex=0"

objFile.Close

Автор: nicka
Дата сообщения: 05.04.2010 19:48
Hugo121

Цитата:
вот вариант с выбором ини-файла и трёх фильмов

да, работает этот подкоректированный вариант

Цитата:
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "ini Files|*.ini"
objDialog.InitialDir = "C:\"
intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
toFile = objDialog.FileName
End If

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(toFile)

Input1 = InputBox("Disc Title", "Disc Title", "")

objDialog.Filter = "AVI Files|*.avi"

intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
toFile = objDialog.FileName
End If
arr = split(toFile, "\")

Input2 = Left(arr(ubound(arr)), Len(arr(ubound(arr))) - 4)

intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
toFile = objDialog.FileName
End If
arr = split(toFile, "\")

Input3 = Left(arr(ubound(arr)), Len(arr(ubound(arr))) - 4)

intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
toFile = objDialog.FileName
End If
arr = split(toFile, "\")

Input4 = Left(arr(ubound(arr)), Len(arr(ubound(arr))) - 4)

objFile.WriteLine "[justRun setup]"
objFile.WriteLine "version=2"
objFile.WriteLine "title=" & Input1
objFile.WriteLine "toffset=6"
objFile.WriteLine "dimentions=1055, 537"
objFile.WriteLine "images=Autorun.pcd"
objFile.WriteLine "iindex=6"
objFile.WriteLine "ioffset=10, 35"
objFile.WriteLine "font=Arial, 12, $00EEEEEE, 1000"
objFile.WriteLine "inactivecolor=$00666666"
objFile.WriteLine ""
objFile.WriteLine "button=" & Input2
objFile.WriteLine "rect=6, 510, 343, 24"
objFile.WriteLine "action=execute(""films\" & Input2 & ".avi""), minimize"
objFile.WriteLine "iindex=7"
objFile.WriteLine "font=Tahoma, 10, clBlack, 1000"
objFile.WriteLine ""
objFile.WriteLine "image=11"
objFile.WriteLine "pos=6, 34"
objFile.WriteLine ""
objFile.WriteLine "button=" & Input3
objFile.WriteLine "rect=356, 510, 343, 24"
objFile.WriteLine "action=execute(""films\" & Input3 & ".avi""), minimize"
objFile.WriteLine "iindex=7"
objFile.WriteLine "font=Tahoma, 10, clBlack, 1000"
objFile.WriteLine ""
objFile.WriteLine "button=" & Input4
objFile.WriteLine "rect=706, 510, 343, 24"
objFile.WriteLine "action=execute(""films\" & Input4 & ".avi""), minimize"
objFile.WriteLine "iindex=7"
objFile.WriteLine "font=Tahoma, 10, clBlack, 1000"
objFile.WriteLine ""
objFile.WriteLine "image=12"
objFile.WriteLine "pos=356, 34"
objFile.WriteLine ""
objFile.WriteLine "image=13"
objFile.WriteLine "pos=706, 34"
objFile.WriteLine ""
objFile.WriteLine "button="
objFile.WriteLine "rect=1021, 6, 21, 21"
objFile.WriteLine "action=close"
objFile.Write "iindex=0"

objFile.Close


...но почему то режет названия фильмов
например вместо The Children of Times Square пишет The Children of Times Sq
вместо The Bedroom Window пишет The Bedroom Wi
вместо Bad Influence пишет Bad Influ

а нельзя ли "закомментировать" те строки которые меняются чтоб игнорировать их значения?
Автор: Dimau1981
Дата сообщения: 05.04.2010 19:58
Hugo121, подскажите мне плиз
А как процесс убить, чтобы программа корректно завершалась?
После:
ProcessClose("IExplore.exe")
Function ProcessClose(sProcName)
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & sProcName & "'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
End Function
программа считает, что был сбой, и предлагает выполнить определенные действия. Как можно не "убить" процесс, а послать сигнал завершения (аналогично нажатию красного крестика справа вверху)?

Можно ли создать сообщение, типа WScript.Echo, хорошо бы и без надписи "ОК", но которое само закроется по истечению определенного времени?

И еще, подскажите плиз, как записать WshShell.Run("iexplore.exe"), но с полным путем к ИЕ? Вариант WshShell.Run(""C:\Program Files\Internet Explorer\iexplore.exe"") не работает.
Автор: Hugo121
Дата сообщения: 05.04.2010 20:29
Dimau1981, я не знаю, Ваш код у меня отработал без сбоя. На остальные вопросы я не отвечу, пусть кто поопытнее ответит.

nicka - т.е. Вы хотите в существующем файле просто подменить надписи на кнопках и ссылки на фильм, не меняя существующее оформление и расположение кнопок?
Вероятно можно привязаться к строкам
button=названиефильма
если их длина больше 7, то в это место и через строку ставим фильм. Но это исходя из примера, если вдруг на кнопке закрытия тоже будет надпись - то этот алгоритм даст сбой.
Так сделать можно, но возни много...
Автор: nicka
Дата сообщения: 05.04.2010 20:37
Hugo121

Цитата:
Вы хотите в существующем файле просто подменить надписи на кнопках и ссылки на фильм, не меняя существующее оформление и расположение кнопок?

да да хотелось бы именно так...
но почему режет названия?
смотрите мои предидущий отредактированный пост
Автор: Dimau1981
Дата сообщения: 05.04.2010 20:48

Цитата:
Dimau1981, я не знаю, Ваш код у меня отработал без сбоя. На остальные вопросы я не отвечу, пусть кто поопытнее ответит.

Да, он отрабатывает, но при последующем запуску ИЕ - он говорит, что произошел сбой, и предлагает поискать ошибку или открыть домашнюю страницу...
Автор: Hugo121
Дата сообщения: 05.04.2010 21:06
Dimau1981 - у меня потом нормально открылся...

nicka - у Вас вероятно в настройках системы выставлено "скрывать расширения у известных типов файлов", поэтому он режет 4 знака от названия, а не от название.avi.
Тогда уберите "-4".
Да и вообще

Код: arr = split(toFile, "\")
Input2 = Left(arr(ubound(arr)), Len(arr(ubound(arr))) - 4)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

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


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