Ru-Board.club
← Вернуться в раздел «Программы»

» StrokesPlus - жесты мыши для Windows

Автор: PREVED
Дата сообщения: 01.08.2015 19:47
artemiantonov

Цитата:
делал по схеме PREVED на Windows 10 10240, при выполнении жеста закрытия вкладки на русской раскладке strokeplus прекращает работу



Для Windows 8/10 схема отличается! Вот скрипт для Windows 8: http://www.strokesplus.com/scripts/26

На всякий случай, не забывайте запусткать S+ с максимальными правами (напр. с помощью Планировщика заданий)
Автор: shadow_member
Дата сообщения: 09.08.2015 16:37
Version 2.8.5.21 (Aug 8, 2015)
Цитата:
Change Log:
- Excluded WS_CHILDWINDOW in EnumWindowsProc as top-level window
- Added #define PSAPI_VERSION 1 to EXE source file
Автор: OODASDV
Дата сообщения: 20.08.2015 17:55
Как возможно закрыть приложение если оно не отображается на экране? Допустим оно работает с трея или работает в процессах,желательно чтобы корректно закрывал программу.
Автор: PREVED
Дата сообщения: 20.08.2015 18:11
OODASDV

Цитата:
Как возможно закрыть приложение если оно не отображается на экране? Допустим оно работает с трея или работает в процессах,желательно чтобы корректно закрывал программу.



acShellExecute("", "taskkill.exe", "/im program.exe", "", 0)


(где program.exe - имя экзешника программы)


p.s. Это НЕ убийство процесса программы! В программу передается команда на закрытие через WinAPI (WM_CLOSE), т.е. делается корректное закрытие. Для убийства процесса можно добавить в параметры ключ /f.

p.p.s StoreksPlus должен быть запущен с полными правами (под администратором)
Автор: OODASDV
Дата сообщения: 20.08.2015 18:36
Спасибо.
Автор: data man
Дата сообщения: 20.08.2015 21:59
Version 2.8.5.30 (Aug 16, 2015)
Цитата:
Change Log:
- Corrected documentation for acSendWindowToMonitorByName and acSendWindowToMonitorByHandle
- Fixed bug in acDisplayBalloonTip where title or text length exceeding the lengths defined in NOTIFYICONDATA would cause S+ to crash
- Added parameter to acDisplayBalloonTip to optionally play the default sound along with the balloon tip
- Removed "Executable" from StrokesPlus.exe description, now just StrokesPlus (display reasons)


2 всем: очень уж шапка большая. Может уменьшить?
Автор: slava10779
Дата сообщения: 21.08.2015 09:06
Пару дней назад отключил в планировщике повышенные привилегии, так как глюки от StrokesPlus появились. Как не странно, все жесты работают как и раньше. Не понятно... А глюки пропали.
Автор: Yarpero
Дата сообщения: 22.08.2015 09:30
Привет всем! Никто ещё не пробовал русифицировать приложение? В принципе в этом нужды особой нет, с этой замечательной программой, как и с Робом (когда-то даже познакомил его со StartIsBack), знаком давно, но эстетически приятнее видеть на русской системе русские же буквы.
Автор: PREVED
Дата сообщения: 22.08.2015 10:14
Yarpero

Цитата:
Привет всем! Никто ещё не пробовал русифицировать приложение? В принципе в этом нужды особой нет, с этой замечательной программой, как и с Робом (когда-то даже познакомил его со StartIsBack), знаком давно, но эстетически приятнее видеть на русской системе русские же буквы.


Я русифицировал интерфейс. Осталось перевести справку программы(привести в соответствии с переводом интерфейса), на что у меня пока не хватает времени. Только это меня сдерживает о того, чтобы выложить русификатор во всеобщее пользование. Лето кончится, думаю начну переводить.
Автор: Yarpero
Дата сообщения: 22.08.2015 10:22

Цитата:
Я русифицировал интерфейс

Приятно слышать, там же xml-файл, насколько понимаю? Я когда-то сам коряво пытался русифицировать (ещё на 2.6* по-моему), но жесточайшие глюки меня быстро расхолодили. Да и я в таком мало что смыслю, по правде говоря... Может, нужна какая-то помощь? В любом случае будем ждать с нетерпением!
Автор: PREVED
Дата сообщения: 22.08.2015 23:17
Yarpero

