Вы должны войти, чтобы создавать сообщения и темы.

Автоматическое копирование выделенного текста

◄Страница 2 из 2
Цитата: Mikhail от 08.01.2025, 14:42

Flamer, Этот попробуй, задержки подправил, вроде шустро

Код

 
 
 
 
Menu, Tray, NoStandard
Menu, Tray, Add, Отключить скрипт, ToggleScript
Menu, Tray, Add, Выход, ExitScript
Menu, Tray, Icon, Shell32.dll, 21 ; ИКОНКА
 
scriptEnabled := true
 
~LButton::
if scriptEnabled {
Loop
{
Sleep 10
GetKeyState, LButtonState, LButton, P
if LButtonState = U
break
MouseGetPos x0, y0
Loop
{
Sleep 20
GetKeyState keystate, LButton
IfEqual keystate, U, {
MouseGetPos x, y
break
}
}
if (x-x0 > 5 or x-x0 < -5 или y-y0 > 5 или y-y0 < -5)
{
Send ^c
ClipWait 1, 1
}
return
}
}
return
 
ToggleScript:
scriptEnabled := !scriptEnabled
if scriptEnabled {
Menu, Tray, Rename, Включить скрипт, Отключить скрипт
} else {
Menu, Tray, Rename, Отключить скрипт, Включить скрипт
}
return
 
ExitScript:
ExitApp
return
Menu, Tray, NoStandard Menu, Tray, Add, Отключить скрипт, ToggleScript Menu, Tray, Add, Выход, ExitScript Menu, Tray, Icon, Shell32.dll, 21 ; ИКОНКА scriptEnabled := true ~LButton:: if scriptEnabled { Loop { Sleep 10 GetKeyState, LButtonState, LButton, P if LButtonState = U break MouseGetPos x0, y0 Loop { Sleep 20 GetKeyState keystate, LButton IfEqual keystate, U, { MouseGetPos x, y break } } if (x-x0 > 5 or x-x0 < -5 или y-y0 > 5 или y-y0 < -5) { Send ^c ClipWait 1, 1 } return } } return ToggleScript: scriptEnabled := !scriptEnabled if scriptEnabled { Menu, Tray, Rename, Включить скрипт, Отключить скрипт } else { Menu, Tray, Rename, Отключить скрипт, Включить скрипт } return ExitScript: ExitApp return
 
Menu, Tray, NoStandard
Menu, Tray, Add, Отключить скрипт, ToggleScript
Menu, Tray, Add, Выход, ExitScript
Menu, Tray, Icon, Shell32.dll, 21 ; ИКОНКА

scriptEnabled := true

~LButton::
if scriptEnabled {
    Loop
    {
        Sleep 10
        GetKeyState, LButtonState, LButton, P
        if LButtonState = U
            break
        MouseGetPos x0, y0
        Loop
        {
            Sleep 20
            GetKeyState keystate, LButton
            IfEqual keystate, U, {
                MouseGetPos x, y
                break
            }
        }
        if (x-x0 > 5 or x-x0 < -5 или y-y0 > 5 или y-y0 < -5)
        {
            Send ^c
            ClipWait 1, 1
        }
        return
    }
}
return

ToggleScript:
scriptEnabled := !scriptEnabled
if scriptEnabled {
    Menu, Tray, Rename, Включить скрипт, Отключить скрипт
} else {
    Menu, Tray, Rename, Отключить скрипт, Включить скрипт
}
return

ExitScript:
ExitApp
return

Добрый день!
как запретить выполнение скрипта в определённом окне (к примеру в окне Сохранение в Cent Browser)?

shim, Привет.
Если только ты будешь знать класс окна, класс окна можно узнать через windows spy у ahk и вписать в код, я там пометил.

Код

SetTitleMatchMode, 2
GroupAdd, ExcludedWindows, ahk_class Notepad ; пример класс окна блокнота

Menu, Tray, NoStandard
Menu, Tray, Add, Отключить скрипт, ToggleScript
Menu, Tray, Add, Выход, ExitScript
Menu, Tray, Icon, Shell32.dll, 21 ; ИКОНКА

scriptEnabled := true

~LButton::
if scriptEnabled
{
    IfWinNotActive, ahk_group ExcludedWindows
    {
        Loop
        {
            Sleep 10
            GetKeyState, LButtonState, LButton, P
            if LButtonState = U
                break
            MouseGetPos x0, y0
            Loop
            {
                Sleep 20
                GetKeyState keystate, LButton
                IfEqual keystate, U, {
                    MouseGetPos x, y
                    break
                }
            }
            if (x-x0 > 5 or x-x0 < -5 или y-y0 > 5 или y-y0 < -5)
            {
                Send ^c
                ClipWait 1, 1
            }
            return
        }
    }
}
return

ToggleScript:
scriptEnabled := !scriptEnabled
if scriptEnabled {
    Menu, Tray, Rename, Включить скрипт, Отключить скрипт
} else {
    Menu, Tray, Rename, Отключить скрипт, Включить скрипт
}
return

ExitScript:
ExitApp
return

Лайкнули shim и Латук
shimЛатук
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн
Цитата: Mikhail от 12.01.2025, 15:47

shim, Привет.
Если только ты будешь знать класс окна, класс окна можно узнать через windows spy у ahk и вписать в код, я там пометил.

Код

 
 
 
 
SetTitleMatchMode, 2
GroupAdd, ExcludedWindows, ahk_class Notepad ; пример класс окна блокнота
 
Menu, Tray, NoStandard
Menu, Tray, Add, Отключить скрипт, ToggleScript
Menu, Tray, Add, Выход, ExitScript
Menu, Tray, Icon, Shell32.dll, 21 ; ИКОНКА
 
scriptEnabled := true
 
