How do I close a Desktop window using Matlab commands?
조회 수: 21 (최근 30일)
이전 댓글 표시
Like 'winopen' opens a desktop window, is there a command in Matalab that closes a particular desktop window (which does NOT belong to Matlab) ?
e.g. the code:
<MatlabCommand>('C:\Program Files\Altair')
closes the given desktop window.
댓글 수: 0
채택된 답변
Walter Roberson
2018년 7월 4일
You can use system() to invoke taskkill
댓글 수: 3
Walter Roberson
2018년 7월 4일
You could probably adapt the technique shown in https://www.experts-exchange.com/questions/23580426/close-windows-explorer-window-from-vb.html
추가 답변 (1개)
Jan
2018년 7월 4일
편집: Jan
2018년 7월 4일
If you have a C compiler, try this:
// File: KillWindow.c
// Compile: mex -O KillWindow.c
//
// ATTENTION: !!! This kills the window !!!
// !!! There is no request to save changes !!!
#include <windows.h>
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
HWND hWnd;
size_t Len;
char *Name;
if (nrhs < 1 || !mxIsChar(prhs[0])) {
mexErrMsgIdAndTxt("JSimon:KillWindow:NInput",
"KillWindow needs a char vector as input.");
}
// Get name as C string:
Len = mxGetNumberOfElements(prhs[0]);
Name = (char *) mxCalloc(Len + 1, sizeof(char));
mxGetString(prhs[0], Name, Len + 1);
// Find window handle of the OS:
hWnd = FindWindow(NULL, Name);
mxFree(Name);
// Close window inf found:
if (hWnd != 0) {
// uint WM_SYSCOMMAND = 0x0112; int SC_CLOSE = 0xF060;
SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
}
}
After compiling, call it as:
doc % Open Matlab's Help window, window name is "Help"
pause(2)
KillWindow('Help'); % Help window is closed
Again: Killing a window, which contains modified data, will not ask you for saving!
Isn't it strange that you can access windows of other applications through the WindowsAPI?
댓글 수: 3
참고 항목
카테고리
Help Center 및 File Exchange에서 Entering Commands에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!