2016-04-12 4 views
1

Я вызываю сценарий из другой программы (Vicon Nexus 2.3). Эта другая программа запустит Matlab, а затем запустит скрипт.Принесите окно Matlab uigetfile перед всеми другими программами?

Первое, что делает скрипт, это вызов uigetfile(). Однако, поскольку программа Nexus имеет фокус Windows, окно uigetfile() появляется за всем. Есть ли способ перенести его на передний план, не используя мышь?

Я пробовал:

shg 
uistack() 

Но я думаю, что проблема здесь окна фокус, не uistack. Кто-нибудь знает, возможно ли это?

+0

Просто чтобы убедиться, вы попробовали ['uistack'] (http://se.mathworks.com/help/matlab/ref/uistack.html) со вторым аргументом 'top', то есть' uistack (handle_to_uigetfile_object, 'top') '? – mikkola

ответ

2

Что вам нужно сделать, так это довести Matlab до открытия диалога uigetfile. Вы можете сделать это, например. по телефону commandwindow:

commandwindow(); 
uigetfile(); 

Испытано начиная Matlab из командной строки и накладывая некоторые другие окна сверху, когда он открыт, но до того, как код после pause выполняется:

matlab -r "pause(3); commandwindow(); uigetfile();" 
+0

Это отлично подходит для отображения окна uigetfile перед другими окнами Matlab +1, однако это не работает для меня, когда другое приложение имеет фокус Windows. Код заставляет значок commandwindow на панели инструментов мигать, но он не появляется спереди. – willpower2727

Смежные вопросы