Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Не срабатывает часть скрипта при его первом запуске

Ответить
Настройки темы
Не срабатывает часть скрипта при его первом запуске

Старожил


Сообщения: 255
Благодарности: 26

Профиль | Отправить PM | Цитировать


Добрый день. Имеется скрипт:
Скрытый текст

Код: Выделить весь код
#include <WinAPIEx.au3>
Opt('WinTitleMatchMode', 2)

run ( @ComSpec & " /c " & """c:\Documents and Settings\lepta\Рабочий стол\Включить Х.cmd""", "")
sleep (10000)
_WinAPI_ShellObjectProperties( "X:\" )

;Запуск свойств диска Х:\ и его расшаривание
WinWait( "[TITLE:Свойства; CLASS:#32770]", "")
ControlClick ( "[TITLE:Свойства; CLASS:#32770]", "", "[CLASS:SysTabControl32; INSTANCE:1]", "main", 1, 205,12)
ControlClick ( "[TITLE:Свойства; CLASS:#32770]", "Если, несмотря на это, вы все равно хотите открыть общий доступ к корневой папке диска, щелкните здесь", "[CLASS:SysLink; INSTANCE:4]", "main", 1, 134,54)
ControlCommand ( "[TITLE:Свойства; CLASS:#32770]", "Открыть о&бщий доступ к этой папке", "Button4", "Check", "")
ControlClick ( "[TITLE:Свойства; CLASS:#32770]", "Локальный общий доступ и безопасность", "Button6", "main", 1)
WinWaitClose ( "[TITLE:Свойства; CLASS:#32770]", "Локальный общий доступ и безопасность")

;Закрыть торрент, если он запущен
If ProcessExists ("uTorrent.exe") Then
	ProcessClose ( "uTorrent.exe" )
EndIf


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

Отправлено: 13:32, 18-04-2017

 

Старожил


Сообщения: 168
Благодарности: 40

Профиль | Отправить PM | Цитировать


sNc-DAntES, а зачем вам такая свалка - и батник, и кликанье? Не проще скриптом делать то же, что делает Включить Х.cmd, а ControlClick() заменить на старую добрую net share?

Для начала заменить Run() на RunWait() не пробовали? И ждать придётся не 10 секунд, а ровно столько, сколько нужно.

-------
ОЗ


Последний раз редактировалось oz84, 18-04-2017 в 14:40. Причина: Уточнение

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:38, 18-04-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата oz84:
заменить на старую добрую net share? »
…или использовать Wbem посредством вызова метода .Create() класса Win32_Share.

Отправлено: 21:09, 18-04-2017 | #3


Старожил


Сообщения: 255
Благодарности: 26

Профиль | Отправить PM | Цитировать


oz84, просто я дерево и знания мои об Autoit весьма поверхностные. net share на Windows XP не имеет параметра /GRANT, то есть нельзя сделать шару только для чтения.
Цитата oz84:
Не проще скриптом делать то же, что делает Включить Х.cmd »
батник делает следующее:
Скрытый текст

Код: Выделить весь код
"c:\Program Files\Totalcmd\Utils\-=MySys=-\TrueCrypt\TrueCrypt.exe" /v d:\Lepta.tc /lx /a /p пароль /q


То есть, монтирует диск с помощью TrueCrypt. Не получилось у меня сделать это с помощью скрипта.

Цитата oz84:
Для начала заменить Run() на RunWait() не пробовали? И ждать придётся не 10 секунд, а ровно столько, сколько нужно. »
Спасибо, попробую.

Цитата Iska:
…или использовать Wbem посредством вызова метода .Create() класса Win32_Share. »
Это выходит далеко за границы моих знаний, к сожалению.

Отправлено: 10:57, 19-04-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата sNc-DAntES:
Это выходит далеко за границы моих знаний, к сожалению. »
Ну, попробуйте разобраться (пример на WSH): Script Create a Shared Folder and Assign Share Permissions. Всяко лучше, нежели эмулировать тыканье мышкой.

Отправлено: 05:12, 20-04-2017 | #5


Старожил


Сообщения: 255
Благодарности: 26

Профиль | Отправить PM | Цитировать


Iska, то есть начать изучать другой скриптовый язык? Как вариант, конечно, можно, но может есть вариант с помощью Autoit? Мне кажется лучше здесь изучить вопрос чуть глубже, чем начинать учить новый язык. Буду благодарен, если посоветуете, что почитать по данному вопросу тогда?

Отправлено: 10:56, 20-04-2017 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


sNc-DAntES, код из VBScript WSH практически один-в-один переводится на AutoIt. Можете попросить в Русское сообщество AutoIt, чтобы Вам перевели, или дали иной код.

Отправлено: 11:41, 20-04-2017 | #7


Старожил


Сообщения: 255
Благодарности: 26

Профиль | Отправить PM | Цитировать


Цитата oz84:
Для начала заменить Run() на RunWait() не пробовали? И ждать придётся не 10 секунд, а ровно столько, сколько нужно. »
После этого изменения, кстати, окно со свойствами диска вообще перестало появляться.

Отправлено: 10:25, 21-04-2017 | #8


Старожил


Сообщения: 168
Благодарности: 40

Профиль | Отправить PM | Цитировать


sNc-DAntES, а диск вообще монтируется после этого?
Бегло погуглил: разве нельзя просто смонтировать контейнер только на чтение? (К слову, в нагугленном было, что при использовании /v и /q параметр /a становится бесполезным, убрал.) Наверное, можно и батник написать, но раз уж в разделе AutoIt, я бы попробовал как-то так (с проверками по привычке)
Код: Выделить весь код
#NoTrayIcon

If FileExists('X:\') Then
    MsgBox(48 + 4096, 'Расшаривание X:\', 'Диск X:\ уже существует!')
Else
    FileChangeDir('C:\Program Files\Totalcmd\Utils\-=MySys=-\TrueCrypt')
    RunWait('TrueCrypt.exe /v D:\Lepta.tc /l x /m ro /p пароль /q', '', @SW_HIDE)
    While 1
        If FileExists('X:\') Then ExitLoop
        Sleep(150)
    WEnd
    RunWait(@ComSpec & ' /C net share  ShareX=X:\', '', @SW_HIDE)
    MsgBox(48 + 4096, 'Расшаривание X:\', 'Вроде сработало?')
EndIf
Или вместо сообщения просто попробовать открыть, как-то так
Код: Выделить весь код
Run('explorer.exe "\\' & @ComputerName & '\ShareX"')
P.S. FileChangeDir(), думаю, не обязательно, просто чтобы строку подсократить.

-------
ОЗ


Последний раз редактировалось oz84, 21-04-2017 в 15:29.


Отправлено: 15:16, 21-04-2017 | #9


Старожил


Сообщения: 255
Благодарности: 26

Профиль | Отправить PM | Цитировать


oz84, Я вставил ваш код в SciTE, жму F5 и не происходит вообще ничего. Я делаю, что-то не так?

Отправлено: 12:31, 24-04-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Не срабатывает часть скрипта при его первом запуске

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Часть активных программ не ображается при запуске Navarro Microsoft Windows 7 4 09-01-2017 16:06
Разное - [решено] Не создавть пользователя при первом запуске The_Immortal Microsoft Windows 7 3 16-03-2015 12:34
Не срабатывает часть скрипта при первом входе illznn Автоматическая установка Windows 2000/XP/2003 3 09-04-2009 17:19
выполнение скрипта при ПЕРВОМ входе пользователя tojlst9lk Microsoft Windows NT/2000/2003 1 16-03-2009 20:12
Не до конца срабатывает установка с ключём /S при запуске из батника Baw17 Автоматическая установка приложений 8 27-01-2007 09:41




 
Переход