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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Задача вполне реальная: да, необходимо рекурсивно перебрать все подпапки в указанном каталоге, выбрать все, содержащие в имени некое слово 'folder' (т .е. выбор по маске), в цикле сравнить каждый из найденных с шаблоном и в зависимости от совпадения выполнить действие.
Пока получился вот такой вариант  

Код:
strComputer = "."
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colItems = wmi.ExecQuery("Select * from Win32_Directory where drive=""c:"" and  and filename like '%folder%'")
For Each objItem in colItems
If StrComp(objItem.name,"C:\Reminder2",1)=0 Then
действие
Else
 If StrComp(objItem.name,"C:\Program Files\Reminder",1)=0 Then
 Else
  If StrComp(objItem.name,"C:\Program Files (x86)\Reminder",1)=0 Then
  Else
  End If
 End If
End If
Next

но может можно как-то "правильнее"?  

Цитата:
оснастку wmi то зачем насиловать, когда а)действия производятся локально, б)есть чудо объект под названием FSO (FileSystemObject).

Я не слишком хорошо знаком с vbs, может быть вы подскажите как с помощью FileSystemObject выбрать все папки содержащие в имени слово 'folder'?  
Запрос wmi применяется потому, что точное расположение искомой папки неизвестно заранее.  
 

Всего записей: 12 | Зарегистр. 22-07-2007 | Отправлено: 10:36 24-12-2011
ComradG



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

Цитата:
Запрос wmi применяется потому, что точное расположение искомой папки неизвестно заранее.
странное однако представление о wmi. советую перечитать на досуге мантры под названием msdn (курить до просветления, а не до галюнов). ежели серьезно, то вкратце попробую объяснить отчего в данном случае использовать wmi является моветоном. во-первых, wmi лучше использовать в случаях удаленного администрирования или нужды доступа к win-объекту, а раз так, то смотрим в сторону FSO.
Код:
Set objFSO = CreateObject("Scripting.FileSystemObject")
данная команда создаст ссылку на объект FSO. ссылка, конечно, хорошо, но что данный объект может? let's take a look:
Код:
Const FIXED_DRIVE = 2
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
 
For Each drive In colDrives
  If drive.Type = FIXED_DRIVE Then
    WScript.Echo drive.Letter & ":\"
  End If
Next
в итоге получаем список всех жестких дисков системы без каких-либо танцев с бубном сношений с wmi. то есть если в решение задачи входит пункт "место расположение каталога неизвестно ВАЩЕ", было бы неплохо перебрать винты, не так ли?
шагаем далее. как получить с помощью FSO список каталогов некоторой папки? folder.vbs
Код:
Set objArgs = WScript.Arguments
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(objArgs(0))
'подкаталоги папки
Set colSubfolders = objFolder.Subfolder
'файлы папки
Set colFiles = objFolder.Files
 
'выведем имена всех подкаталогов каталога (не рекурсия)
For Each subfolder In colSubfolders
  WScript.Echo subfolder.Name
Next
 
'выведем имена всех файлов
For Each file In colFiles
  WScript.Echo file.Name
Next
пример использования:
Код:
cscript //nologo folder.vbs "c:\program files"
в заключении о рекурсии. попробую с ходу накидать пример.
Код:
Set objArgs = WScript.Arguments
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(objArgs(0))
 
GetFoldersList(objFolder)
 
Sub GetFilesList(ByVal dir)
  Set colFiles = dir.Files
  For Each file In colFiles
    WScript.Echo file.Path
  Next
End Sub
 
Sub GetFoldersList(ByVal dir)
  Set colFolders = dir.Folders
  For Each folder In colFolders
    WScript.Echo folder.Path
  Next
  GetFoldersList(folder)
