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

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

Автор: ViSiToR
Дата сообщения: 09.03.2007 13:28
Nagual

Цитата:
кто нить сталкивался с задачей копирования из буфера обмена?

Если нужно просто получить текст с буфера, можно так:


Код: Set objHTM = CreateObject("htmlfile")
strTXT = objHTM.ParentWindow.ClipboardData.GetData("text")

If strTXT <> "" Then MsgBox strTXT
Автор: igor_andreev
Дата сообщения: 09.03.2007 13:41

Цитата:
А вот как получить путь к файлу скопированному в буфер обмена (для его перемещения/копирования в другое место), вот это я бы и сам хотел узнать
Зачем файл то копировать в буфер, если его нужно отправить в другое место? Отдавай его сразу скрипту, как %1 в батнике :)

Код:
If WScript.Arguments.Count = 1 Then
sFile= WScript.Arguments.Item(0)
msgbox sFile
Else
msgbox "I want file as argument :-("
End If
Автор: ViSiToR
Дата сообщения: 09.03.2007 16:24
igor_andreev

Цитата:
Зачем файл то копировать в буфер, если его нужно отправить в другое место? Отдавай его сразу скрипту, как %1 в батнике

Не, я допустим в проводнике копирнул файл (правой кнопкой по нём и пункт “Копировать”), тепреь я хочу получить этот путь (к файлу который хочу скопировать) в переменную, чтобы потом работать с ней/с ним, с файом (перемещать/копировать в другое место, или просто прописывать где надо путь к нему).
Автор: igor_andreev
Дата сообщения: 09.03.2007 18:48
ViSiToR

Цитата:
Не, я допустим в проводнике копирнул файл

Ну ты же не путь к файлу копирнул, ты копирнул в буфер обмена кучку бинарных данных. Я батники-скрипты часто пишу, посему давно уже пользуюсь вот этим http://myfreeware.narod.ru/products/Path2Clipboard.htm
Автор: ViSiToR
Дата сообщения: 09.03.2007 19:45
igor_andreev

Цитата:
Ну ты же не путь к файлу копирнул, ты копирнул в буфер обмена кучку бинарных данных. Я батники-скрипты часто пишу, посему давно уже пользуюсь вот этим http://myfreeware.narod.ru/products/Path2Clipboard.htm

Ты меня не понял (я для копирования пути/имени сделал утилитку на AutoIT, а также есть FileMenu Tools очень класная утилита), мне нужно управлять фйлами из скрипта, т.е не просто коипровать/перемещать файлы, а именно используя те самые бинарные данные из буфера обмена.

Я в проводнике копирую файл (без всяких утилит), и хочу иметь возможность из скрипта просто управлять этим файлом (иметь к нему доступ, будь то из переменной, или расшифрованного бинарного кода).

А было бы совсем не плохо, если бы можно было копировать в буфер обмена файл, т.е помещать туда теже бинарные данные (основываясь на пути к файлу), и чтобы из проводника было возможно потом вставить этот файл (из буфера обмена).
Автор: Nagual
Дата сообщения: 14.03.2007 10:17
ViSiToR
Function BuildPath(ByVal Path As String, ByVal Name As String) As String

Generate a path from an existing path and a name
Автор: ViSiToR
Дата сообщения: 14.03.2007 14:16
Nagual

Цитата:
Function BuildPath(ByVal Path As String, ByVal Name As String) As String

Generate a path from an existing path and a name

Это не то.
Автор: MezzoForte
Дата сообщения: 15.03.2007 12:22
Всем привет!
Подскажите, а можно ли отловить событие внешнего приложения?
К примеру, надо отловить событие ворда на открытие документа.

На VBA всё достаточно просто - простейшее withevents, а вот на VBS совсем не получается
Я понимаю, что надо использовать цикл while.... do..
В вот что написать внутри ?

Заранее спасибо

Добавлено:
да, извиняюсь, что сразу не сказал - использование wscript запрещено
Автор: AndVGri
Дата сообщения: 15.03.2007 13:42
MezzoForte

Option Explicit
Dim wrd, curCount
Set wrd = GetObject(,"Word.Application")
curCount = wrd.Documents.Count
Do Until curCount <> wrd.Documents.Count
Loop
msgbox wrd.Documents.Count

Только, проц не жалко?
Автор: jONES1979
Дата сообщения: 15.03.2007 14:59
MezzoForte

Цитата:
использование wscript запрещено

а что разрешено? cscript ? если да, то какая разница между ними в контексте данного вопроса?
Автор: gap5
Дата сообщения: 15.03.2007 15:39
Нужно при логоне пользователя будет:
а) очищать корзину
б) сортировать иконки на рабочем столе

С пунктом а) пока затык. Кое-как получилось это сделать, но все равно спрашивает подтверждение.

