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

» AutoHotkey

Автор: OnMyDSeeAtAll
Дата сообщения: 03.09.2011 11:17

Цитата:
и пусть никто не говорит, что AutoHotkey не способен
А, что кто-то так говорит?

Код: WinMenuSelectItem, ahk_class HH Parent,, 4&, 7&
Sleep, 25
ControlSend,, +{Tab},
ahk_class #32770
Sleep, 50
ControlSend,
Edit2, ^{vk43}, ahk_class #32770
Sleep, 25
ControlSend,, {Esc 2},
ahk_class #32770
MsgBox, 262144, % " ", % Clipboard ;, % 0.5
Автор: imu7ic
Дата сообщения: 11.09.2011 21:44
Подскажите пожалуйста, как сделать переключатель, чтобы в один клик менять действие щелчка мыши по файлам и папкам?
А именно переключаться между режимами:
левый клик=выделение
левый клик=открытие папки/файла
Автор: aidomars
Дата сообщения: 12.09.2011 08:23
imu7ic
Думаю через реестр изменением параметра, вот только ключ узнать бы.
Автор: OnMyDSeeAtAll
Дата сообщения: 17.09.2011 16:25
Левый короткий клик - обычное действие по умолчанию (выделение и т.д.), левый клик при не большом удержании (выставлено 200мс) - открытие папки/файла если под курсором таковые имеются, либо обычное действие от нажатия и удержания.
Код: ~LButton::
StartTime:=A_TickCount
While, GetKeyState("LButton", "P")
{
If A_TickCount-StartTime>200
{
SetTimer,
ActionByHold, -0
Exit
}
}
KeyWait, LButton
Return

ActionByHold:
ClipContent:=ClipboardAll
Send, ^{Ins}
If FileExist(Clipboard)
{
Click, 2
KeyWait, LButton
}
Clipboard:=
ClipContent
Return
Автор: Bozo
Дата сообщения: 30.09.2011 16:44
что нужно добавить в ahk, чтобы при переключении на русский язык вводились русские буквы, а не английские?
Автор: OnMyDSeeAtAll
Дата сообщения: 02.10.2011 11:21
Вопрос не понятен, поясните.
Автор: Bozo
Дата сообщения: 02.10.2011 13:28

Цитата:
Вопрос не понятен, поясните

Поясняю, имеется ahk скрипт www.alphagrips.com/YAARG.AHK при нажатии клавиши переключения раскладки винда в области уведомлений в языковой панели отображает, что язык ввода переключился на русский, но при нажатии на клавиши по прежнему вводятся латинские буквы. Как исправить?
Автор: OnMyDSeeAtAll
Дата сообщения: 02.10.2011 18:01
Могу предложить как вариант, в котором клавиша энтер на цифровой клавиатуре будет приостанавливать действие скрипта и включать русскую раскладку клавиатуры, при повторном нажатии на ту же клавишу, будет возобновлена работа скрипта, и раскладка возвращена в английскую, так как скрипт писался под именно эту раскладку.
Код: sc11C:: ; enter (digital keyboard)
Suspend
If (A_IsSuspended)
{
PostMessage, 0x50,, 0x4190419,,
A
SoundBeep, 2500, 100 ; звуковой сигнал для мониторинга состояния
Sleep
, 50
SoundBeep, 2500, 100
; при желании можно убрать
}
Else
{
PostMessage, 0x50,, 0x4090409,,
A
SoundBeep, 2500, 100
}
KeyWait,
% A_ThisHotkey
Return
Автор: Bozo
Дата сообщения: 02.10.2011 23:21
OnMyDSeeAtAll
почему-то тупо жалуется на Missing }.

Ну это ладно. А вот как сделать переключение в русскую раскладку и при этом в ней тоже поменять местами клавиши. потому что стандартная раскладка тоже никуда не годится
Автор: OnMyDSeeAtAll
Дата сообщения: 03.10.2011 00:37

Цитата:
почему-то тупо жалуется на Missing }
1) Перед Suspend (строка №569) пишется сам хоткей sc11C::, 2) перед Else (строка№576) стоит фигурная скоба (}), всё это есть в моём коде, это просто результат небрежного копи-паста. Для остальной задачи, требуется заменить все хоткеи на виртуальные коды.


Добавлено:

Цитата:
требуется заменить все хоткеи
Все, в смысле все буквенные, которые есть в русской раскладке, остальные названия клавиш интернациональны.
Автор: OnMyDSeeAtAll
Дата сообщения: 03.10.2011 11:15
Нашел на 270той строке NumpadEnter, тогда sc11C:: не подойдёт, можно заменить на
Код: PrintScreen & Pause::
Suspend
PostMessage, 0x50, 2,,,
A
KeyWait, % SubStr(A_ThisHotkey, 15)
Return
Автор: Bozo
Дата сообщения: 03.10.2011 11:22

Цитата:
это просто результат небрежного копи-паста