End Sub
сразу оговорюсь, что рекурсию я реализовывал лишь на JScript, а это - ее перевод в синтаксис vbs на скорую руку, поэтому ежели будут косяки, то милости просим.
да! на счет перебора. чтобы не мучаться и не рисовать монстра из n-ого количества If...Then...Else, гораздо проще было бы создать два массива: в первом содержатся шаблоны поиска, второй - вывод рекурсивного обхода. причем если бы во втором элемент не совпадает с параметрами поиска, то он удаляется. другой вариант - регулярные выражения. если первый способ более подходит для "полиморфного" поиска, то второй для статического, то есть если требуется искать каталог с названием "folder_n", где n - целое число, то регулярки самое оно.
все! думайте, пробуйте, решайте, а главное читайте msdn.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 16:37 24-12-2011 | Исправлено: ComradG, 17:00 24-12-2011
diskmen

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Благодарю за примеры. Ушел курить читать мануалы.

Всего записей: 12 | Зарегистр. 22-07-2007 | Отправлено: 01:21 25-12-2011
atomheart



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть вот такой скрипт для WinXPrus, который должен отключать сетевой адаптер:

Код:
Const ssfCONTROLS = 3
 
sConnectionName = "KStar"
 
'For English versions of Windows
'sEnableVerb = "En&able"
'sDisableVerb = "Disa&ble"
 
'For Russian versions of Windows
sEnableVerb = "&Включить"
sDisableVerb = "Откл&ючить"
 
set shellApp = createobject("shell.application")
set oControlPanel = shellApp.Namespace(ssfCONTROLS)
 
set oNetConnections = nothing
for each folderitem in oControlPanel.items
if folderitem.name  =  "Сетевые подключения" then
    set oNetConnections = folderitem.getfolder: exit for
  end if
next
 
if oNetConnections is nothing then
  msgbox "Couldn't find 'Network and Dial-up Connections' folder"
  wscript.quit
end if
 
set oLanConnection = nothing
for each folderitem in oNetConnections.items
  if lcase(folderitem.name)  = lcase(sConnectionName) then
    set oLanConnection = folderitem: exit for
  end if
next
 
if oLanConnection is nothing then
  msgbox "Couldn't find '" & sConnectionName & "' item"
  wscript.quit
end if
 
set oDisableVerb = nothing
for each verb in oLanConnection.verbs
  if verb.name = sDisableVerb then
    set oDisableVerb = verb
    oDisableVerb.DoIt
  end if
next
 
wscript.sleep 1000
 

Когда его запускаю, никаких ошибок не выдаёт, но и не исполняется. Подскажите, пожалуйста, как его заставить работать.

Всего записей: 130 | Зарегистр. 14-04-2008 | Отправлено: 17:26 25-12-2011 | Исправлено: atomheart, 18:04 26-12-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
atomheart
самое первое что бросается в глаза, так это
Код:
Const ssfCONTROLS = 3
насколько мне не изменяет память, то данные Shell.Application должны быть в шестнадцатиричной кодировке, а не в десятичной. а дальне я даже смотреть не стал, фиксить чужие ошибки уже порядком поднадоело.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 13:23 26-12-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
atomheart
Через WMI, хоть ComradG его и не любит. Просмотри список. У Win32_NetworkAdapter (objNetCard) есть метод Disable соответственно.

Код:
 
On Error Resume Next
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
Set colNetCards = objWMIService.ExecQuery _
    ("Select * From Win32_NetworkAdapter Where NetConnectionID Is Not Null")
 
For Each objNetCard in colNetCards
    WScript.Echo objNetCard.Name & " -- " & objnetcard.NetConnectionID
Next
 


Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 14:51 26-12-2011
atomheart



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
Запустил твой скрипт. Вот результат:
   
Что дальше?

Всего записей: 130 | Зарегистр. 14-04-2008 | Отправлено: 18:09 26-12-2011
megamozg13



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
atomheart
ну вам же 99% разжевали, стыдно должно быть...
вот
 