С пунктом б) есть следующий скрипт:

[no]' Create explorer command file to toggle desktop window
Set oFSO = CreateObject("Scripting.FileSystemObject")
sSCFFile= oFSO.BuildPath(oFSO.GetSpecialFolder(2), oFSO.GetTempName &".scf")
With oFSO.CreateTextFile(sSCFFile, True)
.WriteLine("[Shell]")
.WriteLine("Command=2")
.WriteLine("[Taskbar]")
.WriteLine("Command=ToggleDesktop")
.Close
End With

' Toggle desktop and send F5 (refresh)
With CreateObject("WScript.Shell")
.Run """" & sSCFFile & """"
WScript.Sleep 50
.Sendkeys "{F5}+{F10}in"
WScript.Sleep 50
.Run """" & sSCFFile & """"
End With

' Delete explorer command file
oFSO.DeleteFile sSCFFile
' *** EOF ***
[/no]

Но одна проблема - не работает под учетной записью юзера.

Есть идеи?
Автор: Roma4799
Дата сообщения: 15.03.2007 22:27
Господа! Подскажите скриптик VBS который добавляет в реестр, автозагрузку! В инете их много видел но не один не работает! Спасибо!!!
Автор: ViSiToR
Дата сообщения: 16.03.2007 04:01
Roma4799

Цитата:
скриптик VBS который добавляет в реестр, автозагрузку!

Если имеется в виду запись программы которая должна самозапускаться при старте Windows, то это очень просто:


Код: Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\MyProgName", "MyProg.exe", "REG_SZ"
Автор: Roma4799
Дата сообщения: 18.03.2007 15:10
Большое спасибо, теперь получилось!
Автор: ViSiToR
Дата сообщения: 25.03.2007 04:44
Интересно, возможно ли сохранить в файл изображение которое находится в буфере обмена?

Т.е к примеру нажимаю на клаве “Print Screen”, в буфер(?) попадает картинка, вот нужно каким то образом сохранить её в файл, это реально?

P.S
Запуск разных системных приложении типа MSpaint для выполнения задачи, не канает
Автор: MezzoForte
Дата сообщения: 26.03.2007 15:03

Цитата:
AndVGri

неее )) Это не подключение к событиям. В данном скрипте Вы просто перебираете ко-во документов. Т.е. цикл по изменению св-ва. А мне необходимо именно подключение к событию
Если усложнить задачу, то на Document_New данный скрипт уже не отработает.


Цитата:
jONES1979
а что разрешено? cscript ? если да, то какая разница между ними в контексте данного вопроса?

Да, конечно - разрешен тока cscript. Разница в том, что я не могу(не знаю как) через cscript подключиться к событию. Если в wscripte это достаточно просто - то как это сделать на cscript?




Автор: AndVGri
Дата сообщения: 26.03.2007 16:47
MezzoForte

Цитата:
Если в wscripte это достаточно просто

Как это сделать вообще, пусть даже и в wscript? Просвятите, если не трудно
Автор: MezzoForte
Дата сообщения: 27.03.2007 12:11
Set myobject = WScript.CreateObject("someobjectwithevents", "myobject_")

В этом случае, WSH создаст экземпляр объекта Someobjectwithevents, и любая функция, начинающаяся с myobject_ и заканчивающаяся именем события, будет вызвана при возбуждении события. В WSH это достигается внутренней обработкой события и вызовом функции, которая удовлетворяет соглашению об именах. В VBScript это обычно не имеет большого удивления, поскольку синтакис "автомагического" перехвата событий выглядит как ИмяОбъекта_ИмяСобытия.

Взято с http://knowhow.virtech.ru/qa/42.2

Добавлено:
CreateObject
Синтаксис:

CreateObject(<ProgID>,<Prefix>)

Назначение:

Создаёт программный объект автоматизации.

Параметры:

<ProgID> - строка, программный идентификатор объекта (ProgID).
<Prefix> - необязательный, строка. Префикс функций-обработчиков событий. Если объект предоставляет интерфейсы для связи с событиями, после создания объекта с указанием этого параметра в сценарии можно обрабатывать события, возникающие в этом объекте. Когда объект сообщает о возникновении события, сервер сценариев вызывает соответствующую функцию. Например, если был указан префикс "Evt_", а событие называется "OnBegin", будет вызвана функция "Evt_OnBegin", которая должна быть описана в сценарии.


Описание:

При использовании "обычной" функции VBScript "CreateObject" организовать обработку событий нельзя.

Пример:

Set Network = WScript.CreateObject("WScript.Network")
MsgBox Network.ComputerName

Могу выслать полное описание wscript.

