Что нового

Автозапуск скрипта при загрузке системы

lexaSF

Новичок
Сообщения
182
Репутация
3
Подскажите как сдлеть чтобы при запуске системы сразу врубался скрипт?
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
lexaSF
научится пользоваться поиском, ни один раз об этом писалось :smile:
Код:
$pathscript = @ScriptFullPath ; определить путь до скрипта.
$sName = @ScriptName
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', $sName, "REG_SZ", $pathscript) ; добавит в автозагрузку с Windows
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
lexaSF
Я, обычно, так делаю:
Код:
;...
$sName = 'MyProgaName.exe'
;...
If @ScriptName <> $sName Then
	ToolTip('Файл переименован.' & @CRLF & _
			'Имя файла должно быть только' & @CRLF & $sName, 0, 0)
	Sleep(10000)
	Exit
EndIf
;...
$sRegRun = 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
If RegRead($sRegRun, @ScriptName) = '' Or RegRead($sRegRun, @ScriptName) <> @ScriptFullPath Then
	RegWrite($sRegRun, @ScriptName, "REG_SZ", @ScriptFullPath)
EndIf
;...
 

sss

Продвинутый
Сообщения
332
Репутация
96
Может, просто кинуть в автозагрузку (C:\Documents and Settings\юзер\Главное меню\Программы\Автозагрузка)
 
Автор
L

lexaSF

Новичок
Сообщения
182
Репутация
3
а как сделатьч чтобы можно было выключать автозапуск?
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
lexaSF сказал(а):
а как сделатьч чтобы можно было выключать автозапуск?
Код:
$sName = @ScriptName
RegDelete('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',$sName)



Добавлено:
Сообщение автоматически объединено:

как все могли заметить ветки автозагрузки у нас с madmasles отличаются, поясню:
Код:
HKEY_CURRENT_USER - Настройки соответствуют текущему, активному пользователю, выполнившему вход в систему.
Код:
HKEY_LOCAL_MACHINE - Настройки, относящиеся к вашему компьютеру и действительные для всех 
пользователей
 
Автор
L

lexaSF

Новичок
Сообщения
182
Репутация
3
Спасибо большое
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Я добавил программу в автозагрузку, но возникла такая проблема.

Моя программа при запуске проверяет наличие ini-файла.

Код:
If Not FileExists("Моля программа.ini") Then
	Say ("Не могу найти ini-файл")
	Exit
EndIf



Так вот, при автозапуске появляется надпись о том, что ini-файл не найден, после чего срабатывает Exit.
Хотя ini-файл лежит в одной директории со скриптом и если просто запустить скрипт (без автозапуска), то все работает.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Suppir сказал(а):
Код:
If Not FileExists("Моля программа.ini") Then
	Say ("Не могу найти ini-файл")
	Exit
EndIf
Мне кажется что путь к файлу неправильный.
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
dwerf
ini-файл находится в одной директории с exe.

Если дождаться загрузки windows и запустить скрипт, то ini-файл находится.
А если добавить скрипт в автозапуск, то ini-файл не находится.
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Код:
If Not FileExists(@ScriptDir&"\Моля программа.ini") Then ; надо точно указать что он в одной директории со скриптом ( просто если выбирал куда-то сохранить или выбрать от куда-то файл (в любой программе) то путь в системе сохраняется последний выбранный )
    Say ("Не могу найти ini-файл")
    Exit
EndIf
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Guezt Gutsy


Да, я так сейчас и сделал. Вроде заработало. Правда, непонятно, почему раньше работало без указания @ScriptDir,
а после добавления в автозагрузку это стало необходимым.
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Suppir
когда ты запускаешь скрипт ты находишься в как раз в той директории, потому и указывать необязательно, так же если запускаешь через ярлык (там используется параметр рабочая папка), а вот через автозапуск, как я понимаю, идет перебор папок от куда стартуют программы от того и пока запустится твой скрипт уже сменяется директория (ибо не RunWait в автозапуске) :smile:
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Guezt Gutsy

Это очень важный момент, спасибо!

у меня штук 7 мест в скрипте было, где просто указаны файлы из "этой директории", таким образом половина функций не работала при автозапуске :smile:
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Suppir
Не за что! С Рождеством! ;)
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Viktor217

Say - это небольшая функция для трей-типов.

Код:
Func Say($Say, $SleepTime = 1500)
	TrayTip ("Моя программа", $Say, 1)
	sleep($SleepTime)
	TrayTip("", "", 0) 
EndFunc



Если просто написать Say ("Hello World"), то в трее появится надпись на 1,5 секунды.
А можно написать конкретное время Say ("Hello World", 3000) - будет отображаться 3 секунды.


Добавлено:
Сообщение автоматически объединено:

Guezt Gutsy

:beer:
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Viktor217 сказал(а):
Код:
Say ("Не могу найти ini-файл")
Это что такое?) Что за Сэй, сказать?) В автоите вроде нету такого...
Долго что ли сделать ?! например вот так:

Код:
Say('Я функция Say()')

Func Say($sString)
MsgBox(0,'',$sString,5)
EndFunc
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
lexaSF, не забывайте отмечать "тема решена", когда тема решена. А эта тема явно решена.
 
Верх