Программный запуск автономного проигрывателя Adobe Flashplayer в Linux / X11

StackOverflow https://stackoverflow.com/questions/164460

Вопрос

Автономный flashplayer не принимает никаких аргументов, кроме файла .swf, когда вы запускаете его из командной строки. Мне нужен плеер, чтобы перейти на полный экран, без оконных рамок и тому подобное. Это можно сделать, нажав Ctrl + F после запуска программы. Я хочу сделать это программно, так как мне нужно, чтобы он запускался в полноэкранном режиме без какого-либо вмешательства человека.

Я предполагаю, что мне нужно как-то получить дескриптор окна, а затем отправить ему событие, которое выглядит как " ctrl + f " нажатие клавиши.

Если это имеет какое-то значение, похоже, flashplayer - это приложение gtk, и у меня установлен python с установленным pygtk.

ОБНОВЛЕНИЕ (решение, которое я использовал ... благодаря ответу ypnos):

./flashplayer http://example.com/example.swf & sleep 3 && ~/xsendkey -window "Adobe Flash Player 10" Control+F
Это было полезно?

Решение

Вы можете использовать специальное приложение, которое отправляет нажатие клавиши в диспетчер окон, который затем передает его на флэш-память, если окно запускается как активное окно на экране. Однако это довольно подвержено ошибкам из-за задержек между запуском вспышки и появлением окна.

Например, ваш скрипт может сделать что-то вроде этого: flashplayer * .swf сон 3 & amp; Контроль xsendkey + F

Приложение xsendkey можно найти здесь: http: //people.csail .mit.edu / adonovan / хаки / xsendkey.html Без указания конкретного окна оно отправит его в корневое окно, которое обрабатывается вашим оконным менеджером. Вы также можете сначала попытаться выяснить идентификатор окна, используя xprop или что-то связанное с ним.

Другой вариант - это оконный менеджер, который может запомнить ваши настройки и автоматически применить их. Например, Fluxbos предоставляет эту функцию. Вы можете настроить fluxbox, чтобы сделать Window без декора, и растянуть его по всему экрану, если flashplayer поддерживает изменение размера. Это также не так приятно, так как это может повлиять на все окна флешплеера, которые вы когда-либо открывали.

Другие советы

Я действительно делал это давным-давно, но это было не мелочно. Мы использовали оконный менеджер Sawfish и написали хук для распознавания окна flashplayer, затем уберите все украшения и снимите их на весь экран.

Это может быть возможно без использования диспетчера окон, путем регистрации событий создания окна X из внешнего приложения, но я недостаточно знаком с X11, чтобы рассказать вам, как это будет сделано.

Другой вариант - написать приложение pygtk, которое встроит автономный флеш-плеер в gtk.Socket, а затем изменит свой размер. Подумав немного, это может быть вашим лучшим выбором.

  

Другой вариант - написать приложение pygtk, которое встроит автономный флеш-плеер в gtk.Socket, а затем изменит свой размер. Подумав немного, это может быть вашим лучшим выбором.

Это именно то, что я сделал. В дополнение к этому мой плеер масштабирует флэш-контент через Xcomposite, Xfixes и Cairo. .Deb, включая исходный код Python, можно найти здесь: http://www.crutzi.info/crutziplayer

Я сделал это, используя openbox, используя механизм, аналогичный тому, который упоминает bmdhacks. Из того, что я заметил, было то, что автономный флеш-плейер работал в полноэкранном режиме значительно хуже, чем тот же плейер в развернутом неокрашенном окне. (что, к сожалению, не является полноэкранным из-за меню). Мне было интересно запустить его с пользовательской темой gtk, чтобы сделать меню невидимым. Это просто проблема с производительностью. Если полноэкранный режим в настоящее время работает нормально, то это неоправданно сложно. Я работал на OLPC XO, там больше проблема с производительностью.

Мне не очень повезло с nspluginplayer (я думаю, он слишком глючит).

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

Вы должны использовать скрипт Acton 3 cmd:

stage.displayState = StageDisplayState.FULL_SCREEN;

См. Программирование Adobe Action script 3.

Но будьте осторожны: в полноэкранном режиме вы потеряете качество отображения!

У меня есть эта проблема ... больше под Linux !!!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top