用进程Id替换Matlab标题名称不适用于startup.m
我想启动matlab并将matlab窗口的标题替换为进程id。因此,我创建了以下startup.m文件:用进程Id替换Matlab标题名称不适用于startup.m,matlab,Matlab,我想启动matlab并将matlab窗口的标题替换为进程id。因此,我创建了以下startup.m文件: cd E:\matlab_files\ jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance; jDesktop.getMainFrame.setTitle(['PID:' num2str(feature('getpid'))]); 现在,matlab将文件夹更改为E:\matlab\u文件,但不会替换进程Id。一旦matlab启动
cd E:\matlab_files\
jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance;
jDesktop.getMainFrame.setTitle(['PID:' num2str(feature('getpid'))]);
现在,matlab将文件夹更改为E:\matlab\u文件,但不会替换进程Id。一旦matlab启动,我执行startup.m的第2行和第3行,matlab窗口的标题将替换为进程id
请解释这种行为的原因
我正在使用Matlab2009b。我观察到了相同的行为。请注意,startup.m在matlabrc.m中运行,而MATLAB仍在启动。您可以尝试将代码放在matlabrc.m中,尽管我不建议您编辑该文件 有几个可能的原因:
所有图形尚未完成初始化->因此您无法替换标题(我假设它尚未创建) 您可以通过尝试将
jDesktop.getMainFrame.getTitle
显示到您的startup.m
来检查这一点,您将看到它是空的
这就是为什么——你没有要求修复——但我想你想要一个!!;)
你可以用一个计时器来解决这个问题——注意,我在下面的计时器里放了60秒——但它可能会少很多
function startup
if ~isdeployed % its agood practice to use this incase you ever compile your codes.
cd E:\matlab_files\
timerFcn = @updatetitle;
tfcn = timer('StartDelay', 60, 'TimerFcn', timerFcn );
start(tfcn)
end
end
function updatetitle(varargin)
jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance;
jDesktop.getMainFrame.setTitle(['PID:' num2str(feature('getpid'))]);
end
非常感谢。我确实想要解决方案:)。工作起来很有魅力。也学到了一些新东西。