mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:52:56 +00:00
Create a branch for header work.
svn path=/branches/header-work/; revision=45691
This commit is contained in:
parent
14fe274b1c
commit
9ea495ba33
19538 changed files with 0 additions and 1063950 deletions
228
base/shell/cmd/window.c
Normal file
228
base/shell/cmd/window.c
Normal file
|
@ -0,0 +1,228 @@
|
|||
/* $Id$
|
||||
*
|
||||
* WINDOW.C - activate & window internal commands.
|
||||
*
|
||||
* clone from 4nt activate command
|
||||
*
|
||||
* 10 Sep 1999 (Paolo Pantaleo)
|
||||
* started (window command in WINDOW.c)
|
||||
*
|
||||
* 29 Sep 1999 (Paolo Pantaleo)
|
||||
* activate and window in a single file using mainly the same code
|
||||
* (nice size optimization :)
|
||||
*
|
||||
* 30-Apr-2005 (Magnus Olsen) <magnus@greatlord.com>)
|
||||
* Remove all hardcode string to En.rc
|
||||
*/
|
||||
|
||||
|
||||
#include <precomp.h>
|
||||
|
||||
#if ( defined(INCLUDE_CMD_WINDOW) || defined(INCLUDE_CMD_ACTIVATE) )
|
||||
|
||||
|
||||
#define A_MIN 0x01
|
||||
#define A_MAX 0x02
|
||||
#define A_RESTORE 0x04
|
||||
#define A_POS 0x08
|
||||
#define A_SIZE 0x10
|
||||
#define A_CLOSE 0x20
|
||||
|
||||
|
||||
/*service funciton to perform actions on windows
|
||||
|
||||
param is a string to parse for options/actions
|
||||
hWnd is the handle of window on wich perform actions
|
||||
|
||||
*/
|
||||
|
||||
static INT ServiceActivate (LPTSTR param, HWND hWnd)
|
||||
{
|
||||
LPTSTR *p = 0, p_tmp;
|
||||
INT argc = 0, i;
|
||||
INT iAction = 0;
|
||||
LPTSTR title = 0;
|
||||
WINDOWPLACEMENT wp;
|
||||
RECT pos;
|
||||
LPTSTR tmp;
|
||||
|
||||
|
||||
if (*param)
|
||||
p = split(param, &argc, FALSE);
|
||||
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
p_tmp = p[i];
|
||||
if (*p_tmp == _T('/'))
|
||||
p_tmp++;
|
||||
|
||||
if (_tcsicmp(p_tmp, _T("min")) == 0)
|
||||
{
|
||||
iAction |= A_MIN;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_tcsicmp(p_tmp, _T("max")) == 0)
|
||||
{
|
||||
iAction |= A_MAX;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_tcsicmp(p_tmp, _T("restore")) == 0)
|
||||
{
|
||||
iAction |= A_RESTORE;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_tcsicmp(p_tmp, _T("close")) == 0)
|
||||
{
|
||||
iAction |= A_CLOSE;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_tcsnicmp(p_tmp, _T("pos"), 3) == 0)
|
||||
{
|
||||
iAction |= A_POS;
|
||||
tmp = p_tmp+3;
|
||||
if (*tmp == _T('='))
|
||||
tmp++;
|
||||
|
||||
pos.left= _ttoi(tmp);
|
||||
if(!(tmp=_tcschr(tmp, _T(','))))
|
||||
{
|
||||
error_invalid_parameter_format(p[i]);
|
||||
freep(p);
|
||||
return 1;
|
||||
}
|
||||
|
||||
pos.top = _ttoi (++tmp);
|
||||
if(!(tmp=_tcschr(tmp, _T(','))))
|
||||
{
|
||||
error_invalid_parameter_format(p[i]);
|
||||
freep(p);
|
||||
return 1;
|
||||
}
|
||||
|
||||
pos.right = _ttoi(++tmp) + pos.left;
|
||||
if (!(tmp = _tcschr(tmp, _T(','))))
|
||||
{
|
||||
error_invalid_parameter_format(p[i]);
|
||||
freep(p);
|
||||
return 1;
|
||||
}
|
||||
pos.bottom = _ttoi(++tmp) + pos.top;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_tcsnicmp(p_tmp, _T("size"), 4)==0)
|
||||
{
|
||||
iAction |=A_SIZE;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* none of them=window title */
|
||||
if (title)
|
||||
{
|
||||
error_invalid_parameter_format(p[i]);
|
||||
freep(p);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (p_tmp[0] == _T('"'))
|
||||
{
|
||||
title = (p_tmp + 1);
|
||||
*_tcschr(p_tmp + 1, _T('"')) = 0;
|
||||
continue;
|
||||
}
|
||||
title = p_tmp;
|
||||
}
|
||||
|
||||
if (title)
|
||||
SetWindowText(hWnd, title);
|
||||
|
||||
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 no actions are specified default is SW_RESTORE*/
|
||||
if ((iAction & A_RESTORE) || (!iAction))
|
||||
wp.showCmd = SW_RESTORE;
|
||||
|
||||
if (iAction & A_CLOSE)
|
||||
{
|
||||
FIXME("!!!FIXME: CLOSE Not implemented!!!\n");
|
||||
}
|
||||
|
||||
wp.length = sizeof(WINDOWPLACEMENT);
|
||||
SetWindowPlacement(hWnd, &wp);
|
||||
|
||||
if (p)
|
||||
freep(p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
INT CommandWindow (LPTSTR param)
|
||||
{
|
||||
HWND hwnd;
|
||||
|
||||
if (_tcsncmp (param, _T("/?"), 2) == 0)
|
||||
{
|
||||
ConOutResPaging(TRUE,STRING_WINDOW_HELP1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
hwnd = GetConsoleWindow();
|
||||
Sleep(0);
|
||||
return ServiceActivate(param, hwnd);
|
||||
}
|
||||
|
||||
|
||||
INT CommandActivate (LPTSTR param)
|
||||
{
|
||||
HWND hwnd;
|
||||
LPTSTR *arg;
|
||||
INT argc;
|
||||
|
||||
if (_tcsncmp (param, _T("/?"), 2) == 0)
|
||||
{
|
||||
ConOutResPaging(TRUE,STRING_WINDOW_HELP2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!(*param))
|
||||
return 1;
|
||||
|
||||
/*Split the user input into array*/
|
||||
arg = split (param, &argc, FALSE);
|
||||
if(argc < 2)
|
||||
{
|
||||
if(arg != NULL)
|
||||
freep(arg);
|
||||
}
|
||||
hwnd = FindWindow(NULL, arg[0]);
|
||||
if (hwnd == NULL)
|
||||
{
|
||||
if(arg != NULL)
|
||||
freep(arg);
|
||||
ConErrResPuts(STRING_WINDOW_ERROR1);
|
||||
return 1;
|
||||
}
|
||||
if(arg != NULL)
|
||||
freep(arg);
|
||||
|
||||
return ServiceActivate(param, hwnd);
|
||||
}
|
||||
|
||||
#endif /* ( defined(INCLUDE_CMD_WINDOW) || defined(INCLUDE_CMD_ACTIVATE) ) */
|
Loading…
Add table
Add a link
Reference in a new issue