Ну, копи-пастить я умею без ошибок, дело точно не в этом
Если вставлять фрагмент в начало скрипта, то в ошибке выводится
Line#
001 Return (а должно быть sc11C:: ; enter (digital keyboard) )
002 Suspend
003 If (A_IsSusoended)
blablabla
007 Sleep,50
008 SoundBeep 2500, 100
скобку здесь AHK.exe не видит
009 Else



Цитата:
Все, в смысле все буквенные, которые есть в русской раскладке,
Типа
б:: ш;
ы:: з;
?

Добавлено:
Пока проснулся, писал ответ, не заметил что уже новый пост появился

Цитата:
тогда sc11C:: не подойдёт, можно заменить на
PrintScreen & Pause::

Заменил Pause на Esc, заработало, переключается на русский. Кнопка Pause не подходит, она в этом пепелаце хардварная, служит для отключения устройства
Автор: OnMyDSeeAtAll
Дата сообщения: 03.10.2011 11:57

Цитата:
Типа
б:: ш;
ы:: з;
Нет, не q/й и w/ц, а vk51:: и vk57::, и т.д. Pause не годится?, тогда надо искать другой вариант.
Автор: Bozo
Дата сообщения: 03.10.2011 13:08

Цитата:
а vk51:: и vk57::,


Цитата:
sc11C::

А в чем разница? sc это я так понимаю scancode. А есть прога чтобы показывала сканкоды нажимаемых кнопочек? сори за нубские вопросы. А 'vk57', 'vk51' по какому принципу писать?
Автор: aidomars
Дата сообщения: 03.10.2011 14:23

Цитата:
А есть прога чтобы показывала сканкоды нажимаемых кнопочек?

Есть, ищите на http://forum.script-coding.com/
Автор: OnMyDSeeAtAll
Дата сообщения: 03.10.2011 15:25

Цитата:
А в чем разница?
vkxx это виртуальный, scxxx это машинный коды клавиш.

Цитата:
А есть прога чтобы показывала сканкоды нажимаемых кнопочек?
Есть.
Цитата:
А 'vk57', 'vk51' по какому принципу писать?
vk51:: - это q/й, sc10::, тоже. Если пользоваться тем скриптом-определителем, то затруднений не должно возникнуть.
Автор: FSWE
Дата сообщения: 03.10.2011 23:24
Как вывести в MsgBox сообщение на русском, пожалуйста? А то квадраты.

Добавлено:
OnMyDSeeAtAll

Цитата:
vkxx это виртуальный, scxxx это машинный коды клавиш.

Прочел, но не понял разницы.
Автор: creature_ws
Дата сообщения: 03.10.2011 23:40

Цитата:
Как вывести в MsgBox сообщение на русском, пожалуйста? А то квадраты.

Следует сохранять скрипты в правильной кодировке.
Автор: Bozo
Дата сообщения: 04.10.2011 15:45

Цитата:
Как вывести в MsgBox сообщение на русском, пожалуйста? А то квадраты.


Цитата:
Следует сохранять скрипты в правильной кодировке.

В UTF-8
Автор: creature_ws
Дата сообщения: 05.10.2011 13:28
В UTF-8 если используется AHK_L unicode
В 1251 ANSI в случае необдуманного использования ANSI версии AHK_L или оригинального AHK
Автор: oshizelly
Дата сообщения: 20.10.2011 02:19
Подскажите, сабж умеет задать одинаковые хоткеи для разных макросов в зависимости от текущего приложения? К примеру, если текущим приложением является MS Word, то по нажатию комбинации клавиш Ctrl+Shiftt+A запускает макрос ABC, а если текущее приложение Internet Explorer, то та же комбинация Ctrl+Shiftt+A запускает макрос XYZ.
Спасибо!
Автор: creature_ws
Дата сообщения: 20.10.2011 04:48
Умеет, используется директива #IfWinActive
Подробности в справке.
Автор: creature_ws
Дата сообщения: 03.11.2011 02:52
Кстати: Last update: October 16, 2011 - v1.1.05.01
Автор: OnMyDSeeAtAll
Дата сообщения: 05.11.2011 00:32
Будем считать это мелочью.
Автор: creature_ws
Дата сообщения: 22.12.2011 01:48
Скрипт для пакетной обработки большого количества ярлыков лежащих в одной папке, образец.
Применим в случае перемещения рабочей директории.

Код:
; Для AHK_L Unicode
; Скопировать скрипт в папку с ярлыками
#SingleInstance force
#KeyHistory 0
#NoEnv
SetBatchLines -1
FileEncoding, utf-8
Process, Priority,, High
SetWorkingDir, % A_ScriptDir

; задать старый путь к папке с каталогами приложений
old = C:\
; задать новый путь
new = D:\

