我正在使用 C++ API 来启动 MATLAB(通过 engOpenSingleUse)。一切正常。但我想将窗口的标题从“MATLAB 命令行窗口”更改为其他名称。
我经常打开其中的 4 或 5 个,如果我的程序崩溃,偶尔会有一个成为孤立的。如果我可以更改标题,我会更好地知道哪个是哪个。
是否有我可以执行的 MATLAB 命令(通过 engEvalString)来执行此操作?
我正在使用 C++ API 来启动 MATLAB(通过 engOpenSingleUse)。一切正常。但我想将窗口的标题从“MATLAB 命令行窗口”更改为其他名称。
我经常打开其中的 4 或 5 个,如果我的程序崩溃,偶尔会有一个成为孤立的。如果我可以更改标题,我会更好地知道哪个是哪个。
是否有我可以执行的 MATLAB 命令(通过 engEvalString)来执行此操作?
对于 Matlab 7:
jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance;
jDesktop.getMainFrame.setTitle('my new title');
*或专门针对命令行窗口:
cmdWin = jDesktop.getClient('Command Window');
cmdWin.getTopLevelAncestor.setTitle('my new title');
对于 Matlab 6:
jDesktop = com.mathworks.ide.desktop.MLDesktop.getMLDesktop;
jDesktop.getMainFrame.setTitle('my new title');
*或对于命令行窗口:
cmdWin = jDesktop.getClient('Command Window');
cmdWin.getTopLevelWindow.setTitle('my new title');
此处描述了其他相关的未记录桌面功能:http:
//UndocumentedMatlab.com/blog/tag/desktop/
尝试直接针对 Java AWT 类进行编码。这可能更灵活,可以在 C++ 下运行的 Matlab 引擎中工作。(没有在那种情况下测试它,因为我不使用引擎。)
function change_win_title(oldName, newName)
wins = java.awt.Window.getOwnerlessWindows();
for i = 1:numel(wins)
if isequal(char(wins(i).getTitle()), oldName)
wins(i).setTitle(newName);
end
end
你会像这样使用它。
change_win_title('MATLAB Command Window', 'My new window name')
您可以使用其他测试(窗口类等)来识别感兴趣的窗口。