1 (изменено: Flasher, 2017-04-19 02:49:47)

Тема: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

Подскажите, пожалуйста, как удалить активный (открытый) скрипт в редакторе SciTE4AutoHotkey?
Получить путь к открытому файлу через имеющийся пункт меню у меня не получается.


#IfWinactive, ahk_class SciTEWindow
^Del::
savedboard := ClipboardAll
WinMenuSelectItem, ahk_class SciTEWindow, , File, Copy Path
ClipWait
FileDelete % Clipboard
Clipboard := savedboard
return

2

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

becauseim
И что послужило поводом для создания новой темы?
SciTE4AutoHotkey - препятстие для существующих решений?

AHK: Самоудаление скрипта
AHK: Самоуничтожение exe
AHK: Самоудаление скрипта или ".exe" файла
AHK: Самоуничтожение скомпилированого скрипта

3

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

Flasher, речь идет не о запущеном скрипте, а об открытом в упомянутом редакторе.

И что послужило поводом для создания новой темы?

Поводом послужила проблема с работой предложенного сценария.

4

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

В таком случае указание на активность скрипта в заголовке неуместно. Исправлено.

#IfWinactive, ahk_class SciTEWindow
^Del::
WinGetTitle, Title, A
FileDelete, % RegexReplace(Title, "(.+) in (.:.+) - SciTE \[\d+ of \d+]", "$2\$1")

5

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

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

6

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

Кстати, если заменить

WinMenuSelectItem, ahk_class SciTEWindow, , File, Copy Path

на

Send !{vk46}{vk48} ; Alt+F, H

, то вроде бы, работает. Но и в команде WinMenuSelectItem, на мой взгляд, ошибок не допущено. С чем может быть связана проблема?

7

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

becauseim пишет:

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

А. Я на AuotIt-вском смотрю. Забыл уточнить. См. в корне программы файл SciTEGlobal.properties, там для title.full.path нужно 0 поменять на 1 (2 в случае выше). Перезапустить редактор. И тогда выкусывание пути ещё упростится:

#IfWinactive, ahk_class SciTEWindow
^Del::
WinGetTitle, Title, A
FileDelete, % RegexReplace(Title, " - SciTE4AutoHotkey \[\d+ of \d+]$")

8

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

Flasher, Спасибо! Но решил использовать другой рабочий метод, более примитивный:


^Del:: ; Delete this Script
savedboard := ClipboardAll
Clipboard := ""
While !Clipboard
{
	WinMenuSelectItem, ahk_class SciTEWindow, , File, Copy Path
	Sleep, 25
}
ClipWait
FileDelete % Clipboard
IfNotExist % Clipboard
{
	MsgBox, Script is Deleted!
}
Clipboard := savedboard
return

9

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

becauseim
И в чём же профит?

10

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

Flasher, ну, в том, что не надо вводить изменения в настройки программы, прежде всего.
Также я не знаю регулярных выражений, поэтому, имея выбор, использую вариант ясный для своего понимания.

На самом деле, мне интересно, почему WinMenuSelectItem не срабатывает без цикла, похоже, буд-то команда ClipWait не срабатывает должным образом. Хотелось бы понять, почему так?

11

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

Вспомнил, текущий файл из SciTE можно так получить:

oSci := ComObjActive("SciTE4AHK.Application")
MsgBox % oSci.CurrentFile
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

12

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

becauseim пишет:

не надо вводить изменения в настройки программы, прежде всего.

Кому? Вам? Ваш вариант предполагает английскую локализацию, в то время как многие предпочтут русскую. А за этим тоже нужно лезть в настройки.
Т.е. ваш скрипт у меня не сработает в текущем виде. Да и с убранной (почему-то) директивой он будет запускаться по Ctrl+Del во всех окнах, производя неуместные манипуляции с буфером и вывод окна.
Да и вообще этот бесконечный цикл вреден сам по себе. Почему, не возьмусь подсказать. И я бы кое-что подправил:

#IfWinactive, ahk_class SciTEWindow
^Del::
savedboard := ClipboardAll
While SubStr(Clipboard,2,2) != ":\"
{ WinMenuSelectItem, A,, File, Copy Path
  Sleep, 25
}
IfExist, % Clipboard
{ FileDelete, % Clipboard
  MsgBox, Script is Deleted!
}
Clipboard := savedboard

13

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

Так у него ещё и COM есть... Ну, тогда вообще с буферными делами пора срочно прощаться.

14

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

teadrinker, спасибо! Именно на что-то подобное я изначально рассчитывал.
Flasher, для общей локализации, думаю, можно исопльзовать:

WinMenuSelectItem, ahk_class SciTEWindow, , 1&, 9&

Могли бы Вы прокомментировать четвертую строку из Вашей поправки?
По ссылке перечислены все возможные COM или только некоторые примеры?

15

Re: AHK: Удаление скрипта с отображаемым в окне SciTE4AutoHotkey кодом

becauseim пишет:

для общей локализации, думаю, можно исопльзовать:

В надежде, что другие пункты выше не будут втиснуты.

becauseim пишет:

Могли бы Вы прокомментировать четвертую строку из Вашей поправки?

Ожидание появления в буфере :\ в качестве 2-го и 3-го символа.

becauseim пишет:

По ссылке перечислены все возможные COM или только некоторые примеры?

Судя по тому, что это страница из справки (SciTE.chm), то все.