Цитата:
Приятно слышать, там же xml-файл, насколько понимаю? Я когда-то сам коряво пытался русифицировать (ещё на 2.6* по-моему), но жесточайшие глюки меня быстро расхолодили. Да и я в таком мало что смыслю, по правде говоря...


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


Цитата:
Может, нужна какая-то помощь? В любом случае будем ждать с нетерпением!


Если что, отпишу.
Автор: slava10779
Дата сообщения: 23.08.2015 17:09

Цитата:
Интерфейс программы рассчитан на английские слова и термины, которые, как правило, в длину короче русскоязычных аналогов. Поэтому без ковыряния в ресурсах русифицировать толком нельзя.

Это типа придется каждую версию заново подганять...
Автор: gotikax
Дата сообщения: 30.08.2015 19:30
Подскажите пожалуйста, нужно по перемещению мыши в левый верхний угол включать список задач (как в гном3), в этой программе такое возможно?
Автор: PREVED
Дата сообщения: 31.08.2015 06:14
gotikax

Цитата:
Подскажите пожалуйста, нужно по перемещению мыши в левый верхний угол включать список задач (как в гном3), в этой программе такое возможно?


Просто одним наведением - не получится. А вот если наведение в определенный угол экрана совместить с нажатием action-кнопки (нажатие на которую выполняет все жесты S+) и дополнительной кнопки(мыши), либо с выполнением простейшего жеста - тогда можно. Это то что касается выполнения действия. В S+ для выполнения любого действия нужно нажимать на action-кнопку (т.к. для программы это является триггером на распознавание). К примеру, можно сделать простейший диагональный жест - прямую линию по диагонали в направлении левого верхнего угла экрана.

Проверка координат курсора осуществляется с помощью такой конструкции

if acGetMouseLocationX() <= 100
and acGetMouseLocationY() <= 100
then
    КУРСОР ПОПАДАЕТ В ЛЕВЫЙ/ВЕРХНИЙ УГОЛ ЭКРАНА - ВЫПОЛНЯЕМ ДЕЙСТВИЕ (ВЫЗОВ СПИСКА ЗАДАЧ)
else
    КУРСОР НЕ ПОПАДАЕТ В ЛЕВЫЙ/ВЕРХНИЙ УГОЛ ЭКРАНА - НИЧЕГО НЕ ДЕЛАЕМ, ЛИБО ВЫПОЛНЯЕМ ЛЮБОЕ ДРУГОЕ ДЕЙСТВИЕ
end



