/* 
 *   Control
 *   Copyright (C) 1998 by Marcel Baur <mbaur@g26.ethz.ch>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

/* alphabetical list of recognized optional command line parameters */

#define szP_COLOR          "COLOR"
#define szP_DATETIME       "DATE/TIME"
#define szP_DESKTOP        "DESKTOP"
#define szP_INTERNATIONAL  "INTERNATIONAL"
#define szP_KEYBOARD       "KEYBOARD"
#define szP_MOUSE          "MOUSE"
#define szP_PORTS          "PORTS"
#define szP_PRINTERS       "PRINTERS"


/* alphabetical list of appropriate commands to execute */

#define szEXEC_PREFIX      "rundll32.exe"
#define szEXEC_ARGS        "Shell32.dll,Control_RunDLL "

#define szC_COLOR          "desk.cpl,,2"
#define szC_DATETIME       "datetime.cpl"
#define szC_DESKTOP        "desk.cpl"
#define szC_FONTS          "main.cpl @3"
#define szC_INTERNATIONAL  "intl.cpl"
#define szC_KEYBOARD       "main.cpl @1"
#define szC_MOUSE          "main.cpl"
#define szC_PORTS          "sysdm.cpl,,1"
#define szC_PRINTERS       "main.cpl @2"
