Дано. Работает файлмейкер, его окна - в фоне. На переднем плане какой-нибудь хром.
Некое внешнее приложение запускает на файлмейкере скрипт.
Нужно, чтобы файлмейкер после этого активировался и отобразился поверх всех окон (поверх браузера, например).
Пока это не удается сделать. Лишь ярлычки в панели задач начинают мигать, но файлмейкер как спрятался, так и прячется.
Найти: способ активировать приложение Файлмейкер, вывести его на передний план.
Activate Window (FileMaker)
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: Activate Window (FileMaker)
Обычный Select Window в скрипте FM не помогает?
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: Activate Window (FileMaker)
к сожалению, нет
что испробовано:
Select Window
Adjust Window (restore)
New window
В какой-то момент один из этих методов в сочетании с другими дает нужный результат, но потом эффект теряется
и становится понятно, что это все ненадежно
можно попытаться активировать через Send Event. Но для этого нужно знать путь к приложению FileMaker. А вычислить его тоже никак
что испробовано:
Select Window
Adjust Window (restore)
New window
В какой-то момент один из этих методов в сочетании с другими дает нужный результат, но потом эффект теряется
и становится понятно, что это все ненадежно
можно попытаться активировать через Send Event. Но для этого нужно знать путь к приложению FileMaker. А вычислить его тоже никак
-
- Сообщения: 106
- Зарегистрирован: 21 сен 2017, 18:48
- Откуда: Минск
Re: Activate Window (FileMaker)
Когда-то была похожая проблема, удалось побороть вызовом нужного файла через промежуточный файл:
1 сначала вызывался FM - файл "контроллер.fmp12" с названием скрипта на открытие другого файла
2 Скрипт в файле контроллер.fmp12 открывал файл командой OpenFile (убиралась галка OpenHidden и потом при необходимости SelectWindow)
В хелпе про Select window script step - много в комментах написано о ньюансах вызова скрытых окон/файлов
Альтернативный вариант через файл с VBScript (работает)
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"
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: Activate Window (FileMaker)
Алексей, спасибо огромное. Похоже с вашей помощью задача, наконец, решается.
первый вариант показался чересчур сложным. хотя он кроссплатформенный. Но там нужно много колдовать с передачей параметров.
второй вариант - реализовал в виде одной-единственной команды Send Event, в которую в текст пишу следующее
где 'run' - это имя окна, которое хочу активировать (название может быть любым, можно сделать уникальным).
все это можно задать и калькуляцией, поэтому имя окна может быть любым нужным именем.
Либо наоборот, можно в скрипте перед тем как вызвать Send Event переименовать окно в run, а потом в самом конце переименовать его обратно.
Работает прикольно: если в приложении открыто несколько окон, то открывается не все приложение, а только обозначенное окно (как если бы мы на ярлычок нажали). Возможно, это то, что нужно
Еще раз спасибо!!!
Форум работает
первый вариант показался чересчур сложным. хотя он кроссплатформенный. Но там нужно много колдовать с передачей параметров.
второй вариант - реализовал в виде одной-единственной команды Send Event, в которую в текст пишу следующее
Код: Выделить всё
powershell -windowstyle hidden -ExecutionPolicy ByPass -noexit (New-Object -ComObject WScript.Shell).AppActivate('run');
все это можно задать и калькуляцией, поэтому имя окна может быть любым нужным именем.
Либо наоборот, можно в скрипте перед тем как вызвать Send Event переименовать окно в run, а потом в самом конце переименовать его обратно.
Работает прикольно: если в приложении открыто несколько окон, то открывается не все приложение, а только обозначенное окно (как если бы мы на ярлычок нажали). Возможно, это то, что нужно
Еще раз спасибо!!!
Форум работает