How do I close a Desktop window using Matlab commands?
Mostrar comentarios más antiguos
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.
Respuesta aceptada
Más respuestas (1)
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 comentarios
Asit Kumar
el 5 de Jul. de 2018
Christopher Rose
el 18 de Nov. de 2020
Great, share the answer
Asit Kumar
el 18 de Nov. de 2020
Categorías
Más información sobre Environment and Settings en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!