Activate Window (FileMaker)

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Ответить
andrey volkov
Сообщения: 212
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Activate Window (FileMaker)

Сообщение andrey volkov » 09 ноя 2019, 05:06

Дано. Работает файлмейкер, его окна - в фоне. На переднем плане какой-нибудь хром.
Некое внешнее приложение запускает на файлмейкере скрипт.
Нужно, чтобы файлмейкер после этого активировался и отобразился поверх всех окон (поверх браузера, например).
Пока это не удается сделать. Лишь ярлычки в панели задач начинают мигать, но файлмейкер как спрятался, так и прячется.

Найти: способ активировать приложение Файлмейкер, вывести его на передний план.

Аватара пользователя
Arcady
Администратор
Сообщения: 151
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: Activate Window (FileMaker)

Сообщение Arcady » 09 ноя 2019, 19:47

Обычный Select Window в скрипте FM не помогает?
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

andrey volkov
Сообщения: 212
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: Activate Window (FileMaker)

Сообщение andrey volkov » 10 ноя 2019, 08:41

к сожалению, нет
что испробовано:
Select Window
Adjust Window (restore)
New window

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

можно попытаться активировать через Send Event. Но для этого нужно знать путь к приложению FileMaker. А вычислить его тоже никак :(

Alexei Sytch
Сообщения: 66
Зарегистрирован: 21 сен 2017, 18:48
Откуда: Минск

Re: Activate Window (FileMaker)

Сообщение Alexei Sytch » 13 ноя 2019, 09:46

Когда-то была похожая проблема, удалось побороть вызовом нужного файла через промежуточный файл:
1 сначала вызывался FM - файл "контроллер.fmp12" с названием скрипта на открытие другого файла
2 Скрипт в файле контроллер.fmp12 открывал файл командой OpenFile (убиралась галка OpenHidden и потом при необходимости SelectWindow)
В хелпе про Select window script step - много в комментах написано о ньюансах вызова скрытых окон/файлов

Альтернативный вариант через файл с VBScript (работает)

Код: Выделить всё

Set WshShell = CreateObject("WScript.Shell") 
WScript.Sleep 2000 
Res = WshShell.AppActivate("MyWindow")  -- название нужного окна в FileMaker
WScript.Sleep 2000 
If Res Then WshShell.SendKeys("^1") -- (необязательная строчка) запустить скрипт по комбинации клавиш "Ctrl + 1"

andrey volkov
Сообщения: 212
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: Activate Window (FileMaker)

Сообщение andrey volkov » 13 ноя 2019, 15:11

Алексей, спасибо огромное. Похоже с вашей помощью задача, наконец, решается.

первый вариант показался чересчур сложным. хотя он кроссплатформенный. Но там нужно много колдовать с передачей параметров.

второй вариант - реализовал в виде одной-единственной команды Send Event, в которую в текст пишу следующее

Код: Выделить всё

powershell -windowstyle hidden -ExecutionPolicy ByPass -noexit  (New-Object -ComObject WScript.Shell).AppActivate('run');
где 'run' - это имя окна, которое хочу активировать (название может быть любым, можно сделать уникальным).
все это можно задать и калькуляцией, поэтому имя окна может быть любым нужным именем.
Либо наоборот, можно в скрипте перед тем как вызвать Send Event переименовать окно в run, а потом в самом конце переименовать его обратно.


Работает прикольно: если в приложении открыто несколько окон, то открывается не все приложение, а только обозначенное окно (как если бы мы на ярлычок нажали). Возможно, это то, что нужно
Еще раз спасибо!!!

Форум работает

Ответить