2016-04-12 3 views
1

Ich rufe ein Skript von einem anderen Programm (Vicon Nexus 2.3). Dieses andere Programm wird Matlab starten und dann das Skript ausführen.Bringen Matlab Uigetfile Fenster vor allen anderen Programmen?

Das erste, was das Skript tut, ist das Aufrufen von uigetfile(). Da das Nexus-Programm jedoch den Windows-Fokus hat, wird das uigetfile() -Fenster hinter allem angezeigt. Gibt es eine Möglichkeit, es ohne Maus in den Vordergrund zu bringen?

Ich habe versucht:

shg 
uistack() 

Aber ich denke, die Frage ist hier Fenster Fokus, nicht uistack. Wer da draußen weiß, ob das möglich ist?

+0

Nur um sicherzugehen, Haben Sie ['uistack'] (http://se.mathworks.com/help/matlab/ref/uistack.html) mit dem zweiten Argument 'top' versucht, zB' uistack (handle_to_uicketfile_object, 'top') '? – mikkola

Antwort

2

Was Sie tun müssen, ist Matlab nach vorne zu bringen, bevor Sie uigetfile Dialog öffnen. Sie können das z.B. durch den Aufruf von commandwindow:

commandwindow(); 
uigetfile(); 

Getestet von Matlab von der Kommandozeile starten und einige andere Fenster auf der Oberseite überlagert, wenn es geöffnet ist, aber bevor der Code nach pause ausgeführt wird:

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

Das funktioniert sehr gut, um das uigetfile-Fenster vor andere Matlab-Fenster +1 zu bringen, aber es funktioniert nicht für mich, wenn eine andere Anwendung den Fokus von Windows hat. Der Code bewirkt, dass das Befehlsfenster-Symbol in der Symbolleiste blinkt, aber nicht im Vordergrund angezeigt wird. – willpower2727

Verwandte Themen