两种解决方案可以帮助您。实际上,这有点复杂。解决方案1使用Mex方法通过C代码控制程序的窗口。解决方案2也很复杂,只需使用MATLAB并行工具箱。嗯,我建议您使用解决方案1。
解决方案1:
Create a cpp file, which controls your interactive program(i.e. window explorer here). code is below. copy and save the code as "ctrlWindow.cpp" at your MATLAB current folder.
compile ctrlWindow.cpp by compiler lcc:
mex -setup % choose compiler: type this command at MATLAB command, then choose lcc complier on windows 32 system
mex ctrlWindow.cpp % compile cpp: you would find ctrlWindow.mexw32 at current folder
run the mex file as m-file at MATLAB command:
ctrlWindow('your_program_window_name',command);
即文件夹“myfold”的窗口名称为myfold,显示在窗口的左上角,输入以下命令:
ctrlWindow('myfold',6);
这会最小化你的文件夹窗口。我建议你先最小化程序窗口,然后再将其最大化,这样参与者就会再次关注你的程序。
ctrlWindow('myfold',6);
ctrlWindow('myfold',3);
命令在此处:
HIDE 0
SHOWNORMAL 1
NORMAL 1
SHOWMINIMIZED 2
SHOWMAXIMIZED 3
MAXIMIZE 3
SHOWNOACTIVATE 4
SHOW 5
MINIMIZE 6
SHOWMINNOACTIVE 7
SHOWNA 8
RESTORE 9
SHOWDEFAULT 10
FORCEMINIMIZE 11
MAX 11
//filename:ctrlWindow.cpp
#include <windows.h>
#include "mex.h"
void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[] )
{
mxChar* winName;
HWND hwnd;
int command;
if(nrhs!=2)
mexErrMsgTxt("input must be 2");
if (mxIsChar(prhs[0]))
winName=mxGetChars(prhs[0]);
else
mexErrMsgTxt("input 1 should be char -- name of window");
if (mxIsDouble(prhs[1]))
{
command = (int) mxGetScalar(prhs[1]);
if(command<0 || command >11)
mexErrMsgTxt("No such command!!!");
}
else
mexErrMsgTxt("input 2 should be a double");
hwnd = FindWindowW(NULL, (LPCWSTR)winName);
if(NULL==hwnd)
{
MessageBoxW(NULL,(LPCWSTR) L"Can't find the window!!!",NULL,MB_OK);
return;
}
ShowWindow(hwnd, command);
}
解决方案2:
matlabpool open 2
打开两个Matlab后台程序,使用第一个控制第一个程序,使用第二个控制第二个程序。