/*
 * Task termination utility
 *
 * Copyright 2010 Andrew Nguyen
 *
 * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "taskkill.h"

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
    STRING_USAGE, "Usage: taskkill [/?] [/f] [/im ProcessName | /pid ProcessID]\n"
    STRING_INVALID_OPTION, "Error: Unknown or invalid command line option specified.\n"
    STRING_INVALID_PARAM, "Error: Invalid command line parameter specified.\n"
    STRING_MISSING_OPTION, "Error: One of options /im or /pid must be specified.\n"
    STRING_MISSING_PARAM, "Error: Option %1 expects a command line parameter.\n"
    STRING_MUTUAL_EXCLUSIVE, "Error: Options /im and /pid are mutually exclusive.\n"
    STRING_CLOSE_PID_SEARCH, "Close message sent to top-level windows of process with PID %1!u!.\n"
    STRING_CLOSE_PROC_SRCH, "Close message sent to top-level windows of process \"%1\" with PID %2!u!.\n"
    STRING_TERM_PID_SEARCH, "Process with PID %1!u! was forcibly terminated.\n"
    STRING_TERM_PROC_SEARCH, "Process \"%1\" with PID %2!u! was forcibly terminated.\n"
    STRING_SEARCH_FAILED, "Error: Could not find process \"%1\".\n"
    STRING_ENUM_FAILED, "Error: Unable to enumerate the process list.\n"
    STRING_TERMINATE_FAILED, "Error: Unable to terminate process \"%1\".\n"
    STRING_SELF_TERMINATION, "Error: Process self-termination is not permitted.\n"
}
