Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226/* * 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 hardcoded strings in 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 function to perform actions on windows * * param is a string to parse for options/actions * hWnd is the handle of window on which to 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_ERROR); return 1; } if (arg != NULL) freep(arg);
return ServiceActivate(param, hwnd);}
#endif /* defined(INCLUDE_CMD_WINDOW) || defined(INCLUDE_CMD_ACTIVATE) */