Код:
 For Each objNetCard in colNetCards  
     WScript.Echo objNetCard.Name & " -- " & objnetcard.NetConnectionID  
     errReturn = objNetCard.Disable()
    If errReturn <> 0 Then
      WScript.Echo "Disable Network adapter failed for adapter= " & objnetcard.DeviceId
    Else  
      WScript.Echo "Disable Network adapter succeeded for adapter= " & objnetcard.DeviceId
    End If  
 Next
 

 
вопрос только вот:
Requirements
Minimum supported client    Windows Vista
Minimum supported server    Windows Server 2008
 
 
 

Всего записей: 313 | Зарегистр. 27-07-2004 | Отправлено: 18:24 26-12-2011 | Исправлено: megamozg13, 18:29 26-12-2011
atomheart



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
megamozg13
Строка: 1
Символ: 2
Ошибка: Объект не является семейством
Код: 800А01С3
Источник: Ошибка выполнения Microsoft VBScript
 
По вашей ссылке речь идёт о Win32_NetworkAdapter class, я не вижу, чтобы он встречался в приведённом вами коде.
Мне было бы стыдно, если б у меня был такой же мегамоск, какой, видимо, у вас, а т.к. в кодинге я ничего не смыслю, то и стыдиться мне не приходится. Если есть желание помочь - помогите готовым скриптом, может, ещё кому-нибудь пригодится. А не хотите - тогда извините за беспокойство.

Всего записей: 130 | Зарегистр. 14-04-2008 | Отправлено: 21:33 26-12-2011
megamozg13



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
atomheart
да тут даже не программирование, а наблюдательность. я привёл пример тела цикла, вот попробуйте скрипт целиком.
 
On Error Resume Next  
   
 strComputer = "."  
 Set objWMIService = GetObject("winmgmts:" _  
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
   
 Set colNetCards = objWMIService.ExecQuery _  
     ("Select * From Win32_NetworkAdapter Where NetConnectionID Is Not Null")  
   
For Each objNetCard in colNetCards  
      WScript.Echo objNetCard.Name & " -- " & objnetcard.NetConnectionID  
      errReturn = objNetCard.Disable()  
     If errReturn <> 0 Then  
       WScript.Echo "Disable Network adapter failed for adapter= " & objnetcard.DeviceId  
     Else  
       WScript.Echo "Disable Network adapter succeeded for adapter= " & objnetcard.DeviceId  
     End If  
  Next  
 

Всего записей: 313 | Зарегистр. 27-07-2004 | Отправлено: 08:43 27-12-2011
atomheart



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
megamozg13
Спасибо за помощь, но всё равно не вылючает соединение. Ну да ладно, я нашёл более простое решение: с помощью net start/stop  - вкл/выкл DHCP клиент. Так даже удобнее - не надо отключать адаптер.

Всего записей: 130 | Зарегистр. 14-04-2008 | Отправлено: 16:57 27-12-2011
chel78



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

Код:
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
oAutoIt.MouseMove 300, 400, 0
oAutoIt.MouseDown "left"
oAutoIt.MouseUp "left"
oAutoIt.MouseMove 300, 401, 0
oAutoIt.MouseDown "left"
oAutoIt.MouseUp "left"
oAutoIt.MouseMove 300, 402, 0
oAutoIt.MouseDown "left"
oAutoIt.MouseUp "left"
oAutoIt.MouseMove 300, 403, 0
oAutoIt.MouseDown "left"
oAutoIt.MouseUp "left"
...
oAutoIt.MouseMove 301, 400, 0
oAutoIt.MouseDown "left"
oAutoIt.MouseUp "left"
oAutoIt.MouseMove 301, 401, 0
oAutoIt.MouseDown "left"
oAutoIt.MouseUp "left"
oAutoIt.MouseMove 301, 402, 0
oAutoIt.MouseDown "left"
oAutoIt.MouseUp "left"
oAutoIt.MouseMove 301, 403, 0
oAutoIt.MouseDown "left"
oAutoIt.MouseUp "left"
...

Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 18:32 08-01-2012 | Исправлено: chel78, 20:31 08-01-2012
AndVGri

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

Код:
 
For x = 300 To 400
   For y = 400 To 500
       'повтор
       oAutoIt.MouseMove x, y, 0  
       '....
   Next
Next
 

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 05:01 09-01-2012
chel78



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

Цитата:
А что For не работает?  

спасибо, попробую..
p.s.  сорри, просто я нуб в этом..

Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 13:48 09-01-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
давно не был в этой ветке, а здесь между тем бурное обсуждение...
AndVGri
Цитата:
Через WMI, хоть ComradG его и не любит.
попросил бы инсинуации держать при себе.
megamozg13нафига там вообще impersonationLevel? что к чему? расписывать от и до влом, поэтому лови пример:
Код:
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapter " _
  & "Where NetConnectionID = 'Local Area Connection 2'")
 
