1 (изменено: ypppu, 2019-08-22 23:14:03)

Тема: AHK: Отправка команд в Mindjet MindManager

Всем привет!
Mindjet MindManager - хорошаяи популярная программа для построения интеллекткарт. Есть там горячие клавиши, но не для всех команд меню, и нет опций настройки горячих клавиш.
Как всегда, для удобства хочется настроить горячие клавиши под себя.
Но нигде в инете не нашёл обсуждения на эту тему. Поэтому решил завести ветку здесь. Надеюсь АНК здесь может помочь.

В первую очередь хотелось бы настроить горячие клавиши для отправки команд: вставить гиперссылку из буфера обмена и вставить текст к топику из буфера обмена.
В Mindjet MindManager есть встроенные функции добавления гипрессылки и заметки к топику из буфера обмена. Чтобы к ним добраться нужно: выбрать топик-ПКМ-Paste- и "Paste Hyperlink" или  "Paste Notes".
Как видите путь долгий.
Пробовал рассмотреть возможности Autohotkey и Winspector Spy (по статье by Rajat (перевод Androgen Belkin)), но не получается отловить пункт меню, например, "Paste Notes", чтобы на него посылать команды нажатия ЛКМ.

Прошу помочь кто чем может.

2 (изменено: Karam, 2019-08-23 16:03:22)

Re: AHK: Отправка команд в Mindjet MindManager

Штатные пункты контекстного меню топиков становятся доступны после выделения нужного топика по нажатию ПКМ. Поэтому предполагаю, что текст из буфера обмена должен вставляться в качестве заметки к выделенному топику.

Ctrl+V как работает?

Это команда вставляет подтопик к выделенному топику.
Текст самого топика редактировать не нужно.
Хотелось бы только присоединить к существующему топику заметку или гиперссылку из буфера обмена одним нажатием клавиш.
В самой программе MindManeger горячих клавиш для этого не предусмотрено, а есть только команды в контекстном меню.
Битности версий совпадают - 32.

Можно ли вызвать меню с клавиатуры кнопкой меню и перемещаться по нему стрелками?

Да, вызов меню топика с клавиатуры - работает: если фокус на топике, то нажатие клавиши контекстного меню, которая находится на клавиатуре, приводит к появлению меню. После этого возможна навигация по пунктам меню с помощью стрелок.

Что значит "не получается отловить"?

Т.е. WinSpy показывает только название окна программы, а названий пунктов меню не показывает.

3 (изменено: stealzy, 2021-07-27 20:00:50)

Re: AHK: Отправка команд в Mindjet MindManager

#SingleInstance force
; ваш код тут
; MsgBox % A_TitleMatchMode
Return

#If MindManagerHwnd := regexWinActive("ahk_class MindManager\d+WndClass")
	; Ctrl + Shift + V
	^+v::pasteClip2MindJet(MindManagerHwnd, autoDetectTypeInClipboard())
#IfWinActive

regexWinActive(wintitle) {
	SetTitleMatchMode RegEx
	Return WinActive(wintitle)
}
autoDetectTypeInClipboard() {
	linkExp := "(*UCP)(^(?<Protocol>\w+://)?([\w-]+\.){0,3}(?<Domain2Lvl>[\w-]+)\.(?<Domain1Lvl>\w+)(?<Port>:\d{1,4})?(/(?<UrlPath>\S*))?)|(?<FilePath>^[\w-]+:[\\/]+[ \S]*$)"
	Return RegExMatch(Clipboard, linkExp) ? "link" : "note"
}
pasteClip2MindJet(hWnd, type:="note") {
	static param1 := {note: 0xac9, link: 0x947, unformatted: 0xf60}
	PostMessage 0x111, param1[type], 0,, % "ahk_id" hWnd
}

4

Re: AHK: Отправка команд в Mindjet MindManager

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

5

Re: AHK: Отправка команд в Mindjet MindManager

Может я что-то не так делаю: копировал Ваш код в новый файл с расширением *.AHK. Двойным кликом запускаю, получаю ответ: Error line 7. The following variable name contains an illegal character: "type:" The program will exit.
У меня Windows 7 ru и MindManager 2019.

6

Re: AHK: Отправка команд в Mindjet MindManager

Karam
Может, AutoHotkey обновить надо.

7

Re: AHK: Отправка команд в Mindjet MindManager

Или может класс окна не совпадает.

8

Re: AHK: Отправка команд в Mindjet MindManager

Karam
На Windows 7 скрипт запускается нормально.
Я только не пойму что-то, что он делает.
Копирую текст. Затем копирую ссылку.
И...?!
Дальше что?!
Вставить-то как?!
В чём заключается Автоматизация дкйствий?

9 (изменено: Karam, 2019-08-27 18:33:49)

Re: AHK: Отправка команд в Mindjet MindManager

DD, спасибо!
Установка последней версии помогло!

stealzy, спасибо!
По работе кода - проверил в чистом виде - работает, вставляет текст из буфера в виде заметки - это то, что нужно было! Большое спасибо!

Но вот возникла проблема, встроил Ваш код в свой файл с набором скриптов - теперь по нажатию "+^v" код вставляет из буфера текст, но не в заметку топика, а делает его в виде выноски!?
В чём может быть причина, не подскажете?
Как можно решить проблему?

10

Re: AHK: Отправка команд в Mindjet MindManager

А так? —