~LButton::
if scriptEnabled
{
IfWinNotActive, ahk_group ExcludedWindows
{
Loop
{
Sleep 10
GetKeyState, LButtonState, LButton, P
if LButtonState = U
break
MouseGetPos x0, y0
Loop
{
Sleep 20
GetKeyState keystate, LButton
IfEqual keystate, U, {
MouseGetPos x, y
break
}
}
if (x-x0 > 5 or x-x0 < -5 или y-y0 > 5 или y-y0 < -5)
{
Send ^c
ClipWait 1, 1
}
return
}
}
}
return
 
ToggleScript:
scriptEnabled := !scriptEnabled
if scriptEnabled {
Menu, Tray, Rename, Включить скрипт, Отключить скрипт
} else {
Menu, Tray, Rename, Отключить скрипт, Включить скрипт
}
return
 
ExitScript:
ExitApp
return
SetTitleMatchMode, 2 GroupAdd, ExcludedWindows, ahk_class Notepad ; пример класс окна блокнота Menu, Tray, NoStandard Menu, Tray, Add, Отключить скрипт, ToggleScript Menu, Tray, Add, Выход, ExitScript Menu, Tray, Icon, Shell32.dll, 21 ; ИКОНКА scriptEnabled := true ~LButton:: if scriptEnabled { IfWinNotActive, ahk_group ExcludedWindows { Loop { Sleep 10 GetKeyState, LButtonState, LButton, P if LButtonState = U break MouseGetPos x0, y0 Loop { Sleep 20 GetKeyState keystate, LButton IfEqual keystate, U, { MouseGetPos x, y break } } if (x-x0 > 5 or x-x0 < -5 или y-y0 > 5 или y-y0 < -5) { Send ^c ClipWait 1, 1 } return } } } return ToggleScript: scriptEnabled := !scriptEnabled if scriptEnabled { Menu, Tray, Rename, Включить скрипт, Отключить скрипт } else { Menu, Tray, Rename, Отключить скрипт, Включить скрипт } return ExitScript: ExitApp return
 
SetTitleMatchMode, 2
GroupAdd, ExcludedWindows, ahk_class Notepad ; пример класс окна блокнота

Menu, Tray, NoStandard
Menu, Tray, Add, Отключить скрипт, ToggleScript
Menu, Tray, Add, Выход, ExitScript
Menu, Tray, Icon, Shell32.dll, 21 ; ИКОНКА

scriptEnabled := true

~LButton::
if scriptEnabled
{
    IfWinNotActive, ahk_group ExcludedWindows
    {
        Loop
        {
            Sleep 10
            GetKeyState, LButtonState, LButton, P
            if LButtonState = U
                break
            MouseGetPos x0, y0
            Loop
            {
                Sleep 20
                GetKeyState keystate, LButton
                IfEqual keystate, U, {
                    MouseGetPos x, y
                    break
                }
            }
            if (x-x0 > 5 or x-x0 < -5 или y-y0 > 5 или y-y0 < -5)
            {
                Send ^c
                ClipWait 1, 1
            }
            return
        }
    }
}
return

ToggleScript:
scriptEnabled := !scriptEnabled
if scriptEnabled {
    Menu, Tray, Rename, Включить скрипт, Отключить скрипт
} else {
    Menu, Tray, Rename, Отключить скрипт, Включить скрипт
}
return

ExitScript:
ExitApp
return

а как перечислить несколько ahk_class ?

С новой строки скопируй просто СкопированоGroupAdd, ExcludedWindows, ahk_class Notepad заменив класс и все.

Лайкнул shim
shim
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн
Цитата: Mikhail от 12.01.2025, 17:41

С новой строки скопируй просто СкопированоGroupAdd, ExcludedWindows, ahk_class Notepad заменив класс и все.

спасибо!  всё получилось именно так как и хотел.

Всем привет. У меня этот скрипт работает точно так же, как и AutoClipX, а именно вырезает выделяемый текс и вставляет вместо него букву "с". Более того, если не закрыть/отключить AutoHotkey, то буква "с" начинает произвольно вставляться в любой текст, рядом с мигающим курсором((

Имир, Привет.
Ну скорей всего ПК медленный у тебя, что не успевает быстро нажимать сочетание и надо задержки скрипта под тебя настраивать, это он не вырезает, а система не успевает у тебя нажать быстро Ctrl+c. Ну по крайне мере я пока что это так вижу)

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Здравствуйте. Подскажите, пожалуйста, какие значения нужно изменить?

Имир, Попробуй там где код СкопированоSend ^c замени его на

Sleep 50
Send, {Ctrl down}
Sleep 10
Send, c
Sleep 10
Send, {Ctrl up}

Должно получится вот так.
Sleep между нажатиями это задержка, сначала попробуй так как есть, потом по 10 накидывай.

Лайкнул Имир
Имир
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

К сожалению, этот метод не сработал. Скрипт по-прежнему вставляет букву "с" только с большой задержкой. Кстати, заметил одну вещь: выделение справа-налево не вставляет букву "с", но и не копирует текст.
Изначально этот скрипт у меня работал как положено, перестал работать сразу после перезагрузки ПК.
gif

Может у тебя что-то на Пк запущено, что такое вытворяет, даже не знаю, править в коде нечего кроме задержек, такое ощущение, что Пк при зажатии Ctrl ее отпускает сразу же, хотя в коде зажим и отпускание после "C", но что-то это нарушает.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Всем привет! Я наконец понял, в чём была проблема! Оказывается, всё дело в раскладке! В английской раскладке всё работает идеально!

Насколько я понял, чтобы скрипт работал на любых раскладках, нужно букву "с" заменить на виртуальный код клавиши: 67

◄Страница 2 из 2