2011-02-23 2 views
1

У меня довольно большая рутина, которая может работать в течение нескольких часов. Здесь и там он создает фигуру, что-то делает для нее и сохраняет эту фигуру.MATLAB: Запретить делать фигуры активными

Поскольку у меня есть только один компьютер, я хотел бы продолжить работу с этой машиной. Проблема в том, что всякий раз, когда делается новая цифра, MATLAB снова становится активным приложением. Есть ли способ сообщить MATLAB или Windows, что MATLAB не может быть разрешено активировать себя?

Я видел, что одна возможность - запустить сценарий MATLAB полностью в фоновом режиме (like that). Но это немного слишком неконтролируемо, так как я хотел бы переключиться на окно MATLAB и проверить вывод в окне команд.

Любые идеи? Если есть общее решение для Windows, которое препятствует тому, чтобы другие приложения стали активными, также было бы круто!

+0

Что вы подразумеваете под активными? Что окно фигуры появляется перед тем, над чем вы работаете? – Ghaul

+0

Какая версия Windows? В наши дни построено поведение, предотвращающее фоновые приложения от кражи фокуса. –

ответ

1

Вы можете перегрузить функцию фигуры следующим образом, чтобы предотвратить фигуру внезапной вверх:

a = figure('visible','off'); 
+0

Представляет некоторые другие проблемы (кажется, что uicontrol не любит быть невидимым), но он работает! – Thomas

1

Я ненавижу констатировать очевидный, но вы всегда можете хранить данные, которые вы хотите, чтобы построить до конца.

Теперь вы скажете мне, что некоторые из этих данных являются подпрограммами и не возвращаются к основной процедуре. ОК. Таким образом, решением было бы написать класс «Store_Plot_Data» с методом, который записывал в память данные, @plot_function_name (для 3D, разброса и т. Д.), Строки меток оси и т. Д. Затем вы создали бы один экземпляр этого класса в вашей основной программе и обеспечить видимость этого одного экземпляра для всех подпрограмм вы могли бы сделать одно из следующих действий:

  1. использовать global переменного в качестве одного экземпляра ... Хорошо, не так элегантно ,

  2. Singleton pattern реализовать, или

  3. передать все подпрограммы дескриптору этого экземпляра класса «Store_Plot_Data».

+0

Это тоже может работать, да (моя оригинальная проблема долго разрешена: D), но снова печатать и экономить цифры довольно медленно, и сохранение нескольких сотен цифр еще потребует значительного количества времени (и, следовательно, беспокойства, если я хочу сделать что-то еще на стороне) – Thomas

0

Если есть общее решение для Windows, что предотвращает другие приложений, чтобы стать активными также будет круто!

В Windows 7, это работает для меня:

http://pcsupport.about.com/od/windowsxp/ht/stealingfocus02.htm

Набор "Панель HKEY_CURRENT_USER \ Control \ Desktop \ ForegroundLockTimeout" в 30d40 (HEX).

0

Если вы хотите, чтобы все фигуры не отображались.

set(0,'defaultFigureVisible','off'); 
0

В начале вашего скрипта сделать:

set(0, 'DefaultFigureVisible', 'off'); 
set(0, 'DefaultFigureWindowStyle', 'docked'); 

Dock фигуру окна Matlab и максимизировать любое другое приложение (Excel, Word и т.д.) вы работаете перед Matlab.

Тогда вы можете продолжать работать, не прерываясь цифрами, мигающими на вашем лице.

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