; UriRegEx := "^(?<Protocol>\w+)://\S+$"
UrlRegEx := "(*UCP)^(?<Protocol>\w+://)?(\w+\.){0,3}(?<Domain2Lvl>\w+)\.(?<Domain1Lvl>\w{2,})(?<Port>:\d{1,4})?(/(?<Path>\S*))?$"
#IfWinActive ahk_class MindManager19WndClass
+^sc2F::pasteClip2MindJet(RegExMatch(Clipboard, UrlRegEx) ? "link" : "note")
Return
#IfWinActive
pasteClip2MindJet(type:="note", winTitle:="ahk_class MindManager19WndClass") {
	static param1 := {note: 0xac9, link: 0x947, unformatted: 0xf60}
	PostMessage 0x111, param1[type], 0,, % winTitle
}

11

Re: AHK: Отправка команд в Mindjet MindManager

DD
не пошло - после изменения при нажатии Ctrl+Shift+V текст буфера вставляется в виде гиперссылки (которая, естественно не работает, ведь в буфере обычный текст).

stealzy
Кроме этого, обнаружилось, что при добавлении скрипта в мой единый файл с коллекцией скриптов другие клавиши перестали работать.
Я уж думал, что это из-за перехода на новую версию. Но нет, убрал разрабатываемый скрипт из общего файла скриптов и все клавиши снова заработали.

12

Re: AHK: Отправка команд в Mindjet MindManager

stealzy, Большое спасибо!
Настроил запуск Вашего скрипта через Run, так думаю, будет стабильнее всё работать.
Заметки вставляются замечательно!
Жить стало веселей!

А какой код можно использовать для вставки к топику гиперссылки? Ведь просто так поменять слово "note" на "hypelink" - это будет неправильно.
Хотелось бы назначить своё сочетание для вставки гиперссылки, например, ^+k.

А вообще, мне не понятно, почему разработчики MinManager не предусмотрят такую востребованную функцию как назначение клавиш для своей программы. Ведь очень удобно.

13

Re: AHK: Отправка команд в Mindjet MindManager

Не ожидал, что скрипт распознаёт содержание буфера.
Поэтому сначала не проверил на вставку ссылок.
Вставка ссылок работает и в первом варианте скрипта, который Вы делали, и во втором.
Но ссылок не всех. При попытке вставить ссылку "http://forum.script-coding.com/viewtopic.php?pid=135911#p135911" - всё прикрепляется в виде заметки.
Также не срабатывает: http://forum.ru-board.com/
А вот такая ссылка вставляется как ожидается: http://forum.wincmd.ru/index.php?sid=ccaecc6dfc1d0356ea67c270c099ae8b

Может знак "-" в адресе сбивает с толку?

14 (изменено: Karam, 2019-09-01 09:28:51)

Re: AHK: Отправка команд в Mindjet MindManager

stealzy, гиперссылки работают! Большое спасибо!
В процессе работы выяснилось, что ссылки на локальные файлы не вставляются в виде ссылок, а прикрепляются в виде заметок.
Можно как-нибудь изменить скрипт, чтобы он вставлял ссылки не только из интернета, но и пути к локальным файлам, например "f:\Мои документы\Программы\Utilites\AutoHotkey\PasteNones.ahk"?

В MindManager есть ещё возможность делать ссылки на карты и топики между разными картами (удобно увязывать карты между собой).
Хотелось бы так же, чтобы скрипт распознавал их и прикреплял в виде сносок.
Ссылки на карты имеют вид: "F:\Dokum\ПравCтат\П_ПравСтат.mmap".
Ссылки на топики имеют вид типа такого: "mj-map:///F:\Dokumenten\Методика%20дис\ПравCтат\П_ПравСтат.mmap#oid={1FB7AE44-2841-4BDC-947B-3AA729F09DF5}"
Т.е. начинаются с "mj-map:///"
Это очень удобно, когда скрипт распознаёт содержание буфера и сам может выбрать, вставить в виде ссылки или в виде заметки.

15

Re: AHK: Отправка команд в Mindjet MindManager

Это просто здорово! Работает на ура! Большое спасибо!
Думаю, что скрипт можно разместить в коллекции - вполне работоспособный и удобный.

16

Re: AHK: Отправка команд в Mindjet MindManager

stealzy,
Вышла новая версия MindManager 2020. Предыдущий скрипт перестал работать - чего-то в работе стало не хватать - к хорошему привыкаешь быстро
Изменил в Вашем скрипте "ahk_class MindManager19WndClass" на "ahk_class MindManager20WndClass" - заработало! Ура!!!
Может кому пригодиться.
Спасибо ещё раз Вам за скрипт.

17

Re: AHK: Отправка команд в Mindjet MindManager

stealzy
Пользуюсь Вашим скриптом успешно. Спасибо за разработку.
Но не могу правильно настроить команду для его запуска только для окна MinManager - так, чтобы в других окнах сочетание "^+v" срабатывало, минуя скрипт для обработки буфера.

Текущая версия AHK - 1.1.32.00, Windows 10 64 bit.
Для вставки значений из буфера использую такой код:

^+sc02F:: 
IfWinActive ("ahk_class MindManager20WndClass")
{^+v:: Run, "c:\Program Files\AutoHotkey\PasteNones.ahk"
return
}
Else
WinActivate
Send ^+v
return

Но этот код не срабатывает в окнах других приложений так, чтобы посылать им сочетание клавиш "^+v".
Хотелось бы, чтобы в окно Word-а, или других программ, уходило сочетание "^+v".
Как не пытался, не могу разобраться, как правильно составить скрипт.
Прошу помочь.

18

Re: AHK: Отправка команд в Mindjet MindManager

Мой код вверху темы работает как нужно, только в целевом окне.
Уже полгода как .
Не понимаю что с вами не так?