Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   VBS скрипт для открытия/закрытия cd dvd привода по времени (http://forum.oszone.net/showthread.php?t=324282)

malder72 27-02-2017 23:32 2715227

VBS скрипт для открытия/закрытия cd dvd привода по времени
 
Здравствуйте. Напишите мне пожалуйста VBS скрипт который будет открывать cd dvd привод, ждать 2 часа (держать привод открытым), потом закрывать cd dvd привод(держать привод закрытым 2 часа), и так до бесконечности. И у меня есть еще вопрос-можно ли прошить привод чтобы он делал такие действия самостоятельно без участия компьютера или arduino?

Iska 27-02-2017 23:42 2715228

malder72, это можно сделать, но не на WSH. На WSH можно только открыть лоток привода, и только. Описанное Вами — открытие/закрытие/временное блокирование кнопки лотка — требует более глубинного доступа. Проще всего обратиться к C/C++.

malder72 28-02-2017 18:14 2715449

а как же команды open, Wait, Pause, Sleep, close ?

glukin 28-02-2017 18:51 2715458

Iska, Ну, Вы еще ASMx86 скажите. Дофига готовых утилит же.

Iska 28-02-2017 19:17 2715465

Цитата:

Цитата malder72
а как же команды open, Wait, Pause, Sleep, close ? »

Например?

Цитата:

Цитата glukin
Iska, Ну, Вы еще ASMx86 скажите. Дофига готовых утилит же. »

И какое отношение они имеют к WSH? Кстати, можете продемонстрировать времменное блокирование кнопки лотка любой из «…дофига готовых утилит же».

malder72 28-02-2017 19:22 2715468

Цитата:

Дофига готовых утилит же
Таких утилит нет. Мне необходимо чтобы дисковод самостоятельно, без участия человека, открывался, через 2 часа закрывался, и через 2 часа снова открывался, и так круглосуточно. Можно ли сам дисковод прошить так чтобы он это делал сам, без участия компьютера? (ардуино не предлагать).
Вот забабахал пример скрипта, вроде бы работает
Скрытый текст
Set TI = CreateObject("WMPlayer.OCX.7" )
Set CDROM = TI.cdromCollection
if CDROM.Count >= 1 then
do
For i = 0 to CDROM.Count - 1
CDROM.Item(i).Eject
WScript.Sleep 3600000
Next ' CDTRAY
loop
End If

glukin 28-02-2017 19:44 2715474

malder72, Есть утилиты открывания-закрывания, которые можно запихать в шедулер.

Iska 28-02-2017 20:02 2715478

Во-первых, класса WMPlayer.OCX.7 может и не быть. Во-вторых, где тут закрытие, блокировка лотка? Я бы уж лучше поигрался с IMAPI (Image Mastering API - Wikipedia, Image Mastering API (Windows)), хотя бы в свежих версиях обещают её поддержку «искаропки»:
Код:

Option Explicit

Dim objDiscMaster


Set objDiscMaster = WScript.CreateObject("IMAPI2.MsftDiscMaster2")

If objDiscMaster.IsSupportedEnvironment Then
        If objDiscMaster.Count > 0 Then
                With WScript.CreateObject("IMAPI2.MsftDiscRecorder2")
                        .InitializeDiscRecorder objDiscMaster.Item(0)
                        WScript.Echo .VendorId, .ProductId
                       
                        WScript.Sleep 3000
                        .EjectMedia

                        WScript.Sleep 3000
                        .CloseTray
                End With
        End If
End If

Set objDiscMaster = Nothing

WScript.Quit 0


malder72 28-02-2017 21:21 2715497

Цитата:

Во-первых, класса WMPlayer.OCX.7 может и не быть. Во-вторых, где тут закрытие, блокировка лотка?
незнаю, у меня все работает как мне надо.
Цитата:

Я бы уж лучше поигрался с IMAPI
попробовал я ваш скрипт, он открывает закрывает сидюк без паузы и только один раз без зацикливания.
Цитата:

Есть утилиты открывания-закрывания, которые можно запихать в шедулер.
если так то да. но это не для меня.

glukin 28-02-2017 21:33 2715503

Цитата:

Цитата malder72
Есть утилиты открывания-закрывания, которые можно запихать в шедулер.
если так то да. но это не для меня. »

Почему? Религия не позволяет?
Вам шашечки или ехать?

malder72 28-02-2017 21:39 2715508

Цитата:

Почему? Религия не позволяет?
Вам шашечки или ехать?
мне легче скрипт кинуть в автозагрузки и не париться. Ладно, всем спасибо большое, тему можно считать закрытой.

Iska 28-02-2017 21:44 2715512

Цитата:

Цитата malder72
без паузы »

А вот в это не верю. Есть там пауза в три секунды. Даже две.

Цитата:

Цитата malder72
и только один раз без зацикливания. »

Это просто болванка кода. Если отрабатывает — правьте, как Вам угодно. Блокировка кнопки лотка по-прежнему под вопросом.

Цитата:

Цитата malder72
у меня все работает как мне надо. »

Не поделитесь глобальным замыслом — зачем?

malder72 28-02-2017 21:52 2715515

Цитата:

А вот в это не верю. Есть там пауза в три секунды.
Ну для меня это не пауза, для меня пауза 2 часа.
Цитата:

Это просто болванка кода. Если отрабатывает — правьте, как Вам угодно. Блокировка кнопки лотка по-прежнему под вопросом.
Весь прикол в том, что в не программист и в этой теме у меня знаний мало. Я прямо попросил написать код для меня.
Цитата:

Не поделитесь глобальным замыслом — зачем?
Вы там сидите? Инкубатор-горизонтальное перекатывание яиц.

Iska 01-03-2017 07:49 2715583

Цитата:

Цитата malder72
Ну для меня это не пауза, для меня пауза 2 часа. »

Ну, поставьте два часа:
Код:

WScript.Sleep 1000 * 60 * 60 * 2
Цитата:

Цитата malder72
Весь прикол в том, что в не программист и в этой теме у меня знаний мало. Я прямо попросил написать код для меня. »

Ну, худо-бедно как-то понадобится ознакомиться хотя бы с основами, дабы примерно представлять, что именно делает код. Я так думаю.

Цитата:

Цитата malder72
Вы там сидите? Инкубатор-горизонтальное перекатывание яиц. »

Нормально.

Ну, коль у Вас этот код работате, тогда Вам вот такая болванка примерно:
Код:

Option Explicit

Dim objDiscMaster


Set objDiscMaster = WScript.CreateObject("IMAPI2.MsftDiscMaster2")

If objDiscMaster.IsSupportedEnvironment Then
        If objDiscMaster.Count > 0 Then
                With WScript.CreateObject("IMAPI2.MsftDiscRecorder2")
                        .InitializeDiscRecorder objDiscMaster.Item(0)
                       
                        Do
                                .EjectMedia
                                WScript.Sleep 1000 * 60 * 60 * 2
                               
                                .CloseTray
                                WScript.Sleep 1000 * 60 * 60 * 2
                        Loop
                End With
        End If
End If

Set objDiscMaster = Nothing

WScript.Quit 0

Будет «дёргать» туда-сюда каждые два часа первый по списку накопитель. А вот блокировать — увы, только WinAPI.

Хотя, знаете что… Вы можете об этом попросить в соседнем разделе AutoIt или в сообществе Русское сообщество AutoIt - Главная страница, там Вам сделают готовый исполняемый файл с потребным полным функционалом.


Время: 01:15.

Время: 01:15.
© OSzone.net 2001-