/*
 * 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"

#pragma makedep po

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"
}
