1

Тема: AHK: Как передать шотркат последнему активному окну (классу)?

Ctrl+x, например. Чтобы работал и с файлами на рабочем столе и с папками и с текстом в блокноте. В "Autoit" есть такой способ:

$a = WinList()
$z = 0

For $i = 1 to $a[0][0]
If WinGetState($a[$i][1]) = 39 Then 
$z = 1
ExitLoop
Endif
Next

If $z <> 1 Then
For $i = 1 to $a[0][0]
If WinGetState($a[$i][1]) = 7 AND $a[$i][0] <> "Start" AND $a[$i][0] <> "" Then ExitLoop
Next
Endif

WinActivate($a[$i][0], "")
Send("^x")

Я почти ничего из него не понимаю, чтобы переделать по такому же принцмпу в "Ahk" .

Этот код  хорошо работает, правда немного медленно, да и Gui я почти в Ahk дособирал. Может вы знаете подобное решение для Ahk?

2

Re: AHK: Как передать шотркат последнему активному окну (классу)?

Что есть шотркат?

3

Re: AHK: Как передать шотркат последнему активному окну (классу)?

ypppu пишет:

Что есть шотркат?

Это клавиатурное сочетание (Send, ^x). Извините если с термином напутал. В графических приложениях это так называется

4

Re: AHK: Как передать шотркат последнему активному окну (классу)?

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

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

5

Re: AHK: Как передать шотркат последнему активному окну (классу)?

Передать сочетание клавиш активному окну довольно просто:

Send, ^x

В русском переводе документации можно почитать Send / SendRaw / SendInput / SendPlay / SendEvent: Send Keys & Clicks.

6

Re: AHK: Как передать шотркат последнему активному окну (классу)?

teadrinker пишет:

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

Ничем если оно все еще активно .

ypppu пишет:

Передать сочетание клавиш активному окну довольно просто...

Да, это так, если использовать клавиатуру например. Я же пытаюсь добавить кнопки на экран (gui), сделать что-то вроде дока, для управления приложениями с их помощью. В этом случае (при нажатии на такую кнопку) активным становится "окно" Gui, таки образом клавиатурное сочетание никуда не отправляется. С функцией передачи "горячих клавиш" конкретному окну я разобрался

WinActivate, ahk_class ProgMan
Send, ^x

Таким образом можно "вырезать" выделенный файл с рабочего стола, а вот из папки нельзя. С текстом в  болкноте тоже ничего не получится, для всего этого отдельные команды. А я хочу для стандартных действий таких как "копировать", "вставить", "назад", "вперед" и т.д. применить универсальное решение, чтобы не загружать для каждого приложения отдельный Gui.

7

Re: AHK: Как передать шотркат последнему активному окну (классу)?

То есть трудность в том, что окно GUI становится активным, и сочетания клавиш посылаются не в целевое окно, а в само окно GUI?

8 (изменено: restless_fisher, 2011-07-20 22:23:24)

Re: AHK: Как передать шотркат последнему активному окну (классу)?

ypppu пишет:

То есть трудность в том, что окно GUI становится активным, и сочетания клавиш посылаются не в целевое окно, а в само окно GUI?

Ага, именно в этом
Хотя наверное даже в том, что я не знаю что мне писать вместо целевого окна. Тоесть, например я сделал GUI  для фотошопа, там около 20 кнопок, все они заточены именно под фотошоп, поэтому когда я перехожу к работе с папками или браузером я загружаю другой GUI, а в этих средах уже много общего (горячие клавиши я мсею ввиду),  а загружать каждый раз интерфейс для рабочего стола, папок, браузера и т.д. не очень логично (опять же, из-за сходства многих команд), поэтому я и хочу узнать, есть-ли универсально средство для кнопок с передачей одних и тех же горячих клавиш в разные окна (разные Ahk_классы).

9

Re: AHK: Как передать шотркат последнему активному окну (классу)?

Если я правильно понял то попробуйте это:

~lbutton::
winget,name_id,id,A
WinGetTitle, name, ahk_id %name_id%
if name <> x ; это название окна gui
{
filedelete, c:\active.txt
fileappend, %name_id%, c:\active.txt
}
return

Это наверное лучше сделать как отдельный скрипт, а в ваш gui добавить функцию типа:

fileread, active, c:\active.txt, 1
winactivate, ahk_id %active%
send, ^x

По идее должно сработать почти в любых вариантах, ну нешто когда ид окна не сможем определить

10

Re: AHK: Как передать шотркат последнему активному окну (классу)?

restless_fisher пишет:

поэтому я и хочу узнать, есть-ли универсально средство для кнопок с передачей одних и тех же горячих клавиш в разные окна (разные Ahk_классы).

ControlSend

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