For Each objItem in colItems
    strMACAddress = objItem.MACAddress
Next
вот тебе и маки без всяких левелов.

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



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

Код:
Const adVarChar = 200
Const MaxCharacters = 255
 
Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "FileName", adVarChar, MaxCharacters
DataList.Fields.Append "FileDate", adVarChar, MaxCharacters
DataList.Open
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\My Folder")
 
Set colFiles = objFolder.Files
 
For Each objFile in colFiles
    DataList.AddNew
    DataList("FileName") = objFile.Path
    DataList("FileDate") = objFile.DateCreated
    DataList.Update
Next
 
DataList.Sort = "FileDate"
 
DataList.MoveFirst
i = 1
 
Do Until DataList.EOF
    If i < 10 Then
        x = CStr("000" & i)
    ElseIf i < 100 Then
        x = CStr("00" & i)
    ElseIf i < 1000 Then
        x = CStr("0" & i)
    Else
        x = i
    End If
 
    strNewName = "C:\My Folder\file_2012_" & x & ".jpg"
    objFSO.MoveFile DataList.Fields.Item("FileName"), strNewName
 
    i = i + 1
    DataList.MoveNext
Loop

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 14:39 14-01-2012 | Исправлено: ComradG, 14:42 14-01-2012
AKBA

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне требуется решить вот такую проблему:  
 1 - имеется документ MS Word  
 2 - он состоит из двух страниц  
 3 - на первой странице документа в четырех местах имеется шифр вида хххххх  
 4 - этот шифр необходимо менять в арифметической последовательности хххххх+1, а остальной текст оставлять без изменений  
 Что можно сделать такое, чтобы я например, забивал первый и последний номер шифра, нажимал печать и документ автоматически бы распечатывался на одном листе с двух сторон в необходимом количестве экземпляров?
 
Evgeny972
Написать нужную приблуду на VBA, сохраняемую в том же документе, и прикрутить кнопку
 
Евгений, в том то и дело, что я на текущий момент времени очень слабо представляю что это такое и с чем едят, поэтому мне бы очень хотелось получить более конкретную помощь.
Я готов самостоятельно почитать, просто скажите в каком направлении мне действовать.

Всего записей: 68 | Зарегистр. 30-09-2007 | Отправлено: 16:59 14-01-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AKBA
можно вполне обойтись и без VBA.
Код:
Const wdReplaceAll  = 2
 
Set objWord = CreateObject("Word.Application")
objWord.Visible = True 'если True - окно видимо, False - идет лесом
 
Set objDoc = objWord.Documents.Open("C:\MyFolder\MyDoc.doc")
Set objSelection = objWord.Selection
 
objSelection.Find.Text = "xxxxxx"
objSelection.Find.Forward = TRUE
objSelection.Find.MatchWholeWord = TRUE
 