Насчет, собственно, списка задач - тут надо либо внешний софт(приложение) вызывать(например VistaSwitcher, либо встроенные окна Windows (как например в windows7/aero по Win+Tab ). И то и другое возможно в S+.
Автор: Serggg1212
Дата сообщения: 28.09.2015 14:00
Не могу добиться управления дочерними окнами в 3d max (например окно редактора материалов или окно настроек рендера). Вставка различных команд по активации дочерних окон не помогает, все команды в дочерних окнах передаются главному окну. Кто поможет?
Автор: PREVED
Дата сообщения: 29.09.2015 09:15
Serggg1212
К сожалению, у меня нет установленного 3d max на компьютере.

О каких командах идет речь? Какой элемент интерфейса они используют? Какого вида - флаг(галочка), строка для ввода текста, кнопка? Или просто горячая клавиша?

Есть варианты:
- Добраться до нужной команды с помощью активации нужного дочернего окна и имитации нажатия кнопки "tab" для подсветки нужной команды внутри дочернего окна и его активации (имитация нажатия "enter", "пробел"). Это, конечно, если 3d max позволяет навигацию с помощью клавиатуры внутри своего интерфейса.

- Если у нужных элементов интерфейса фиксированная позиция на экране - в S+ можно имитировать перемещение указателя мыши и клики.

- Если нужные команды в 3d max дублируются горячими клавишами, можно попробовать их(горячие клавиши) отправлять с помощью s+ после перемещения того же курсора и активации дочерних окон кликом.
Автор: Serggg1212
Дата сообщения: 29.09.2015 11:06
PREVED
[q][/q]
Спасибо за отклик.
Речь идет о командах: "свернуть окно"(стандартный код и жест S+) и "перенести на другой монитор" (здесь просто назначена жесту -горячая клавиша)
К сожалению позиция этих окон не фиксирована. "табом" не переключается.

P.S. Примерно такая - же проблема, например, в станд. проводнике виндоус 7 при открытом дочернем окне "параметры папок" и в других программах. Причем предварительная активация дочернего окна кликом мыши и потом жест над ним - тоже не помогает...
Автор: 404NF
Дата сообщения: 03.10.2015 09:19
А можно ли реализовать с помощью Global Lua копирование текста выделением? При чем чтобы фрагмент копировался не сразу (есть у меня такая прога на АНК, но очень неудобно, мусора много в буфере оказывается), а только если левую клавишу не отпускать в течении какого-то времени.
Автор: Edmanz
Дата сообщения: 04.10.2015 02:04
Как прописать запуск ссылки (адресной строки)? Например старт гугл-переводчика в браузере Хром.
Пересмотрел список действий и не нашел так сразу.
Автор: 404NF
Дата сообщения: 04.10.2015 09:40
Edmanz
acShellExecute("open", "D:\\PROG\\INET\\Palemoon portable\\Palemoon-Portable.exe", "https://translate.google.com/?hl=ru&tab=wT", "", 1)
Второй параметр - путь к исполняемому файлу браузера.
Если нужно открывать ссылку в браузере по-умолчанию, то это еще проще (есть в стандартных образцах)
acShellExecute("open", "https://translate.google.com/?hl=ru&tab=wT", "", "", 1)
Немного сложнее, если надо чтобы открывалось не окно переводчика, а сразу перевод выделенного фрагмента. Вот код для перевода слова в Мультитране в браузере по-умолчанию
acSendKeys("{DELAY=50}^{VKEY 67}")
acDelay(50)
local s = acGetClipboardText()
s = 'http://www.multitran.ru/c/m.exe?l1=2&l2=1&s='..s
acShellExecute("open","rundll32.exe",
"url.dll,FileProtocolHandler "..s, nil, 1)
А вот для Яндекс-словари
acSendKeys("{DELAY=50}^{VKEY 67}")
acShellExecute("open", "http://slovari.yandex.ru/", "", "", 1)
acDelay(2000)
acSendKeys("^{VKEY 86}")
acSendKeys("{ENTER}")

Добавлено:
Для GT вроде работает такой код (в браузере по-умолчанию)
acSendKeys("{DELAY=50}^{VKEY 67}")
acDelay(50)
local s = acGetClipboardText()
s = 'https://translate.google.com/?hl=ru&tab=wT#auto/ru/'..s
acShellExecute("open","rundll32.exe",
"url.dll,FileProtocolHandler "..s, nil, 1)
Автор: Edmanz
Дата сообщения: 04.10.2015 14:22
404NF Спасибо огромное!

PREVED
Цитата:
acShellExecute("", "taskkill.exe", "/im program.exe", "", 0)
 (где program.exe - имя экзешника программы)

Прописал так закрытие четырех процессов:

acShellExecute("", "taskkill.exe", "/im TheBat.exe", "", 0)
acShellExecute("", "taskkill.exe", "/im ActualMultipleMonitorsCenter.exe", "", 0)
acShellExecute("", "taskkill.exe", "/im googledrivesync.exe", "", 0)
acShellExecute("", "taskkill.exe", "/im synchredible.exe", "", 0)

Но срабатывает по одному. Один жест - один процесс. Причем последняя прога вообще упёртая, ни в какую не глохнет.
Можно ли в одном жесте всю пачку процессов заказать на закрытие?
Автор: 404NF
Дата сообщения: 04.10.2015 20:29
Edmanz
У меня спокойно завершает несколько приложений подобным списком.

Добавлено:
Кстати, у меня в ходе экспериментов с поиском выделенного текста возник вопрос: почему когда используешь стандартный код из образцов с сайта S+ то переменная s может принимать любые значения, а если модифицировать код под поиск не в браузере по-умолчанию, то скрипт работает корректно только если переменной присвоить одно слово (без пробелов) и как это поправить?
Вот два вариант кода:
Стандартный
acSendKeys("{DELAY=50}^c")
acDelay(50)
local s = acGetClipboardText()
s = 'https://www.google.com/search?hl=en&output=search&q='..s
acShellExecute("open","rundll32.exe",
"url.dll,FileProtocolHandler "..s, nil, 1)
Модифицированный
acSendKeys("{DELAY=50}^c")
acDelay(50)
local s = acGetClipboardText()
s = 'https://www.google.com/search?hl=en&output=search&q='..s
acShellExecute("open","D:\\PROG\\INET\\Palemoon portable\\Palemoon-Portable.exe",
s, nil, 1)
Автор: 404NF
Дата сообщения: 06.10.2015 22:37
Решение подсказал Роб на форуме программы: нужно добавить команду, которая заменяет пробелы в поисковом запросе спецсимволом %20, означающим пробел в URL.

acSendKeys("{DELAY=50}^c")
acDelay(50)
local s = acGetClipboardText()
s = s:gsub(" ", "%%20")
s = 'https://www.google.com/search?hl=en&output=search&q='..s
acShellExecute("open","D:\\PROG\\INET\\Palemoon portable\\Palemoon-Portable.exe",
s, nil, 1)
Автор: artemiantonov
Дата сообщения: 08.12.2015 18:31
Всем привет, подскажите, возможен ли жест закрытия всех вкладок, кроме активной и закрытия вкладок справа, знаю что есть расширение для chrome, но жесты нужны для браузера edge (spartan) или ie.
Автор: PREVED
Дата сообщения: 09.12.2015 15:32
artemiantonov

А в новом IE(edge) можно делать эти операции горячими клавишами? Что-то сильно сомневаюсь, сюда по примитивизму этого нового браузера от microsoft. Если да, то элементарно - пишем в s+ жест который имитирует нажатие определенных клавиш. Даже если таких функций нет в Edge, можно написать жест который будет закрывать вкладку слева или справа (или определенное кол-во вкладок, например три штуки справа). Закрыть ВСЕ справа не получится, т.к. S+ не узнает где граница последней справки (по причине того, что в самом браузере изначально нету такой функции).
Автор: Fintrum
Дата сообщения: 13.12.2015 22:18
PREVED
Здравствуйте, подскажите пожалуйста, возможно ли добавить "жест" на ПКМ + СКМ, чтобы пока зажаты эти клавиши посылалась зажатая ЛКМ, при отпускании ПКМ + СКМ, отпускалась и ЛКМ? Т.е. чтобы получить функциональность зажатой левой кнопки мыши и возможность выделять текст или перемещать файлы, а не просто однократный щелчок.
Автор: OODASDV
Дата сообщения: 15.12.2015 20:48
Не работает данная команда,с блокнотом пробовал всё нормально с остальными не хочет,запускает вторую копию программы постоянно и т.д.

local swnd = acFindWindow("CCleaner")
if swnd > 0 then
    acRestoreWindow(swnd)
    acActivateWindow(swnd)
else
    acRunProgram("C:\\Users\\User\\Desktop\\CCleaner\\CCleaner.exe", "", "", 9)
end

Есть ли возможность при запуске окно программы оставалось поверх всех окон?Возможно специальная команда или скрипт,без использования стороннего ПО.
Автор: PREVED
Дата сообщения: 16.12.2015 18:37
Fintrum

Цитата:
Здравствуйте, подскажите пожалуйста, возможно ли добавить "жест" на ПКМ + СКМ, чтобы пока зажаты эти клавиши посылалась зажатая ЛКМ, при отпускании ПКМ + СКМ, отпускалась и ЛКМ? Т.е. чтобы получить функциональность зажатой левой кнопки мыши и возможность выделять текст или перемещать файлы, а не просто однократный щелчок.


Да, можно так сделать. Ниже рабочий вариант. Важное уточнение. В качестве модификатора (помимо СКМ) придется задействовать и колесо мыши (вращение вверх или вниз - не важно, по выбору пользователя). Без использования колеса в S+ нет возможности выполнять жест ДО отжатия кнопки мыши, используемой для выполнения жестов S+. Поэтому в данном случае для нас подходит только вариант с колесом.



1. Исходим из того, что кнопка мыши для начала выполнения жестов в S+ настроена - правая (Preferences - Stroke button - Right). Модификатор жеста "вращение колеса" лучше сделать - колесо вниз (имхо, так удобнее). В настройках программы (Preferences) также должна быть включена опция Fire Recognition on Mouse Wheel Scroll.

2. Настраиваем Жест (Action):

Modifier check - Either
Mouse/ Key modifiers - Middle button, Scroll down


Код жеста:

LMBpressed = 1
acRunProgram("C:\\Windows\\nircmd.exe","sendmouse left down",0,1)
acDelay(4000)
acRunProgram("C:\\Windows\\nircmd.exe","sendmouse left up",0,1)



Примечание 1: acDelay(4000) - задержка в 4 секунды, за которые нужно успеть выполнить драг-н-дроп (через 4 секунды левая кнопка мыши отожмется). Меняем задержку под себя.

Примечание 2: Что касается использования. После того, как жест был инициализирован/выполнен (после того как были зажаты последовательно - ПКМ, СКМ и прокручено колесо вниз) держать кнопки нажатыми НЕ требуется, можно отпустить их все и двигать курсор мыши куда потребуется - жест все-равно будет выполнен.


3. Настраиваем глобальный скрипт (Global Lua). Добавляем внутрь функции function sp_before_action(gnm, gsx, gsy, gex, gey, gwd, gapp, gact) следующий код:

LMBpressed = 0

Примечание. Не забываем о том, что в самом конце функции function sp_before_action должна стоять строчка со словом end


p.s. Используется утилита nircmd. К сожалению, мне не удалось добиться нормальной работы с помощью одних только встроенных функций S+. Стандартная функция S+ acMouseClick (предназначенная для имитации нажатий кнопок мыши) в данном случае вызывает нестабильную работу StrokesPlus и дает эффект "залипания" кнопок, поэтому я остановился на варианте nircmd. Можно заменить на любую другую утилиту, умеющую имитировать нажатия кнопок мыши.

Я подозреваю, что есть возможность реализации через WinAPI (функция acSendMessage), но не разобрался т.к., по всей видимости, нужно вешать хук на клики мыши (программирование). Испытывал в проводнике Windows, имитируя перетаскивание файлов с помощью жеста. В простом варианте способа через WinAPI обведение рамочкой файлов работает, а драг-н-дроп (тех же файлов) уже нет.
Автор: PREVED
Дата сообщения: 18.12.2015 00:10
OODASDV

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

local swnd = acFindWindow("CCleaner")
if swnd > 0 then
acRestoreWindow(swnd)
acActivateWindow(swnd)
else
acRunProgram("C:\\Users\\User\\Desktop\\CCleaner\\CCleaner.exe", "", "", 9)
end



В S+ есть разные варианты нахождения окон. Можно попробовать:


По заголовку окна: acFindWindow(nil, "CCleaner")

По классу окна программы: acFindWindow("ИмяКлассаОкна", nil)

Нахождение окна(окна самого верхнего уровня) программы по имени ее процесса:
local swnd = acGetWindowFromProcessID(acGetProcessIDFromPattern("ccleaner.*"))



Цитата:
Есть ли возможность при запуске окно программы оставалось поверх всех окон?Возможно специальная команда или скрипт,без использования стороннего ПО.


Да, для текущего (активного) окна:
acSetTopmost(swnd, nil, nil)

где swnd - переменная, из нашего примера выше
Автор: 404NF
Дата сообщения: 18.12.2015 00:15
Fintrum
Ваша задача хоть и кажется бессмысленной, но теоретически интересна. Я вчера уперся в залипание и сдался. Вариант, придуманный PREVED, это не совсем то, что просили, да и с использованием сторонних программ все можно решить куда проще. Для всякого дела нужен свой инструмент и для переназначения клавиш лучшее решение - autohotkey. Кода на три строки

RButton & MButton::click down
RButton & MButton up::click up
$RButton::RButton

Делает ровно то, о чем просили. В скомпилированном виде этот скрипт будет меньше мегабайта, ну и в памяти пару мегабайт отъест. Зато никаких оболочек ему вообще не нужно.

Страницы: 123456789

Предыдущая тема: Программа для скрытого захвата звука с микрофона


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.