1

Тема: AHK: замена костыля со вставкой текста по краям выделенного?

Имеется скрипт который по нужным биндам вставляет бб-коды для форума по краям выделенного текста, но реализация выглядит так себе и других способов это реализовать я не нашёл.

!vk42:: ; Alt + B - Bold text
	{
		Send, ^c
		Send, {backspace}
		Sendinput, [b]
		Send, ^v
		Sendinput, [/b]
	}
return

Может есть подсказка как это гуглить или уже готовый пример подобного скрипта?

2

Re: AHK: замена костыля со вставкой текста по краям выделенного?

А чем этот вариант не устраивает?
Можно наверно просто найти расширение для браузера.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: замена костыля со вставкой текста по краям выделенного?

У меня такая нашлась.


1:: SelectedWrap("[b]", "[/b]")

SelectedWrap(p1, p2) {
	TempClipboard := ClipboardAll
	Clipboard =
	SendInput {LCtrl Down}{vk43}{LCtrl Up}    ;;  "C" 
	ClipWait, 0.3
	If ErrorLevel
		Return 0, Clipboard := TempClipboard 
	Clipboard := p1 Clipboard p2 
	Sleep 150
	Send {LCtrl Down}{sc2F}{LCtrl Up}    ;  "V"
	Sleep 150
	Return 1, Clipboard := TempClipboard 
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: замена костыля со вставкой текста по краям выделенного?

serzh82saratov
Есть какой-нибудь вариант сделать код более приятным для чтения или триллион дубликатов никак не сделать красивыми?
Пример того, что у меня вышло:

!vk42:: SelectedWrapForBold("[b]", "[/b]") ; Alt + B - Bold text

	SelectedWrapForBold(p1, p2) {
		TempClipboard := ClipboardAll
		Clipboard =
		SendInput {LCtrl Down}{vk43}{LCtrl Up}    ;;  "C" 
		ClipWait, 0.3
		If ErrorLevel
			Return 0, Clipboard := TempClipboard 
		Clipboard := p1 Clipboard p2 
		Sleep 150
		Send {LCtrl Down}{sc2F}{LCtrl Up}    ;  "V"
		Sleep 150
		Return 1, Clipboard := TempClipboard 
	}
return

; To change the name of the spoiler you must enter the desired name of the spoiler in ' ', otherwise it will be called simply "spoiler".
!vk53:: SelectedWrapForSpoiler("[SPOILER = ' ']" , "[/spoiler]" ) ; Alt + S - Spoiler

	SelectedWrapForSpoiler(p1, p2) {
		TempClipboard := ClipboardAll
		Clipboard =
		SendInput {LCtrl Down}{vk43}{LCtrl Up}    ;;  "C" 
		ClipWait, 0.3
		If ErrorLevel
			Return 0, Clipboard := TempClipboard 
		Clipboard := p1 Clipboard p2 
		Sleep 150
		Send {LCtrl Down}{sc2F}{LCtrl Up}    ;  "V"
		Sleep 150
		Return 1, Clipboard := TempClipboard 
	}
return

5

Re: AHK: замена костыля со вставкой текста по краям выделенного?

teadrinker пишет:

А чем этот вариант не устраивает?

Нестабильная работа.

6

Re: AHK: замена костыля со вставкой текста по краям выделенного?

ППЦ.


!vk42:: SelectedWrapForBold("[b]", "[/b]") ; Alt + B - Bold text  

; To change the name of the spoiler you must enter the desired name of the spoiler in ' ', otherwise it will be called simply "spoiler".
!vk53:: SelectedWrapForSpoiler("[SPOILER = ' ']" , "[/spoiler]" ) ; Alt + S - Spoiler
 
SelectedWrapForSpoiler(p1, p2) {
	TempClipboard := ClipboardAll
	Clipboard =
	SendInput {LCtrl Down}{vk43}{LCtrl Up}    ;;  "C" 
	ClipWait, 0.3
	If ErrorLevel
		Return 0, Clipboard := TempClipboard 
	Clipboard := p1 Clipboard p2 
	Sleep 150
	Send {LCtrl Down}{sc2F}{LCtrl Up}    ;  "V"
	Sleep 150
	Return 1, Clipboard := TempClipboard 
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: замена костыля со вставкой текста по краям выделенного?

serzh82saratov
Вообще ничего не понял из кода, можно с минимальными комментариями что и как работает и почему это должно выглядеть так?)

8

Re: AHK: замена костыля со вставкой текста по краям выделенного?

Про функции есть в русской справке.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: замена костыля со вставкой текста по краям выделенного?

Вот так, не заметил что вы её переименовали.

!vk42:: SelectedWrap("[b]", "[/b]") ; Alt + B - Bold text  

; To change the name of the spoiler you must enter the desired name of the spoiler in ' ', otherwise it will be called simply "spoiler".
!vk53:: SelectedWrap("[SPOILER = ' ']" , "[/spoiler]" ) ; Alt + S - Spoiler
 
SelectedWrap(p1, p2) {
	TempClipboard := ClipboardAll
	Clipboard =
	SendInput {LCtrl Down}{vk43}{LCtrl Up}    ;;  "C" 
	ClipWait, 0.3
	If ErrorLevel
		Return 0, Clipboard := TempClipboard 
	Clipboard := p1 Clipboard p2 
	Sleep 150
	Send {LCtrl Down}{sc2F}{LCtrl Up}    ;  "V"
	Sleep 150
	Return 1, Clipboard := TempClipboard 
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: замена костыля со вставкой текста по краям выделенного?

serzh82saratov
А разве есть сейчас разница между

Send {LCtrl Down}{sc2F}{LCtrl Up}

и

Send ^v

?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11 (изменено: johhta, 2022-11-02 00:47:18)

Re: AHK: замена костыля со вставкой текста по краям выделенного?

serzh82saratov
огромное спасибо за помощь, упомянул в скрипте для общего доступа https://pastebin.com/ZcqXt6ue

12

Re: AHK: замена костыля со вставкой текста по краям выделенного?

teadrinker пишет:

А разве есть сейчас разница между

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: замена костыля со вставкой текста по краям выделенного?

serzh82saratov пишет:

Где то что то было с буквой не так, менял на коды.

По-моему, давно исправлено.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14

Re: AHK: замена костыля со вставкой текста по краям выделенного?

По-моему тоже.
Во всяком случае в премьере при активной немецкой раскладке если нажать ctrl+z вручную - премьер не реагирует.
Если послать скриптом "Send ^z", то все работает ок.