windows 开始菜单中的快捷方式 - Matlab 可执行文件
shortcut in the windows starting menu - Matlab executable
我创建了一个基于 gui 的可执行文件,其中包含多个函数和文件,如果我在安装文件夹中打开可执行文件或使用桌面快捷方式,一切正常。如果我通过开始菜单打开,可执行文件不会包含图像,也不会 运行。我能做些什么来防止这个问题?是否可以在 windows 开始菜单中阻止快捷方式?
我找到了解决方案 here:
您可以使用以下函数获取执行的exe
文件的文件夹:
function currentDir = getcurrentdir()
if isdeployed % Stand-alone mode.
[status, result] = system('path');
currentDir = char(regexpi(result, 'Path=(.*?);', 'tokens', 'once'));
else % MATLAB mode.
currentDir = pwd;
end
在GUI打开函数中调用函数并使用cd
:
currentDir = getcurrentdir();
cd(currentDir);
我创建了一个 guide
测试应用程序,并使用 deploytool
进行编译和打包以供外部部署。
为了测试,我在 GUI 中添加了一个文本标签(标签名称:text2
)。
在GUI打开函数中我添加了以下代码:
% --- Executes just before GuideApp is made visible.
function GuideApp_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.text2.String = 'Starting...';
pause(1);
currentDir = getcurrentdir();
%Set the label's text to display currentDir.
handles.text2.String = currentDir;
%Change directory to the directory of the exe file.
cd(currentDir);
%Create a file in the directory (just for testing):
f = fopen('currentDir.txt', 'w');fprintf(f, '%s\r\n', currentDir);fclose(f);
% Update handles structure
guidata(hObject, handles);
以上解决方案工作正常:
标签的文字显示了exe文件的路径。
currentDir.txt
文件创建在exe文件的路径下。
我创建了一个基于 gui 的可执行文件,其中包含多个函数和文件,如果我在安装文件夹中打开可执行文件或使用桌面快捷方式,一切正常。如果我通过开始菜单打开,可执行文件不会包含图像,也不会 运行。我能做些什么来防止这个问题?是否可以在 windows 开始菜单中阻止快捷方式?
我找到了解决方案 here:
您可以使用以下函数获取执行的exe
文件的文件夹:
function currentDir = getcurrentdir()
if isdeployed % Stand-alone mode.
[status, result] = system('path');
currentDir = char(regexpi(result, 'Path=(.*?);', 'tokens', 'once'));
else % MATLAB mode.
currentDir = pwd;
end
在GUI打开函数中调用函数并使用cd
:
currentDir = getcurrentdir();
cd(currentDir);
我创建了一个 guide
测试应用程序,并使用 deploytool
进行编译和打包以供外部部署。
为了测试,我在 GUI 中添加了一个文本标签(标签名称:text2
)。
在GUI打开函数中我添加了以下代码:
% --- Executes just before GuideApp is made visible.
function GuideApp_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.text2.String = 'Starting...';
pause(1);
currentDir = getcurrentdir();
%Set the label's text to display currentDir.
handles.text2.String = currentDir;
%Change directory to the directory of the exe file.
cd(currentDir);
%Create a file in the directory (just for testing):
f = fopen('currentDir.txt', 'w');fprintf(f, '%s\r\n', currentDir);fclose(f);
% Update handles structure
guidata(hObject, handles);
以上解决方案工作正常:
标签的文字显示了exe文件的路径。
currentDir.txt
文件创建在exe文件的路径下。