objSelection.Find.Replacement.Text = "xxxxxy"
objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll
в данном примере реализуется "разовая" замена значения хххххх на ххххху, - для того, чтобы искать шифр можно было и после его инкрементации, то лучше всего обратиться к регулярным выражениям (пример можно посмотреть здесь). относительно печати можешь глянуть здесь.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 16:37 15-01-2012
Gulkov



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
У меня задача: нужно сделать подключение принтера в терминальной сессии. Но нужно подключать определенный принтер в зависимости от того с какого компа зашел пользователь. Т.е. в AD каждому принтеру соответствует группа, членами которой являются близлежайшие компьютеры. Таким образом, мигрирующий по разным компам пользователь всегда имеет возможность печати с терминального сервера на ближний принтер. Создал скрипт. Работает прекрасно, но только на 2003 сервере. На 2008 сервере метод IsMember почему-то всегда true. Подскажите кто знает, что не так в 2008?

Код:
 
Set objShell = WScript.CreateObject("WScript.Shell")
 
If IsThisCompAMamberOfGroup("prn_hp1102wA1-1") Then  
  strResult = mapPrinter("\\192.168.0.3\HP1102w","",True)
End If
 
Function IsThisCompAMamberOfGroup(strGroup)
  On Error Resume Next
  IsThisCompAMamberOfGroup = False
  Set objNetwork = WScript.CreateObject("WScript.Network")
  strDomain = objNetwork.UserDomain
  set WshShell = WScript.CreateObject("WScript.Shell")
  stromp = WshShell.ExpandEnvironmentStrings("%ClientName%")
  Set objUser=GetObject("WinNT://" & strDomain & "/" & stromp & ",computer")
  Set objGrp=GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")  
  If objGrp.IsMember(objUser.ADsPath & "$") Then
    IsThisCompAMamberOfGroup=True
  End If
End Function
 
Function mapPrinter(strNetShare,strPort,blnDefault)
  on error resume next
  Set objNetwork = CreateObject("WScript.Network")
  If strPort<>"" Then  
    objNetwork.AddWindowsPrinterConnection strPort, strNetShare
  Else
    objNetwork.AddWindowsPrinterConnection strNetShare
  End If
  If Err.Number<>0 Then mapPrinter =  Err.Description
  If Err.Number=0 And blnDefault Then objNetwork.SetDefaultPrinter strNetShare
  If Err.Number<>0 Then mapPrinter = mapPrinter & vbCRLF & Err.Description
End Function
 

 
Другой вариант рассматривал - перечислить в переменную все группы, где числится комп с которого терминалится пользователь:  

Код:
 
set WshShell = WScript.CreateObject("WScript.Shell")
Set objSysInfo = CreateObject("ADSystemInfo")  
strUserDN = objSysInfo.userName  
Set UserObj = GetObject("WinNT://" & strUserDN)  
UserGroups=""
For Each GroupObj In UserObj.Groups
        UserGroups= UserGroups & "[" & GroupObj.Name & "]"
Next  
 

Потом сравнивать с подстрокой нужной группы:

Код:
 
Function InGroup(strGroup)
        InGroup=False
        If InStr(UserGroups,"[CN=" &amp; strGroup &amp; "]") Then
                InGroup=True
        End If
End Function
 

С перечислением групп пользователя проходит, но поменяв
strUserDN = WshShell.ExpandEnvironmentStrings("%ClientName%")
пришлось обламаться - не поддерживается для объекта computer
 

Всего записей: 18 | Зарегистр. 27-02-2008 | Отправлено: 16:34 19-01-2012 | Исправлено: Gulkov, 17:18 19-01-2012
3aki



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

Код:
 
start /w rasphone.exe -f "rasphone.pbk" -d  "1c-vpn"
ping -w 1 -n 2 10.10.10.4 >nul
if %ERRORLEVEL% == 0 ( start /w 1c.rdp
rasdial /D )
 

Всего записей: 122 | Зарегистр. 05-12-2006 | Отправлено: 19:06 19-01-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