Автор: AndVGri
Дата сообщения: 27.03.2007 13:26
MezzoForte
Спасибо. Я правда вечерком тв MSDN поискал как, но не работает

Option Explicit
Dim objWord, fExit

Set objWord = GetObject(, "Word.Application")

WScript.ConnectObject objWord, "myword_"
fExit = False

Do Until fExit
    WScript.Sleep 10
Loop

Sub myword_DocumentOpen(ByVal Doc)
    WScript.Echo Doc.Name
    fExit = True
End Sub

Хотя, приблизительно такая же конструкция в VBA Excel c WithEvents, отрабатывает без проблем. В чём тут у меня ошибка?
Автор: jONES1979
Дата сообщения: 27.03.2007 13:59
удалено
Автор: MezzoForte
Дата сообщения: 04.04.2007 10:57
AndVGri

попробуй событие application quit )
Автор: minicoder
Дата сообщения: 07.04.2007 00:30
уважаимыи програмёры ... подскажити......

вот js скрипт .....

d = "C:\\1.txt";
fso = WScript.CreateObject("Scripting.FileSystemObject");
a = fso.OpenTextFile(d);
s = a.Read(20);
WScript.Echo (s);


вопрос....
можно ли подобное повторить с инет ссылкой например
"http://www.имя_сайта.ru/text/2.txt"

и как чтоб скрипт перед открытием текста проверял наличие подключения к инэту .... если инэт не подрублён скрипт останавливаится
ПОМОГИТИ ПЛИЗ ..... МОЖ КТО ЗНАИТ КАК ..... =)
Автор: AndVGri
Дата сообщения: 07.04.2007 04:02
minicoder
А попробовать? У меня не вышло, кричит недопустимое имя файла. В справке по FileSystemObject дано "Provides access to a computer's file system"
По второму вопросу можно так (содрано с примеров vbsedit - редактора скриптов, очень полезная штука - скачайте). ping требуемого хоста

Код:
strSite = "www.ixbt.com"

Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '" & strSite & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
'Если ping не прошёл
Else
'Если ping прошёл
End If
Next
Автор: minicoder
Дата сообщения: 07.04.2007 09:44
AndVGri //// тот кусочек кода который я написал ф своём посте .... был с учебника по js как там может быть vbs нинаю =) .... но он работает у миня ....
..vbsedit поду у гугля поищу .... спасиб за совет....

а Ваш пример у мну выдыёт ошибку "Библиотека не зарегистрирована" может старая версия WSH у меня 98 винда и не обновлял WSH?
Автор: StanislavG
Дата сообщения: 12.04.2007 12:27
Доброе время суток!
Можно ли создать скрипт который бы проверял директорию, и если в ней находиться файл давал бы звуковой сигнал?
Автор: jONES1979
Дата сообщения: 12.04.2007 14:18
StanislavG да, можно. что то вроде:
Set objWSH = CreateObject("WScript.Shell")
set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists ( PATH + FILENAME ) Then
objWSH.Run """" +MP3FILENAME +""""
end if
Автор: StanislavG
Дата сообщения: 12.04.2007 14:53
jONES1979

А не мог бы ты описать что за что отвечает?

Добавлено:
И как запускать скрипт?
Автор: jONES1979
Дата сообщения: 12.04.2007 17:22
StanislavG rtfm. всё скопировать в файлик с расширением vbs

Код:
Set objWSH = CreateObject("WScript.Shell") ' создаем полезные объекты
set objFSO = CreateObject("Scripting.FileSystemObject")

PATH = "c:\windowz\" ' путь где проверяем файл
FILENAME = "crack.exe" ' имя файла, чье существование нас интересует
MP3FILENAME = "c:\mp3\wheredoyougotoday.mp3" ' путь к песне, которую будем петь

If objFSO.FileExists ( PATH + FILENAME ) Then
objWSH.Run """" +MP3FILENAME +""""
end if ' тут проверяем наличие, и если оно наличествует, то говорим виндовсу стартовать песенку
Автор: alur2005
Дата сообщения: 16.04.2007 12:36
А как написать скрипт ,что бы он делал следующее

Выдергивал серийный номер Windows XP SP2 , имя пользователя (login)
и сохранял все это в текстовый файл.

Очень нужно ,развелось куча компов 150 штук(Windows лицензионный) ,а с серийниками немного запутались.

Скрипт бы облегчил жизнь с инвентаризацией серийных номеров

Спасибо.
Автор: igor_andreev
Дата сообщения: 16.04.2007 13:13
alur2005

Цитата:
Выдергивал серийный номер Windows XP SP2 , имя пользователя (login)
и сохранял все это в текстовый файл.

Отмотать этот топик на две страницы назад и почитать. Там есть ссылка mozers на скрипт чтения серийника и от него же пример для текущего username.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

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


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