Loop, %A_WorkingDir%\*.lnk,,1
{
FileGetShortcut, % A_LoopFileName , CurrentTarget, CurrentDir, Args, Description, CurrentIcon, IconNum, RunState
StringReplace, NewTarget, CurrentTarget, %old%, %new%
StringReplace, NewWorkingDir, CurrentDir, %old%, %new%
StringReplace, NewIconFile, CurrentIcon, %old%, %new%
FileCreateShortcut, % NewTarget, % A_LoopFileName, % NewWorkingDir, % Args, % Description, % NewIconFile,, % IconNum, % RunState
}
Автор: kot1313
Дата сообщения: 22.12.2011 20:07
creature_ws
! Спасибо за скрипт !
Сейчас буду пробовать
Автор: kot1313
Дата сообщения: 22.12.2011 22:28
creature_ws
Блин !!! РАБОТАЕТ !!!
Но есть одно но - у меня в панели с ярлыками много подпапок, а в них исчо есть вложенные папки с ярлыками......
Если я скрипт забрасываю в папку без подпапок - он отрабатывает идеально !
А вот если в этой папке есть вложенные, то появляется куча ярлыков (взятых из вложенных папок) с адрессацией на "Мой компьютер"
Можно ли скорректировать скрипт так, чтоб он просматривал вложенные папки (желательно с вложенностью до 7 уровней) и
менял там адрессацию ярлыков так же идеально, как в основной - исходной папке.
!!! Исчо раз заранее спасибо !!!
Автор: creature_ws
Дата сообщения: 23.12.2011 22:16
Верно, в скрипте недочёт. Первоначальный вариант должен был выглядеть так:

Код:
; Для AHK_L Unicode
; Скопировать скрипт в папку с ярлыками
#SingleInstance force
#KeyHistory 0
#NoEnv
SetBatchLines -1
FileEncoding, utf-8
Process, Priority,, High
SetWorkingDir, % A_ScriptDir

; задать старый путь к папке с каталогами приложений
old = C:\
; задать новый путь
new = D:\

Loop, %A_WorkingDir%\*.lnk
{
FileGetShortcut, % A_LoopFileName , CurrentTarget, CurrentDir, Args, Description, CurrentIcon, IconNum, RunState
StringReplace, NewTarget, CurrentTarget, %old%, %new%
StringReplace, NewWorkingDir, CurrentDir, %old%, %new%
StringReplace, NewIconFile, CurrentIcon, %old%, %new%
FileCreateShortcut, % NewTarget, % A_LoopFileName, % NewWorkingDir, % Args, % Description, % NewIconFile,, % IconNum, % RunState
}
Автор: LonerDergunov
Дата сообщения: 07.01.2012 01:34
Запущен скрипт/скомпилированный скрипт.
1. Как отследить второй и последующие запуски этого же скрипта?
То есть при первом запуске - запускается и переходит к определённой секции и выполняются некоторые действия. При третьем запуске - снова переходит к этой секции и т.д.
Другими словами - вначале запускается работающий скрипт, у скрипта два режима работы, переключающиеся кликом по иконке в трее. При повторном запуске хочу, например, чтобы переключался режим работы с одного на второй.

2. Как отследить, что в меню на иконку скрипта происходит нажатие средней кнопкой мыши?
Хочется чтобы при этом выполнение скрипта ставилось на паузу.


И ещё вопрос - можно ли сделать прозрачным не всё окно, а лишь его части (например, одну панель в Тотал коммандере)?
Автор: OnMyDSeeAtAll
Дата сообщения: 08.01.2012 13:52

Код: ComObjGet("winmgmts:").ExecQuery("select LastBootUpTime from "
. "Win32_OperatingSystem where Primary='true'").
_NewEnum.Next(Key)
IniRead,
LastBootUpTime
, % A_ScriptDir "\"SubStr(A_ScriptName, 1, -4)".ini"
,
Set
, LastBootUpTime

If % LastBootUpTime!=SubStr(Key.LastBootUpTime, 1, -11)
{
IniWrite,
% SubStr(Key.LastBootUpTime, 1, -11)
,
% A_ScriptDir "\"SubStr(A_ScriptName, 1, -4)".ini"
,
Set
, LastBootUpTime
IniWrite, % RunCount:=1
,
% A_ScriptDir "\"SubStr(A_ScriptName, 1, -4)".ini"
,
Set
, RunCount
}
IniRead,
RunCount
, % A_ScriptDir "\"SubStr(A_ScriptName, 1, -4)".ini"
,
Set
, RunCount
MsgBox, 262208, Info, % "Current run is: "RunCount, 1
OnMessage(1028, "WndProc")
OnExit,
ExitScript

Esc::
Suspend
ExitApp

ExitScript:
IniWrite,
% ++RunCount
, % A_ScriptDir "\"SubStr(A_ScriptName, 1, -4)".ini"
,
Set
, RunCount
MsgBox, 262192, Info, % "Next run is: "RunCount, 1
ExitApp

WndProc(Params*)
{
If Params.2=519
{
Suspend
TrayTip,,
% "Suspend is: "(A_IsSuspended ? "On":"Off")
Sleep, 1000
TrayTip
}
}

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: как добавить ивритские шрифты


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