1999-09-24 22:03:11 +00:00
|
|
|
/*
|
1999-09-27 22:15:44 +00:00
|
|
|
* WINDOW.C - activate internal command.
|
1999-09-24 22:03:11 +00:00
|
|
|
*
|
|
|
|
* clone from 4nt window command
|
|
|
|
*
|
|
|
|
* 10 Sep 1999
|
1999-09-27 22:15:44 +00:00
|
|
|
* started - Paolo Pantaleo <dfaustus@freemail.it>
|
1999-09-24 22:03:11 +00:00
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
|
1999-09-24 22:03:11 +00:00
|
|
|
#include "config.h"
|
|
|
|
|
|
|
|
#ifdef INCLUDE_CMD_WINDOW
|
|
|
|
|
|
|
|
#include "cmd.h"
|
|
|
|
#include <windows.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <tchar.h>
|
|
|
|
|
|
|
|
|
|
|
|
#define A_MIN 0x01
|
|
|
|
#define A_MAX 0x02
|
|
|
|
#define A_RESTORE 0x04
|
|
|
|
#define A_POS 0x08
|
|
|
|
#define A_SIZE 0x10
|
|
|
|
|
|
|
|
|
|
|
|
INT CommandWindow (LPTSTR cmd, LPTSTR param)
|
|
|
|
{
|
1999-09-27 22:15:44 +00:00
|
|
|
LPTSTR *p,p_tmp;
|
1999-09-24 22:03:11 +00:00
|
|
|
INT argc,i;
|
|
|
|
INT iAction=0;
|
|
|
|
LPTSTR title=0;
|
|
|
|
HWND hWnd;
|
|
|
|
WINDOWPLACEMENT wp;
|
|
|
|
RECT pos;
|
|
|
|
LPTSTR tmp;
|
|
|
|
|
|
|
|
if (_tcsncmp (param, _T("/?"), 2) == 0)
|
|
|
|
{
|
1999-09-27 22:15:44 +00:00
|
|
|
ConOutPuts(_T("change console window aspect\n"
|
|
|
|
"\n"
|
|
|
|
"WINDOW [/POS[=]left,top,width,heigth]\n"
|
|
|
|
" [MIN|MAX|RESTORE]\n"
|
1999-09-24 22:03:11 +00:00
|
|
|
"\n"
|
1999-09-27 22:15:44 +00:00
|
|
|
"/POS specify window placement and dimensions\n"
|
|
|
|
"MIN minimize the window\n"
|
|
|
|
"MAX maximize the window\n"
|
|
|
|
"RESTORE restore the window"));
|
1999-09-24 22:03:11 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
p=split(param,&argc);
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
for(i = 0; i < argc; i++)
|
1999-09-24 22:03:11 +00:00
|
|
|
{
|
1999-09-27 22:15:44 +00:00
|
|
|
p_tmp=p[i];
|
|
|
|
if (*p_tmp == _T('/'))
|
|
|
|
p_tmp++;
|
|
|
|
|
|
|
|
if (_tcsicmp(p_tmp,_T("min"))==0)
|
1999-09-24 22:03:11 +00:00
|
|
|
{
|
1999-09-27 22:15:44 +00:00
|
|
|
iAction |= A_MIN;
|
1999-09-24 22:03:11 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
if (_tcsicmp(p_tmp,_T("max"))==0)
|
1999-09-24 22:03:11 +00:00
|
|
|
{
|
1999-09-27 22:15:44 +00:00
|
|
|
iAction |= A_MAX;
|
1999-09-24 22:03:11 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
if (_tcsicmp(p_tmp,_T("restore"))==0)
|
1999-09-24 22:03:11 +00:00
|
|
|
{
|
1999-09-27 22:15:44 +00:00
|
|
|
iAction |= A_RESTORE;
|
1999-09-24 22:03:11 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
if (_tcsnicmp(p_tmp,_T("pos"),3)==0)
|
1999-09-24 22:03:11 +00:00
|
|
|
{
|
1999-09-27 22:15:44 +00:00
|
|
|
iAction |= A_POS;
|
|
|
|
tmp = p_tmp+3;
|
1999-09-24 22:03:11 +00:00
|
|
|
if (*tmp == _T('='))
|
|
|
|
tmp++;
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
pos.left= _ttoi(tmp);
|
1999-09-24 22:03:11 +00:00
|
|
|
if(!(tmp=_tcschr(tmp,_T(','))))
|
|
|
|
{
|
|
|
|
error_invalid_parameter_format(p[i]);
|
|
|
|
freep(p);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
pos.top = _ttoi (++tmp);
|
1999-09-24 22:03:11 +00:00
|
|
|
if(!(tmp=_tcschr(tmp,_T(','))))
|
|
|
|
{
|
|
|
|
error_invalid_parameter_format(p[i]);
|
|
|
|
freep(p);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
pos.right = _ttoi(++tmp)+pos.left;
|
1999-09-24 22:03:11 +00:00
|
|
|
if(!(tmp=_tcschr(tmp,_T(','))))
|
|
|
|
{
|
|
|
|
error_invalid_parameter_format(p[i]);
|
|
|
|
freep(p);
|
|
|
|
return 1;
|
|
|
|
}
|
1999-09-27 22:15:44 +00:00
|
|
|
pos.bottom = _ttoi(++tmp) + pos.top;
|
1999-09-24 22:03:11 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
if (_tcsnicmp(p_tmp,_T("size"),4)==0)
|
1999-09-24 22:03:11 +00:00
|
|
|
{
|
|
|
|
iAction |=A_SIZE;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
#if 0
|
1999-09-27 22:15:44 +00:00
|
|
|
if(*p_tmp != '"')
|
1999-09-24 22:03:11 +00:00
|
|
|
{
|
|
|
|
error_invalid_parameter_format(p[i]);
|
|
|
|
|
|
|
|
freep(p);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//none of them=window title
|
|
|
|
if (title)
|
|
|
|
{
|
|
|
|
error_invalid_parameter_format(p[i]);
|
|
|
|
freep(p);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
if (p_tmp[0] == _T('"'))
|
1999-09-24 22:03:11 +00:00
|
|
|
{
|
1999-09-27 22:15:44 +00:00
|
|
|
title = (p_tmp+1);
|
|
|
|
*_tcschr(p_tmp+1,_T('"'))=0;
|
1999-09-24 22:03:11 +00:00
|
|
|
continue;
|
|
|
|
}
|
1999-09-27 22:15:44 +00:00
|
|
|
title = p_tmp;
|
1999-09-24 22:03:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if(title)
|
|
|
|
SetConsoleTitle(title);
|
|
|
|
|
|
|
|
hWnd=GetConsoleWindow();
|
|
|
|
|
|
|
|
wp.length=sizeof(WINDOWPLACEMENT);
|
|
|
|
GetWindowPlacement(hWnd,&wp);
|
|
|
|
|
|
|
|
if(iAction & A_POS)
|
|
|
|
{
|
|
|
|
wp.rcNormalPosition = pos;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(iAction & A_MIN)
|
|
|
|
wp.showCmd=SW_MINIMIZE;
|
|
|
|
|
|
|
|
if(iAction & A_MAX)
|
|
|
|
wp.showCmd=SW_SHOWMAXIMIZED;
|
|
|
|
|
|
|
|
if(iAction & A_RESTORE)
|
|
|
|
wp.showCmd=SW_RESTORE;
|
|
|
|
|
|
|
|
wp.length=sizeof(WINDOWPLACEMENT);
|
|
|
|
SetWindowPlacement(hWnd,&wp);
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
freep(p);
|
1999-09-24 22:03:11 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
1999-09-27 22:15:44 +00:00
|
|
|
#endif /* INCLUDE_CMD_WINDOW */
|