1 (изменено: D@rkSIDeR008, 2015-11-19 19:24:00)

Тема: AHK: Скрипт который перемещает себя в другую папку и в автозагрузку

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

FileMove, ahk.ahk, D:\Distr\ahk.ahk
sleep 1000
RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows\CurrentVersion\Run, Services, D:\Distr\ahk.ahk

Patches := ["C:\Program Files (x86)\Skype\Phone\Skype.exe","C:\Program Files (x86)\Steam\Steam.exe"]
    
Loop 
{
	For k, v in Patches
	{
		Name := SubStr(v, InStr(v, "\", 0, 0) + 1)
		Process, Exist, % Name
		If ErrorLevel
			Continue
		Try Run, % v
		Process, Wait, % Name, 3
	}
	Sleep 100
}

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

2 (изменено: Alectric, 2015-11-19 21:56:19)

Re: AHK: Скрипт который перемещает себя в другую папку и в автозагрузку

Переменные и выражения. Попробуй использовать A_ScriptFullPath и остальные встроенные переменные.

+ Открыть после рождества
#SingleInstance,Force

dest:="D:\Distr"

if (a_scriptdir!=dest)
{
  filecreatedir,% dest
  filemove,%a_scriptfullpath%,%dest%
  RegWrite,REG_SZ,HKCU,SOFTWARE\Microsoft\Windows\CurrentVersion\Run,Services,%dest%\%a_scriptname%
  run,%dest%\%a_scriptname%
  exitapp
}

msgbox,% a_scriptdir

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

3 (изменено: D@rkSIDeR008, 2015-11-19 22:07:46)

Re: AHK: Скрипт который перемещает себя в другую папку и в автозагрузку

Я только начал заниматься AHK, и не очень понял то что ты написал.
Можешь написать по подробнее:
Как вот эти 2 скрипта будут работать вместе?

То есть, когда вот этот код переместил файл скрипта в D:\Distr, он не создал в реестре запись

#SingleInstance,Force

dest:="D:\Distr"

if (a_scriptdir!=dest)
{
  filecreatedir,% dest
  filemove,%a_scriptfullpath%,%dest%
  RegWrite,REG_SZ,HKCU,SOFTWARE\Microsoft\Windows\CurrentVersion\Run,Services,%dest%\%a_scriptname%
  run,%dest%\%a_scriptname%
  exitapp
}

msgbox,% a_scriptdir

И еще, как сделать так чтобы после предыдущего скрипта, запускался этот код.


Patches := ["C:\Program Files (x86)\Skype\Phone\Skype.exe","C:\Program Files (x86)\Steam\Steam.exe"]
    
Loop 
{
	For k, v in Patches
	{
		Name := SubStr(v, InStr(v, "\", 0, 0) + 1)
		Process, Exist, % Name
		If ErrorLevel
			Continue
		Try Run, % v
		Process, Wait, % Name, 3
	}
	Sleep 100
}

4 (изменено: Alectric, 2015-11-19 22:10:41)

Re: AHK: Скрипт который перемещает себя в другую папку и в автозагрузку

D@rkSIDeR008 пишет:

Как вот эти 2 скрипта будут работать вместе?

Потоки.

#SingleInstance,Force ; Определяет, разрешено ли скрипту запускаться снова, если он уже выполняется.

dest:="D:\Distr" ; папка, куда нужно перемещать скрипт в переменной

if (a_scriptdir!=dest) ; если текущая папка не совпадает, то...
{
  filecreatedir,% dest ; создать папку если не существует
  filemove,%a_scriptfullpath%,%dest% ; переместить файл скрипта в ту папку
  RegWrite,REG_SZ,HKCU,SOFTWARE\Microsoft\Windows\CurrentVersion\Run,Services,%dest%\%a_scriptname% ; добавить запись в реестре
  run,%dest%\%a_scriptname% ; запустить файл скрипта в новом месте
  exitapp ; завершить текущий скрипт, чтобы запустился новый (из-за SingleInstance)
}

msgbox,% a_scriptdir ; вместо этого любой другой код, который нужно выполнять после перемещения скрипта

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

5

Re: AHK: Скрипт который перемещает себя в другую папку и в автозагрузку

FileCreateShortcut, %A_ScriptFullPath%, %A_Startup%\%A_ScriptName%.lnk

Дело вкуса наверное, но мне не нравиться записывать скрипты в реестр.
Всегда проще залезть в папку автозагрузки и увидеть (по необходимости стереть) все скрипты, что в неё записались.