mirror of
https://github.com/reactos/reactos.git
synced 2025-06-27 18:09:43 +00:00
[CMAKE]
- Sync with trunk head (r50270) - This also reverts r49298. svn path=/branches/cmake-bringup/; revision=50271
This commit is contained in:
commit
6c0c23cb53
482 changed files with 40346 additions and 24711 deletions
|
@ -185,7 +185,7 @@ macro(rpcproxy TARGET)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
|
||||||
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_DLLDATA_ARG}${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c ${IDLS}
|
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_DLLDATA_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c ${IDLS}
|
||||||
DEPENDS ${IDLS})
|
DEPENDS ${IDLS})
|
||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
|
${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
|
||||||
|
@ -198,7 +198,7 @@ macro(idl_files)
|
||||||
get_filename_component(FILE ${_in_FILE} NAME_WE)
|
get_filename_component(FILE ${_in_FILE} NAME_WE)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c
|
||||||
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_HEADER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${IDL_SERVER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
|
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} -h -H ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${IDL_SERVER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
|
||||||
DEPENDS ${_in_file})
|
DEPENDS ${_in_file})
|
||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c
|
${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c
|
||||||
|
@ -208,7 +208,7 @@ macro(idl_files)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
|
||||||
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_HEADER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${IDL_CLIENT_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
|
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} -h -H ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${IDL_CLIENT_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
|
||||||
DEPENDS ${_in_file})
|
DEPENDS ${_in_file})
|
||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
|
${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
|
||||||
|
@ -237,7 +237,7 @@ macro(add_idl_interface IDL_FILE)
|
||||||
get_filename_component(FILE ${IDL_FILE} NAME_WE)
|
get_filename_component(FILE ${IDL_FILE} NAME_WE)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c
|
||||||
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} -u -U ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c ${CMAKE_CURRENT_SOURCE_DIR}/${IDL_FILE}
|
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_INTERFACE_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c ${CMAKE_CURRENT_SOURCE_DIR}/${IDL_FILE}
|
||||||
DEPENDS ${IDL_FILE})
|
DEPENDS ${IDL_FILE})
|
||||||
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c PROPERTIES GENERATED TRUE)
|
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c PROPERTIES GENERATED TRUE)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
|
@ -6,6 +6,7 @@ add_subdirectory(cmdutils)
|
||||||
add_subdirectory(control)
|
add_subdirectory(control)
|
||||||
add_subdirectory(dxdiag)
|
add_subdirectory(dxdiag)
|
||||||
add_subdirectory(extrac32)
|
add_subdirectory(extrac32)
|
||||||
|
add_subdirectory(findstr)
|
||||||
add_subdirectory(fontview)
|
add_subdirectory(fontview)
|
||||||
add_subdirectory(games)
|
add_subdirectory(games)
|
||||||
add_subdirectory(hh)
|
add_subdirectory(hh)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
//<2F>והמגתנרום
|
||||||
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
// Dialog
|
// Dialog
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* FILE: base/applications/calc/lang/cs-CZ.rc
|
/* FILE: base/applications/calc/lang/cs-CZ.rc
|
||||||
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
||||||
* UPDATED: 2009-01-25
|
* UPDATED: 2010-05-30
|
||||||
*/
|
*/
|
||||||
|
|
||||||
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||||
|
@ -644,7 +644,7 @@ STRINGTABLE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_TIME_DAYS "Dny"
|
IDS_TIME_DAYS "Dny"
|
||||||
IDS_TIME_HOURS "Hodiny"
|
IDS_TIME_HOURS "Hodiny"
|
||||||
IDS_TIME_NANOSECONDS "Nanoseconds"
|
IDS_TIME_NANOSECONDS "Nanosekundy"
|
||||||
IDS_TIME_MICROSECONDS "Mikrosekundy"
|
IDS_TIME_MICROSECONDS "Mikrosekundy"
|
||||||
IDS_TIME_MILLISECONDS "Milisekundy"
|
IDS_TIME_MILLISECONDS "Milisekundy"
|
||||||
IDS_TIME_MINUTES "Minuty"
|
IDS_TIME_MINUTES "Minuty"
|
||||||
|
|
|
@ -380,6 +380,7 @@ int exec_infix2postfix(calc_number_t *number, unsigned int func)
|
||||||
tmp.node.number = *number;
|
tmp.node.number = *number;
|
||||||
tmp.node.base = calc.base;
|
tmp.node.base = calc.base;
|
||||||
tmp.node.operation = func;
|
tmp.node.operation = func;
|
||||||
|
tmp.next = NULL;
|
||||||
|
|
||||||
push(&tmp);
|
push(&tmp);
|
||||||
|
|
||||||
|
|
40
base/applications/cmdutils/reg/Bg.rc
Normal file
40
base/applications/cmdutils/reg/Bg.rc
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* REG.EXE - Wine-compatible reg program.
|
||||||
|
* Bulgarian language support
|
||||||
|
*
|
||||||
|
* Copyright 2008 Andrew Riedi
|
||||||
|
*
|
||||||
|
* 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 "reg.h"
|
||||||
|
|
||||||
|
/* UTF-8 */
|
||||||
|
#pragma code_page(65001)
|
||||||
|
|
||||||
|
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
{
|
||||||
|
STRING_USAGE, "Синтаксисът на командата е:\n\nREG [ ADD | DELETE | QUERY ]\nREG команда /?\n"
|
||||||
|
STRING_ADD_USAGE, "REG ADD ключ_име [/v стойност_име | /ve] [/t вид] [/s разделител] [/d данни] [/f]\n"
|
||||||
|
STRING_DELETE_USAGE, "REG DELETE ключ_име [/v стойност_име | /ve | /va] [/f]\n"
|
||||||
|
STRING_QUERY_USAGE, "REG QUERY ключ_име [/v стойност_име | /ve] [/s]\n"
|
||||||
|
STRING_SUCCESS, "Десйствието е приключено успешно\n"
|
||||||
|
STRING_INVALID_KEY, "Грешка: Недопустимо име за ключ\n"
|
||||||
|
STRING_INVALID_CMDLINE, "Грешка: Неправилни параметри на командия ред\n"
|
||||||
|
STRING_NO_REMOTE, "Грешка: Неуспешно добавяне на ключове в отдалечената машина\n"
|
||||||
|
STRING_CANNOT_FIND, "Грешка: Уредбата не откри указания регистърен ключ или стойност\n"
|
||||||
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
#include "Pl.rc"
|
#include "Pl.rc"
|
||||||
|
|
||||||
/* UTF-8 */
|
/* UTF-8 */
|
||||||
|
#include "Bg.rc"
|
||||||
#include "Da.rc"
|
#include "Da.rc"
|
||||||
#include "De.rc"
|
#include "De.rc"
|
||||||
#include "Es.rc"
|
#include "Es.rc"
|
||||||
|
|
|
@ -34,7 +34,7 @@ STRINGTABLE
|
||||||
STRING_SIMCOPY, "%d file saranno copiati\n"
|
STRING_SIMCOPY, "%d file saranno copiati\n"
|
||||||
STRING_COPY, "%d file copiato/i\n"
|
STRING_COPY, "%d file copiato/i\n"
|
||||||
STRING_QISDIR, "'%s' è il nome di un file o una cartella\n\
|
STRING_QISDIR, "'%s' è il nome di un file o una cartella\n\
|
||||||
nell'obiettivo?\n\
|
nella destinazione?\n\
|
||||||
(F - File, C - Cartella)\n"
|
(F - File, C - Cartella)\n"
|
||||||
STRING_SRCPROMPT,"%s? (Sì|No)\n"
|
STRING_SRCPROMPT,"%s? (Sì|No)\n"
|
||||||
STRING_OVERWRITE,"Sovrascrivere %s? (Sì|No|Tutti)\n"
|
STRING_OVERWRITE,"Sovrascrivere %s? (Sì|No|Tutti)\n"
|
||||||
|
|
|
@ -56,7 +56,7 @@ XCOPY 원본 [대상] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
|
||||||
\n\
|
\n\
|
||||||
Where:\n\
|
Where:\n\
|
||||||
\n\
|
\n\
|
||||||
[/I] 만약 대상이 존재하지 않는 경우 디렉토리로 가정하고 두개나 더 많은 파일을 \n\
|
[/I] 만약 대상이 존재하지 않는 경우 디렉토리로 가정하고 두개나 더 많은 파일을\n\
|
||||||
\t복사\n\
|
\t복사\n\
|
||||||
[/S] 디렉토리하고 하위 디렉토리 복사\n\
|
[/S] 디렉토리하고 하위 디렉토리 복사\n\
|
||||||
[/E] 빈 디렉토리를 포함해서 디렉토리와 하위 디렉토리 복사\n\
|
[/E] 빈 디렉토리를 포함해서 디렉토리와 하위 디렉토리 복사\n\
|
||||||
|
|
141
base/applications/cmdutils/xcopy/Sr.rc
Normal file
141
base/applications/cmdutils/xcopy/Sr.rc
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
/*
|
||||||
|
* XCOPY - Wine-compatible xcopy program
|
||||||
|
* Serbian language support
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 J. Edmeades
|
||||||
|
* Copyright 2010 Đorđe Vasiljević
|
||||||
|
*
|
||||||
|
* 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 "xcopy.h"
|
||||||
|
|
||||||
|
#pragma code_page(65001)
|
||||||
|
|
||||||
|
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
{
|
||||||
|
STRING_INVPARMS, "Неисправан број параметара. Користите xcopy /? за помоћ\n"
|
||||||
|
STRING_INVPARM, "Неисправан параметар „%s“. Користите xcopy /? за помоћ\n"
|
||||||
|
STRING_PAUSE, "Притисните <enter> да започнете умножавање\n"
|
||||||
|
STRING_SIMCOPY, "%d датотека/е ће бити уможено\n"
|
||||||
|
STRING_COPY, "%d датотека/е је умножено\n"
|
||||||
|
STRING_QISDIR, "Да ли је „%s“ назив датотеке или фасцикла\n\
|
||||||
|
на одредишту?\n\
|
||||||
|
(Д - датотека, Ф - фасцикла)\n"
|
||||||
|
STRING_SRCPROMPT,"%s? (Да|Не)\n"
|
||||||
|
STRING_OVERWRITE,"Заменити %s? (Да|Не|Све)\n"
|
||||||
|
STRING_COPYFAIL, "Умножавање „%s“ у „%s“ није успело са r/c %d\n"
|
||||||
|
STRING_OPENFAIL, "Отварање „%s“ датотеке није успело\n"
|
||||||
|
STRING_READFAIL, "Читање „%s“ датотеке није успело\n"
|
||||||
|
STRING_YES_CHAR, "Д"
|
||||||
|
STRING_NO_CHAR, "Н"
|
||||||
|
STRING_ALL_CHAR, "С"
|
||||||
|
STRING_FILE_CHAR,"Д"
|
||||||
|
STRING_DIR_CHAR, "Ф"
|
||||||
|
|
||||||
|
STRING_HELP,
|
||||||
|
"XCOPY — умножава изворне датотеке или гране фасцикли у одредиште\n\
|
||||||
|
\n\
|
||||||
|
Синтакса:\n\
|
||||||
|
XCOPY извор [dest] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
|
||||||
|
\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
|
||||||
|
\n\
|
||||||
|
Где:\n\
|
||||||
|
\n\
|
||||||
|
[/I] Претпостави фасциклу када одредиште не постоји и када се умножавају две или\n\
|
||||||
|
\tвише датотека\n\
|
||||||
|
[/S] Умножи фасцикле и потфасцикле\n\
|
||||||
|
[/E] Умножи фасцикле и потфасцикле заједно с празним\n\
|
||||||
|
[/Q] Не приказуј називе током умножавања.\n\
|
||||||
|
[/F] Прикажи цео извор и одредиште током умножавања\n\
|
||||||
|
[/L] Опонашај радњу приказујући називе који ће бити умножени\n\
|
||||||
|
[/W] Питај пре почињања умножавања\n\
|
||||||
|
[/T] Прави празну структуру фасцикле, али не умножава датотеке\n\
|
||||||
|
[/Y] Потисни упит при замењивању датотека\n\
|
||||||
|
[/-Y] Омогући упит при замењивању датотека\n\
|
||||||
|
[/P] Питај за сваку изворну датотеку пре умножавања\n\
|
||||||
|
[/N] Умножи користећи кратке називе\n\
|
||||||
|
[/U] Умножи само оне датотеке које постоје у одредишту\n\
|
||||||
|
[/R] Замени све датотеке које се само читају\n\
|
||||||
|
[/H] Укључи сакривене и системске датотеке у умножавање\n\
|
||||||
|
[/C] Настави иако дође до грешке у умножавању\n\
|
||||||
|
[/A] Умножи само архивиране датотеке\n\
|
||||||
|
[/M] Умножи само архивиране датотеке и уклони\n\
|
||||||
|
\tособине архиве\n\
|
||||||
|
[/D | /D:m-d-y] Умножи нове или измењене датотеке након одређеног датума.\n\
|
||||||
|
\t\tАко датум није унесен, умножи само ако је одредиште старије\n\
|
||||||
|
\t\tод извора\n\n"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
{
|
||||||
|
STRING_INVPARMS, "Neispravan broj parametara. Koristite xcopy /? za pomoć\n"
|
||||||
|
STRING_INVPARM, "Neispravan parametar „%s“. Koristite xcopy /? za pomoć\n"
|
||||||
|
STRING_PAUSE, "Pritisnite <enter> da započnete umnožavanje\n"
|
||||||
|
STRING_SIMCOPY, "%d datoteka/e će biti umoženo\n"
|
||||||
|
STRING_COPY, "%d datoteka/e je umnoženo\n"
|
||||||
|
STRING_QISDIR, "Da li je „%s“ naziv datoteke ili fascikla\n\
|
||||||
|
na odredištu?\n\
|
||||||
|
(D - datoteka, F - fascikla)\n"
|
||||||
|
STRING_SRCPROMPT,"%s? (Da|Ne)\n"
|
||||||
|
STRING_OVERWRITE,"Zameniti %s? (Da|Ne|Sve)\n"
|
||||||
|
STRING_COPYFAIL, "Umnožavanje „%s“ u „%s“ nije uspelo sa r/c %d\n"
|
||||||
|
STRING_OPENFAIL, "Otvaranje „%s“ datoteke nije uspelo\n"
|
||||||
|
STRING_READFAIL, "Čitanje „%s“ datoteke nije uspelo\n"
|
||||||
|
STRING_YES_CHAR, "D"
|
||||||
|
STRING_NO_CHAR, "N"
|
||||||
|
STRING_ALL_CHAR, "S"
|
||||||
|
STRING_FILE_CHAR,"D"
|
||||||
|
STRING_DIR_CHAR, "F"
|
||||||
|
|
||||||
|
STRING_HELP,
|
||||||
|
"XCOPY — umnožava izvorne datoteke ili grane fascikli u odredište\n\
|
||||||
|
\n\
|
||||||
|
Sintaksa:\n\
|
||||||
|
XCOPY izvor [dest] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
|
||||||
|
\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
|
||||||
|
\n\
|
||||||
|
Gde:\n\
|
||||||
|
\n\
|
||||||
|
[/I] Pretpostavi fasciklu kada odredište ne postoji i kada se umnožavaju dve ili\n\
|
||||||
|
\tviše datoteka\n\
|
||||||
|
[/S] Umnoži fascikle i potfascikle\n\
|
||||||
|
[/E] Umnoži fascikle i potfascikle zajedno s praznim\n\
|
||||||
|
[/Q] Ne prikazuj nazive tokom umnožavanja.\n\
|
||||||
|
[/F] Prikaži ceo izvor i odredište tokom umnožavanja\n\
|
||||||
|
[/L] Oponašaj radnju prikazujući nazive koji će biti umnoženi\n\
|
||||||
|
[/W] Pitaj pre počinjanja umnožavanja\n\
|
||||||
|
[/T] Pravi praznu strukturu fascikle, ali ne umnožava datoteke\n\
|
||||||
|
[/Y] Potisni upit pri zamenjivanju datoteka\n\
|
||||||
|
[/-Y] Omogući upit pri zamenjivanju datoteka\n\
|
||||||
|
[/P] Pitaj za svaku izvornu datoteku pre umnožavanja\n\
|
||||||
|
[/N] Umnoži koristeći kratke nazive\n\
|
||||||
|
[/U] Umnoži samo one datoteke koje postoje u odredištu\n\
|
||||||
|
[/R] Zameni sve datoteke koje se samo čitaju\n\
|
||||||
|
[/H] Uključi sakrivene i sistemske datoteke u umnožavanje\n\
|
||||||
|
[/C] Nastavi iako dođe do greške u umnožavanju\n\
|
||||||
|
[/A] Umnoži samo arhivirane datoteke\n\
|
||||||
|
[/M] Umnoži samo arhivirane datoteke i ukloni\n\
|
||||||
|
\tosobine arhive\n\
|
||||||
|
[/D | /D:m-d-y] Umnoži nove ili izmenjene datoteke nakon određenog datuma.\n\
|
||||||
|
\t\tAko datum nije unesen, umnoži samo ako je odredište starije\n\
|
||||||
|
\t\tod izvora\n\n"
|
||||||
|
|
||||||
|
}
|
|
@ -43,5 +43,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
#include "Ro.rc"
|
#include "Ro.rc"
|
||||||
#include "Ru.rc"
|
#include "Ru.rc"
|
||||||
#include "Si.rc"
|
#include "Si.rc"
|
||||||
|
#include "Sr.rc"
|
||||||
#include "Sv.rc"
|
#include "Sv.rc"
|
||||||
#include "Uk.rc"
|
#include "Uk.rc"
|
||||||
|
|
|
@ -49,6 +49,8 @@
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(xcopy);
|
WINE_DEFAULT_DEBUG_CHANNEL(xcopy);
|
||||||
|
|
||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
|
static int XCOPY_ParseCommandLine(WCHAR *suppliedsource,
|
||||||
|
WCHAR *supplieddestination, DWORD *flags);
|
||||||
static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem,
|
static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem,
|
||||||
WCHAR *spec, DWORD flags);
|
WCHAR *spec, DWORD flags);
|
||||||
static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem,
|
static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem,
|
||||||
|
@ -108,17 +110,6 @@ int wmain (int argc, WCHAR *argvW[])
|
||||||
const WCHAR PROMPTSTR1[] = {'/', 'Y', 0};
|
const WCHAR PROMPTSTR1[] = {'/', 'Y', 0};
|
||||||
const WCHAR PROMPTSTR2[] = {'/', 'y', 0};
|
const WCHAR PROMPTSTR2[] = {'/', 'y', 0};
|
||||||
const WCHAR COPYCMD[] = {'C', 'O', 'P', 'Y', 'C', 'M', 'D', 0};
|
const WCHAR COPYCMD[] = {'C', 'O', 'P', 'Y', 'C', 'M', 'D', 0};
|
||||||
const WCHAR EXCLUDE[] = {'E', 'X', 'C', 'L', 'U', 'D', 'E', ':', 0};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Parse the command line
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Confirm at least one parameter */
|
|
||||||
if (argc < 2) {
|
|
||||||
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS));
|
|
||||||
return RC_INITERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Preinitialize flags based on COPYCMD */
|
/* Preinitialize flags based on COPYCMD */
|
||||||
if (GetEnvironmentVariableW(COPYCMD, copyCmd, MAXSTRING)) {
|
if (GetEnvironmentVariableW(COPYCMD, copyCmd, MAXSTRING)) {
|
||||||
|
@ -135,125 +126,16 @@ int wmain (int argc, WCHAR *argvW[])
|
||||||
lose */
|
lose */
|
||||||
flags |= OPT_COPYHIDSYS;
|
flags |= OPT_COPYHIDSYS;
|
||||||
|
|
||||||
/* Skip first arg, which is the program name */
|
/*
|
||||||
argvW++;
|
* Parse the command line
|
||||||
|
*/
|
||||||
while (argc > 1)
|
if ((rc = XCOPY_ParseCommandLine(suppliedsource, supplieddestination,
|
||||||
{
|
&flags)) != RC_OK) {
|
||||||
argc--;
|
if (rc == RC_HELP)
|
||||||
WINE_TRACE("Processing Arg: '%s'\n", wine_dbgstr_w(*argvW));
|
|
||||||
|
|
||||||
/* First non-switch parameter is source, second is destination */
|
|
||||||
if (*argvW[0] != '/') {
|
|
||||||
if (suppliedsource[0] == 0x00) {
|
|
||||||
lstrcpyW(suppliedsource, *argvW);
|
|
||||||
} else if (supplieddestination[0] == 0x00) {
|
|
||||||
lstrcpyW(supplieddestination, *argvW);
|
|
||||||
} else {
|
|
||||||
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS));
|
|
||||||
return RC_INITERROR;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* Process all the switch options
|
|
||||||
Note: Windows docs say /P prompts when dest is created
|
|
||||||
but tests show it is done for each src file
|
|
||||||
regardless of the destination */
|
|
||||||
switch (toupper(argvW[0][1])) {
|
|
||||||
case 'I': flags |= OPT_ASSUMEDIR; break;
|
|
||||||
case 'S': flags |= OPT_RECURSIVE; break;
|
|
||||||
case 'Q': flags |= OPT_QUIET; break;
|
|
||||||
case 'F': flags |= OPT_FULL; break;
|
|
||||||
case 'L': flags |= OPT_SIMULATE; break;
|
|
||||||
case 'W': flags |= OPT_PAUSE; break;
|
|
||||||
case 'T': flags |= OPT_NOCOPY | OPT_RECURSIVE; break;
|
|
||||||
case 'Y': flags |= OPT_NOPROMPT; break;
|
|
||||||
case 'N': flags |= OPT_SHORTNAME; break;
|
|
||||||
case 'U': flags |= OPT_MUSTEXIST; break;
|
|
||||||
case 'R': flags |= OPT_REPLACEREAD; break;
|
|
||||||
case 'H': flags |= OPT_COPYHIDSYS; break;
|
|
||||||
case 'C': flags |= OPT_IGNOREERRORS; break;
|
|
||||||
case 'P': flags |= OPT_SRCPROMPT; break;
|
|
||||||
case 'A': flags |= OPT_ARCHIVEONLY; break;
|
|
||||||
case 'M': flags |= OPT_ARCHIVEONLY |
|
|
||||||
OPT_REMOVEARCH; break;
|
|
||||||
|
|
||||||
/* E can be /E or /EXCLUDE */
|
|
||||||
case 'E': if (CompareStringW(LOCALE_USER_DEFAULT,
|
|
||||||
NORM_IGNORECASE | SORT_STRINGSORT,
|
|
||||||
&argvW[0][1], 8,
|
|
||||||
EXCLUDE, -1) == 2) {
|
|
||||||
if (XCOPY_ProcessExcludeList(&argvW[0][9])) {
|
|
||||||
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
|
|
||||||
return RC_INITERROR;
|
|
||||||
} else flags |= OPT_EXCLUDELIST;
|
|
||||||
} else flags |= OPT_EMPTYDIR | OPT_RECURSIVE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* D can be /D or /D: */
|
|
||||||
case 'D': if ((argvW[0][2])==':' && isdigit(argvW[0][3])) {
|
|
||||||
SYSTEMTIME st;
|
|
||||||
WCHAR *pos = &argvW[0][3];
|
|
||||||
BOOL isError = FALSE;
|
|
||||||
memset(&st, 0x00, sizeof(st));
|
|
||||||
|
|
||||||
/* Parse the arg : Month */
|
|
||||||
st.wMonth = _wtol(pos);
|
|
||||||
while (*pos && isdigit(*pos)) pos++;
|
|
||||||
if (*pos++ != '-') isError = TRUE;
|
|
||||||
|
|
||||||
/* Parse the arg : Day */
|
|
||||||
if (!isError) {
|
|
||||||
st.wDay = _wtol(pos);
|
|
||||||
while (*pos && isdigit(*pos)) pos++;
|
|
||||||
if (*pos++ != '-') isError = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Parse the arg : Day */
|
|
||||||
if (!isError) {
|
|
||||||
st.wYear = _wtol(pos);
|
|
||||||
if (st.wYear < 100) st.wYear+=2000;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isError && SystemTimeToFileTime(&st, &dateRange)) {
|
|
||||||
SYSTEMTIME st;
|
|
||||||
WCHAR datestring[32], timestring[32];
|
|
||||||
|
|
||||||
flags |= OPT_DATERANGE;
|
|
||||||
|
|
||||||
/* Debug info: */
|
|
||||||
FileTimeToSystemTime (&dateRange, &st);
|
|
||||||
GetDateFormatW(0, DATE_SHORTDATE, &st, NULL, datestring,
|
|
||||||
sizeof(datestring)/sizeof(WCHAR));
|
|
||||||
GetTimeFormatW(0, TIME_NOSECONDS, &st,
|
|
||||||
NULL, timestring, sizeof(timestring)/sizeof(WCHAR));
|
|
||||||
|
|
||||||
WINE_TRACE("Date being used is: %s %s\n",
|
|
||||||
wine_dbgstr_w(datestring), wine_dbgstr_w(timestring));
|
|
||||||
} else {
|
|
||||||
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
|
|
||||||
return RC_INITERROR;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
flags |= OPT_DATENEWER;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '-': if (toupper(argvW[0][2])=='Y')
|
|
||||||
flags &= ~OPT_NOPROMPT; break;
|
|
||||||
case '?': XCOPY_wprintf(XCOPY_LoadMessage(STRING_HELP));
|
|
||||||
return RC_OK;
|
return RC_OK;
|
||||||
default:
|
else
|
||||||
WINE_TRACE("Unhandled parameter '%s'\n", wine_dbgstr_w(*argvW));
|
return rc;
|
||||||
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARM), *argvW);
|
|
||||||
return RC_INITERROR;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
argvW++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Default the destination if not supplied */
|
|
||||||
if (supplieddestination[0] == 0x00)
|
|
||||||
lstrcpyW(supplieddestination, wchr_dot);
|
|
||||||
|
|
||||||
/* Trace out the supplied information */
|
/* Trace out the supplied information */
|
||||||
WINE_TRACE("Supplied parameters:\n");
|
WINE_TRACE("Supplied parameters:\n");
|
||||||
|
@ -310,6 +192,211 @@ int wmain (int argc, WCHAR *argvW[])
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* =========================================================================
|
||||||
|
XCOPY_ParseCommandLine - Parses the command line
|
||||||
|
========================================================================= */
|
||||||
|
static BOOL is_whitespace(WCHAR c)
|
||||||
|
{
|
||||||
|
return c == ' ' || c == '\t';
|
||||||
|
}
|
||||||
|
|
||||||
|
static WCHAR *skip_whitespace(WCHAR *p)
|
||||||
|
{
|
||||||
|
for (; *p && is_whitespace(*p); p++);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Windows XCOPY uses a simplified command line parsing algorithm
|
||||||
|
that lacks the escaped-quote logic of build_argv(), because
|
||||||
|
literal double quotes are illegal in any of its arguments.
|
||||||
|
Example: 'XCOPY "c:\DIR A" "c:DIR B\"' is OK. */
|
||||||
|
static int find_end_of_word(const WCHAR *word, WCHAR **end)
|
||||||
|
{
|
||||||
|
BOOL in_quotes = 0;
|
||||||
|
const WCHAR *ptr = word;
|
||||||
|
for (;;) {
|
||||||
|
for (; *ptr != '\0' && *ptr != '"' &&
|
||||||
|
(in_quotes || !is_whitespace(*ptr)); ptr++);
|
||||||
|
if (*ptr == '"') {
|
||||||
|
in_quotes = !in_quotes;
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
/* Odd number of double quotes is illegal for XCOPY */
|
||||||
|
if (in_quotes && *ptr == '\0')
|
||||||
|
return RC_INITERROR;
|
||||||
|
if (*ptr == '\0' || (!in_quotes && is_whitespace(*ptr)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*end = (WCHAR*)ptr;
|
||||||
|
return RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove all double quotes from a word */
|
||||||
|
static void strip_quotes(WCHAR *word, WCHAR **end)
|
||||||
|
{
|
||||||
|
WCHAR *rp, *wp;
|
||||||
|
for (rp = word, wp = word; *rp != '\0'; rp++) {
|
||||||
|
if (*rp == '"')
|
||||||
|
continue;
|
||||||
|
if (wp < rp)
|
||||||
|
*wp = *rp;
|
||||||
|
wp++;
|
||||||
|
}
|
||||||
|
*wp = '\0';
|
||||||
|
*end = wp;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int XCOPY_ParseCommandLine(WCHAR *suppliedsource,
|
||||||
|
WCHAR *supplieddestination, DWORD *pflags)
|
||||||
|
{
|
||||||
|
const WCHAR EXCLUDE[] = {'E', 'X', 'C', 'L', 'U', 'D', 'E', ':', 0};
|
||||||
|
DWORD flags = *pflags;
|
||||||
|
WCHAR *cmdline, *word, *end, *next;
|
||||||
|
int rc = RC_INITERROR;
|
||||||
|
|
||||||
|
cmdline = _wcsdup(GetCommandLineW());
|
||||||
|
if (cmdline == NULL)
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
/* Skip first arg, which is the program name */
|
||||||
|
if ((rc = find_end_of_word(cmdline, &word)) != RC_OK)
|
||||||
|
goto out;
|
||||||
|
word = skip_whitespace(word);
|
||||||
|
|
||||||
|
while (*word)
|
||||||
|
{
|
||||||
|
WCHAR first;
|
||||||
|
if ((rc = find_end_of_word(word, &end)) != RC_OK)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
next = skip_whitespace(end);
|
||||||
|
first = word[0];
|
||||||
|
*end = '\0';
|
||||||
|
strip_quotes(word, &end);
|
||||||
|
WINE_TRACE("Processing Arg: '%s'\n", wine_dbgstr_w(word));
|
||||||
|
|
||||||
|
/* First non-switch parameter is source, second is destination */
|
||||||
|
if (first != '/') {
|
||||||
|
if (suppliedsource[0] == 0x00) {
|
||||||
|
lstrcpyW(suppliedsource, word);
|
||||||
|
} else if (supplieddestination[0] == 0x00) {
|
||||||
|
lstrcpyW(supplieddestination, word);
|
||||||
|
} else {
|
||||||
|
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS));
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* Process all the switch options
|
||||||
|
Note: Windows docs say /P prompts when dest is created
|
||||||
|
but tests show it is done for each src file
|
||||||
|
regardless of the destination */
|
||||||
|
switch (toupper(word[1])) {
|
||||||
|
case 'I': flags |= OPT_ASSUMEDIR; break;
|
||||||
|
case 'S': flags |= OPT_RECURSIVE; break;
|
||||||
|
case 'Q': flags |= OPT_QUIET; break;
|
||||||
|
case 'F': flags |= OPT_FULL; break;
|
||||||
|
case 'L': flags |= OPT_SIMULATE; break;
|
||||||
|
case 'W': flags |= OPT_PAUSE; break;
|
||||||
|
case 'T': flags |= OPT_NOCOPY | OPT_RECURSIVE; break;
|
||||||
|
case 'Y': flags |= OPT_NOPROMPT; break;
|
||||||
|
case 'N': flags |= OPT_SHORTNAME; break;
|
||||||
|
case 'U': flags |= OPT_MUSTEXIST; break;
|
||||||
|
case 'R': flags |= OPT_REPLACEREAD; break;
|
||||||
|
case 'H': flags |= OPT_COPYHIDSYS; break;
|
||||||
|
case 'C': flags |= OPT_IGNOREERRORS; break;
|
||||||
|
case 'P': flags |= OPT_SRCPROMPT; break;
|
||||||
|
case 'A': flags |= OPT_ARCHIVEONLY; break;
|
||||||
|
case 'M': flags |= OPT_ARCHIVEONLY |
|
||||||
|
OPT_REMOVEARCH; break;
|
||||||
|
|
||||||
|
/* E can be /E or /EXCLUDE */
|
||||||
|
case 'E': if (CompareStringW(LOCALE_USER_DEFAULT,
|
||||||
|
NORM_IGNORECASE | SORT_STRINGSORT,
|
||||||
|
&word[1], 8,
|
||||||
|
EXCLUDE, -1) == 2) {
|
||||||
|
if (XCOPY_ProcessExcludeList(&word[9])) {
|
||||||
|
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
|
||||||
|
goto out;
|
||||||
|
} else flags |= OPT_EXCLUDELIST;
|
||||||
|
} else flags |= OPT_EMPTYDIR | OPT_RECURSIVE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* D can be /D or /D: */
|
||||||
|
case 'D': if (word[2]==':' && isdigit(word[3])) {
|
||||||
|
SYSTEMTIME st;
|
||||||
|
WCHAR *pos = &word[3];
|
||||||
|
BOOL isError = FALSE;
|
||||||
|
memset(&st, 0x00, sizeof(st));
|
||||||
|
|
||||||
|
/* Parse the arg : Month */
|
||||||
|
st.wMonth = _wtol(pos);
|
||||||
|
while (*pos && isdigit(*pos)) pos++;
|
||||||
|
if (*pos++ != '-') isError = TRUE;
|
||||||
|
|
||||||
|
/* Parse the arg : Day */
|
||||||
|
if (!isError) {
|
||||||
|
st.wDay = _wtol(pos);
|
||||||
|
while (*pos && isdigit(*pos)) pos++;
|
||||||
|
if (*pos++ != '-') isError = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Parse the arg : Day */
|
||||||
|
if (!isError) {
|
||||||
|
st.wYear = _wtol(pos);
|
||||||
|
while (*pos && isdigit(*pos)) pos++;
|
||||||
|
if (st.wYear < 100) st.wYear+=2000;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isError && SystemTimeToFileTime(&st, &dateRange)) {
|
||||||
|
SYSTEMTIME st;
|
||||||
|
WCHAR datestring[32], timestring[32];
|
||||||
|
|
||||||
|
flags |= OPT_DATERANGE;
|
||||||
|
|
||||||
|
/* Debug info: */
|
||||||
|
FileTimeToSystemTime (&dateRange, &st);
|
||||||
|
GetDateFormatW(0, DATE_SHORTDATE, &st, NULL, datestring,
|
||||||
|
sizeof(datestring)/sizeof(WCHAR));
|
||||||
|
GetTimeFormatW(0, TIME_NOSECONDS, &st,
|
||||||
|
NULL, timestring, sizeof(timestring)/sizeof(WCHAR));
|
||||||
|
|
||||||
|
WINE_TRACE("Date being used is: %s %s\n",
|
||||||
|
wine_dbgstr_w(datestring), wine_dbgstr_w(timestring));
|
||||||
|
} else {
|
||||||
|
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
flags |= OPT_DATENEWER;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '-': if (toupper(word[2])=='Y')
|
||||||
|
flags &= ~OPT_NOPROMPT; break;
|
||||||
|
case '?': XCOPY_wprintf(XCOPY_LoadMessage(STRING_HELP));
|
||||||
|
rc = RC_HELP;
|
||||||
|
goto out;
|
||||||
|
default:
|
||||||
|
WINE_TRACE("Unhandled parameter '%s'\n", wine_dbgstr_w(word));
|
||||||
|
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARM), word);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
word = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Default the destination if not supplied */
|
||||||
|
if (supplieddestination[0] == 0x00)
|
||||||
|
lstrcpyW(supplieddestination, wchr_dot);
|
||||||
|
|
||||||
|
*pflags = flags;
|
||||||
|
rc = RC_OK;
|
||||||
|
|
||||||
|
out:
|
||||||
|
free(cmdline);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* =========================================================================
|
/* =========================================================================
|
||||||
XCOPY_ProcessSourceParm - Takes the supplied source parameter, and
|
XCOPY_ProcessSourceParm - Takes the supplied source parameter, and
|
||||||
|
@ -432,8 +519,10 @@ static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem, WCHAR
|
||||||
if (attribs == INVALID_FILE_ATTRIBUTES) {
|
if (attribs == INVALID_FILE_ATTRIBUTES) {
|
||||||
|
|
||||||
/* If /I supplied and wildcard copy, assume directory */
|
/* If /I supplied and wildcard copy, assume directory */
|
||||||
if (flags & OPT_ASSUMEDIR &&
|
/* Also if destination ends with backslash */
|
||||||
(wcschr(srcspec, '?') || wcschr(srcspec, '*'))) {
|
if ((flags & OPT_ASSUMEDIR &&
|
||||||
|
(wcschr(srcspec, '?') || wcschr(srcspec, '*'))) ||
|
||||||
|
(supplieddestination[lstrlenW(supplieddestination)-1] == '\\')) {
|
||||||
|
|
||||||
isDir = TRUE;
|
isDir = TRUE;
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#define RC_CTRLC 2
|
#define RC_CTRLC 2
|
||||||
#define RC_INITERROR 4
|
#define RC_INITERROR 4
|
||||||
#define RC_WRITEERROR 5
|
#define RC_WRITEERROR 5
|
||||||
|
#define RC_HELP 6
|
||||||
|
|
||||||
#define OPT_ASSUMEDIR 0x00000001
|
#define OPT_ASSUMEDIR 0x00000001
|
||||||
#define OPT_RECURSIVE 0x00000002
|
#define OPT_RECURSIVE 0x00000002
|
||||||
|
|
11
base/applications/findstr/CMakeLists.txt
Normal file
11
base/applications/findstr/CMakeLists.txt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
add_definitions(-D_DLL -D__USE_CRTIMP)
|
||||||
|
|
||||||
|
add_executable(findstr
|
||||||
|
findstr.c
|
||||||
|
findstr.rc
|
||||||
|
rsrc.rc)
|
||||||
|
|
||||||
|
set_module_type(findstr win32cui)
|
||||||
|
add_importlibs(findstr user32 msvcrt kernel32)
|
||||||
|
add_cab_target(findstr 1)
|
295
base/applications/findstr/findstr.c
Normal file
295
base/applications/findstr/findstr.c
Normal file
|
@ -0,0 +1,295 @@
|
||||||
|
/* findstr.c */
|
||||||
|
|
||||||
|
/* Copyright (C) 1994-2002, Jim Hall <jhall@freedos.org> */
|
||||||
|
|
||||||
|
/* Adapted for ReactOS -Edited for Findstr.exe K'Williams */
|
||||||
|
|
||||||
|
/*
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program 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 General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* This program locates a string in a text file and prints those lines
|
||||||
|
* that contain the string. Multiple files are clearly separated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
#include <io.h>
|
||||||
|
#include <dos.h>
|
||||||
|
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Symbol definition */
|
||||||
|
#define MAX_STR 1024
|
||||||
|
|
||||||
|
|
||||||
|
/* This function prints out all lines containing a substring. There are some
|
||||||
|
* conditions that may be passed to the function.
|
||||||
|
*
|
||||||
|
* RETURN: If the string was found at least once, returns 1.
|
||||||
|
* If the string was not found at all, returns 0.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
find_str (char *sz, FILE *p, int invert_search,
|
||||||
|
int count_lines, int number_output, int ignore_case, int at_start, int literal_search,
|
||||||
|
int at_end, int reg_express, int exact_match, int sub_dirs, int only_fname)
|
||||||
|
{
|
||||||
|
int i, length;
|
||||||
|
long line_number = 0, total_lines = 0;
|
||||||
|
char *c, temp_str[MAX_STR], this_line[MAX_STR];
|
||||||
|
|
||||||
|
/* Convert to upper if needed */
|
||||||
|
if (ignore_case)
|
||||||
|
{
|
||||||
|
length = strlen (sz);
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
sz[i] = toupper (sz[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scan the file until EOF */
|
||||||
|
while (fgets (temp_str, MAX_STR, p) != NULL)
|
||||||
|
{
|
||||||
|
/* Remove the trailing newline */
|
||||||
|
length = strlen (temp_str);
|
||||||
|
if (temp_str[length-1] == '\n')
|
||||||
|
{
|
||||||
|
temp_str[length-1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Increment number of lines */
|
||||||
|
line_number++;
|
||||||
|
strcpy (this_line, temp_str);
|
||||||
|
|
||||||
|
/* Convert to upper if needed */
|
||||||
|
if (ignore_case)
|
||||||
|
{
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
temp_str[i] = toupper (temp_str[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Locate the substring */
|
||||||
|
|
||||||
|
/* strstr() returns a pointer to the first occurrence in the
|
||||||
|
string of the substring */
|
||||||
|
c = strstr (temp_str, sz);
|
||||||
|
|
||||||
|
if ( ((invert_search) ? (c == NULL) : (c != NULL)) )
|
||||||
|
{
|
||||||
|
if (!count_lines)
|
||||||
|
{
|
||||||
|
if (number_output)
|
||||||
|
printf ("%ld:", line_number);
|
||||||
|
|
||||||
|
/* Print the line of text */
|
||||||
|
puts (this_line);
|
||||||
|
}
|
||||||
|
|
||||||
|
total_lines++;
|
||||||
|
} /* long if */
|
||||||
|
} /* while fgets */
|
||||||
|
|
||||||
|
if (count_lines)
|
||||||
|
{
|
||||||
|
/* Just show num. lines that contain the string */
|
||||||
|
printf ("%ld\n", total_lines);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* RETURN: If the string was found at least once, returns 1.
|
||||||
|
* If the string was not found at all, returns 0.
|
||||||
|
*/
|
||||||
|
return (total_lines > 0 ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show usage */
|
||||||
|
void
|
||||||
|
usage (void)
|
||||||
|
{
|
||||||
|
TCHAR lpUsage[4096];
|
||||||
|
|
||||||
|
LoadString( GetModuleHandle(NULL), IDS_USAGE, (LPTSTR)lpUsage, 4096);
|
||||||
|
CharToOem(lpUsage, lpUsage);
|
||||||
|
printf( lpUsage );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Main program */
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
char *opt, *needle = NULL;
|
||||||
|
int ret = 0;
|
||||||
|
TCHAR lpMessage[4096];
|
||||||
|
|
||||||
|
int invert_search = 0; /* flag to invert the search */
|
||||||
|
int count_lines = 0; /* flag to whether/not count lines */
|
||||||
|
int number_output = 0; /* flag to print line numbers */
|
||||||
|
int ignore_case = 0; /* flag to be case insensitive */
|
||||||
|
int at_start = 0; /* flag to Match if at the beginning of a line. */
|
||||||
|
int at_end = 0; /* flag to Match if at the beginning of a line. */
|
||||||
|
int reg_express = 0; /* flag to use/not use regular expressions */
|
||||||
|
int exact_match = 0; /* flag to be exact match */
|
||||||
|
int sub_dirs= 0; /* this and all subdirectories */
|
||||||
|
int only_fname= 0; /* print only the name of the file*/
|
||||||
|
int literal_search=0;
|
||||||
|
|
||||||
|
FILE *pfile; /* file pointer */
|
||||||
|
int hfind; /* search handle */
|
||||||
|
struct _finddata_t finddata; /* _findfirst, filenext block */
|
||||||
|
|
||||||
|
/* Scan the command line */
|
||||||
|
while ((--argc) && (needle == NULL))
|
||||||
|
{
|
||||||
|
if (*(opt = *++argv) == '/')
|
||||||
|
{
|
||||||
|
switch (opt[1])
|
||||||
|
{
|
||||||
|
case 'b':
|
||||||
|
case 'B': /* Matches pattern if at the beginning of a line */
|
||||||
|
at_start = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//case 'c':
|
||||||
|
//case 'C': /* Literal? */
|
||||||
|
// literal_search = 1;
|
||||||
|
// break;
|
||||||
|
|
||||||
|
case 'e':
|
||||||
|
case 'E': /* matches pattern if at end of line */
|
||||||
|
at_end = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'i':
|
||||||
|
case 'I': /* Ignore */
|
||||||
|
ignore_case = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'm':
|
||||||
|
case 'M': /* only filename */
|
||||||
|
only_fname = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'n':
|
||||||
|
case 'N': /* Number */
|
||||||
|
number_output = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'r':
|
||||||
|
case 'R': /* search strings as regular expressions */
|
||||||
|
reg_express = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
case 'S': /* search files in child directory too*/
|
||||||
|
sub_dirs = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'v':
|
||||||
|
case 'V': /* Not with */
|
||||||
|
invert_search = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'x':
|
||||||
|
case 'X': /* exact match */
|
||||||
|
exact_match = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
usage ();
|
||||||
|
exit (2); /* syntax error .. return error 2 */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Get the string */
|
||||||
|
if (needle == NULL)
|
||||||
|
{
|
||||||
|
/* Assign the string to find */
|
||||||
|
needle = *argv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check for search string */
|
||||||
|
if (needle == NULL)
|
||||||
|
{
|
||||||
|
/* No string? */
|
||||||
|
usage ();
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scan the files for the string */
|
||||||
|
if (argc == 0)
|
||||||
|
{
|
||||||
|
ret = find_str (needle, stdin, invert_search, count_lines,
|
||||||
|
number_output, ignore_case, at_start, literal_search, at_end, reg_express, exact_match,
|
||||||
|
sub_dirs, only_fname);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (--argc >= 0)
|
||||||
|
{
|
||||||
|
hfind = _findfirst (*++argv, &finddata);
|
||||||
|
if (hfind < 0)
|
||||||
|
{
|
||||||
|
/* We were not able to find a file. Display a message and
|
||||||
|
set the exit status. */
|
||||||
|
LoadString( GetModuleHandle(NULL), IDS_NO_SUCH_FILE, (LPTSTR)lpMessage, 4096);
|
||||||
|
CharToOem(lpMessage, lpMessage);
|
||||||
|
fprintf (stderr, lpMessage, *argv);//
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* repeat find next file to match the filemask */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
/* We have found a file, so try to open it */
|
||||||
|
if ((pfile = fopen (finddata.name, "r")) != NULL)
|
||||||
|
{
|
||||||
|
printf ("---------------- %s\n", finddata.name);
|
||||||
|
ret = find_str (needle, pfile, invert_search, count_lines,
|
||||||
|
number_output, ignore_case, at_start, literal_search, at_end, reg_express, exact_match,
|
||||||
|
sub_dirs, only_fname);
|
||||||
|
fclose (pfile);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LoadString(GetModuleHandle(NULL), IDS_CANNOT_OPEN, (LPTSTR)lpMessage, 4096);
|
||||||
|
CharToOem(lpMessage, lpMessage);
|
||||||
|
fprintf (stderr, lpMessage,
|
||||||
|
finddata.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (_findnext(hfind, &finddata) > 0);
|
||||||
|
}
|
||||||
|
_findclose(hfind);
|
||||||
|
} /* for each argv */
|
||||||
|
|
||||||
|
/* RETURN: If the string was found at least once, returns 0.
|
||||||
|
* If the string was not found at all, returns 1.
|
||||||
|
* (Note that find_str.c returns the exact opposite values.)
|
||||||
|
*/
|
||||||
|
exit ( (ret ? 0 : 1) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
8
base/applications/findstr/findstr.rbuild
Normal file
8
base/applications/findstr/findstr.rbuild
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
|
||||||
|
<module name="findstr" type="win32cui" installbase="system32" installname="findstr.exe">
|
||||||
|
<library>user32</library>
|
||||||
|
<file>findstr.c</file>
|
||||||
|
<file>findstr.rc</file>
|
||||||
|
<file>rsrc.rc</file>
|
||||||
|
</module>
|
6
base/applications/findstr/findstr.rc
Normal file
6
base/applications/findstr/findstr.rc
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#define REACTOS_STR_FILE_DESCRIPTION "W32 findstr command\0"
|
||||||
|
#define REACTOS_STR_INTERNAL_NAME "findstr\0"
|
||||||
|
#define REACTOS_STR_ORIGINAL_FILENAME "findstr.exe\0"
|
||||||
|
#include <reactos/version.rc>
|
||||||
|
|
||||||
|
#include "rsrc.rc"
|
17
base/applications/findstr/lang/bg-BG.rc
Normal file
17
base/applications/findstr/lang/bg-BG.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Извежда всички редове във файла, които съдържат указания низ..\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"низ\" [ файл... ]\n\
|
||||||
|
/C Брои колко реда съдържат низа\n\
|
||||||
|
/I Пренебрегва ГлАвНОсТта\n\
|
||||||
|
/N Брой показани редове, като се започва от 1\n\
|
||||||
|
/V Извеждане на редовете, НЕсъдържащи низа."
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: Няма такъв файл\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: Отварянето на файла е невъзможно\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/ca-ES.rc
Normal file
17
base/applications/findstr/lang/ca-ES.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_CATALAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Mostra totes les linies que continguin una determinada cadena de caràcters.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"Cadena de caràcters\" [ file... ]\n\
|
||||||
|
/C Conta el numero de linies que contenen la cadena de caràcters\n\
|
||||||
|
/I Ignora majúscules i minúscules\n\
|
||||||
|
/N Numero de linies mostrades, començant per la primera\n\
|
||||||
|
/V Mostra les linies que no contenen la cadena de caràcters"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: No he trobat el fitxer\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: No puc obrir el fitxer\n"
|
||||||
|
|
||||||
|
END
|
23
base/applications/findstr/lang/cs-CZ.rc
Normal file
23
base/applications/findstr/lang/cs-CZ.rc
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/* FILE: applications/cmdutils/find/lang/cs-CZ.rc
|
||||||
|
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
||||||
|
* THANKS TO: Mario Kacmar aka Kario (kario@szm.sk)
|
||||||
|
* UPDATED: 2008-02-29
|
||||||
|
*/
|
||||||
|
|
||||||
|
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Zobrazí všechny øádky souboru obsahující hledaný øetìzec.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"øetìzec\" [ soubor... ]\n\
|
||||||
|
/C Zobrazí poèet øádkù obsahující øetìzec.\n\
|
||||||
|
/I Ignoruje velikost písmen.\n\
|
||||||
|
/N Èísluje zobrazené øádky, zaèíná od 1.\n\
|
||||||
|
/V Zobrazí všechny øádky, které NEobsahují zadaný øetìžec."
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: Soubor %s nebyl nalezen.\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: Soubor %s nelze otevøít!\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/de-DE.rc
Normal file
17
base/applications/findstr/lang/de-DE.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "Sucht in einer Datei nach einer Zeichenfolge.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"string\" [ file... ]\n\
|
||||||
|
/C Zeigt nur die Anzahl der die Zeichenfolge enthaltenen Zeilen an.\n\
|
||||||
|
/I Ignoriert Groß-/Kleinbuchstaben bei der Suche.\n\
|
||||||
|
/N Zeigt die Zeilen mit ihren Zeilennummern an.\n\
|
||||||
|
/V Zeigt alle Zeilen an, die die Zeichenfolge NICHT enhalten."
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "Datei %s nicht gefunden\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "Datei %s kann nicht geöffnet werden.\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/el-GR.rc
Normal file
17
base/applications/findstr/lang/el-GR.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Εκτυπώνει όλες τις γραμμές ενός αρχείου που περιέχουν ένα αλφαριθμητικό.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"αλφαριθμητικό\" [ αρχείο... ]\n\
|
||||||
|
/C Μέτρηση γραμμών που περιέχουν το αλφαριθμητικό\n\
|
||||||
|
/I Αγνόηση κεφαλαίων\n\
|
||||||
|
/N Εμφάνιση αριθμών στις εμφανιζόμενες γραμμές, ξεκινώντας από το 1\n\
|
||||||
|
/V Εκτύπωση γραμμών που δεν περιέχουν το αλφαριθμητικό"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: Δεν υπάρχει αυτό το αρχείο\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: Δεν ήταν δυνατό το άνοιγμα του αρχείου\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/en-US.rc
Normal file
17
base/applications/findstr/lang/en-US.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FINDSTR: Prints all lines of a file that contain a string.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"string\" [ file... ]\n\
|
||||||
|
/C Count the number of lines that contain string\n\
|
||||||
|
/I Ignore case\n\
|
||||||
|
/N Number the displayed lines, starting at 1\n\
|
||||||
|
/V Print lines that do not contain the string"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FINDSTR: %s: No such file\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FINDSTR: %s: Cannot open file\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/es-ES.rc
Normal file
17
base/applications/findstr/lang/es-ES.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Imprime todas las líneas de un fichero que contiene una cadena.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"cadena\" [ fichero... ]\n\
|
||||||
|
/C Cuenta el número de líneas que contienen la cadena de caracteres\n\
|
||||||
|
/I Ignora mayúsculas y minúsculas\n\
|
||||||
|
/N Numero de líneas a mostrar en pantalla, a partir de la primera\n\
|
||||||
|
/V Muestra las líneas que no contienen la cadena de caracteres."
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: No se encontró el fichero\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: No se pudo abrir el fichero\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/fr-FR.rc
Normal file
17
base/applications/findstr/lang/fr-FR.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Affiche toutes les lignes d'un fichier qui contiennent un morceau de texte.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"texte\" [ fichier... ]\n\
|
||||||
|
/C Compte le nombre de lignes qui contiennent le texte\n\
|
||||||
|
/I Insensible à la casse\n\
|
||||||
|
/N Numérote les lignes affichées en commençant à 1\n\
|
||||||
|
/V Affiche les lignes qui ne contiennent pas le texte"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s : fichier inexistant\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s : impossible d'ouvrir le fichier\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/it-IT.rc
Normal file
17
base/applications/findstr/lang/it-IT.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Visualizza le linee di un file che contengono un stringa.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"stringa\" [ file... ]\n\
|
||||||
|
/C Conta il numero di linee che contengono la stringa\n\
|
||||||
|
/I Ignora maiuscole/minuscole\n\
|
||||||
|
/N Numera le linee visualizzate a partire da 1\n\
|
||||||
|
/V Visualizza le linee che non contengono la stringa"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: File non trovato\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: Impossibile aprire il file\n"
|
||||||
|
|
||||||
|
END
|
26
base/applications/findstr/lang/lt-LT.rc
Normal file
26
base/applications/findstr/lang/lt-LT.rc
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS find command
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* FILE: base/applications/cmdutils/find/lang/lt-LT.rc
|
||||||
|
* PURPOSE: Lithuanian Language File
|
||||||
|
* TRANSLATOR: Vytis "CMan" Girdþijauskas (cman@cman.us)
|
||||||
|
* DATE: 2007-09-23
|
||||||
|
*/
|
||||||
|
|
||||||
|
LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Spausdina visas bylos eilutes, kuriose yra ieðkomas tekstas.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"tekstas\" [ byla... ]\n\
|
||||||
|
/C Skaièiuoti eilutes, kuriose yra ieðkomas tekstas\n\
|
||||||
|
/I Ignoruoti raidþiø dydá\n\
|
||||||
|
/N Numeruoti vaizduojamas eilutes, pradedant nuo 1\n\
|
||||||
|
/V Spausdinti eilutes, kuriose nëra ieðkomo teksto"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: Tokios bylos nëra\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: Nepavyko atverti bylos\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/no-NO.rc
Normal file
17
base/applications/findstr/lang/no-NO.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FINN: Skriv alle linjene for filen som inneholder en streng.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"streng\" [ fil... ]\n\
|
||||||
|
/C Teller nummer av linjer som inneholder strenger\n\
|
||||||
|
/I Ignorere sak\n\
|
||||||
|
/N Nummer viste linjer, start med 1\n\
|
||||||
|
/V Skriv linjer som ikke inneholder en streng"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FINN: %s: Ingen filer\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FINN: %s: Kan ikke åpne filen\n"
|
||||||
|
|
||||||
|
END
|
24
base/applications/findstr/lang/pl-PL.rc
Normal file
24
base/applications/findstr/lang/pl-PL.rc
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* translated by Caemyr - Olaf Siejka (Dec,2007)
|
||||||
|
* Use ReactOS forum PM or IRC to contact me
|
||||||
|
* http://www.reactos.org
|
||||||
|
* IRC: irc.freenode.net #reactos-pl
|
||||||
|
*/
|
||||||
|
|
||||||
|
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Wyświetla wszystkie linie danego pliku, zawierające szukany ciąg znaków.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"ciąg znaków\" [ plik... ]\n\
|
||||||
|
/C Oblicza w ilu liniach pojawił się szukany ciąg znaków\n\
|
||||||
|
/I Ignoruje wielkość liter\n\
|
||||||
|
/N Numeruje wyświetlane linie, zaczynając od 1\n\
|
||||||
|
/V Wyświetla te linie które nie zawierają szukanego ciągu znaków"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: Plik nie został znaleziony\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: Nie można otworzyć pliku\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/pt-BR.rc
Normal file
17
base/applications/findstr/lang/pt-BR.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Localiza uma seqüência de texto em um ou mais arquivos.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"seqüência\" [ arquivo... ]\n\
|
||||||
|
/C Exibe apenas o número de linhas que contêm a seqüência.\n\
|
||||||
|
/I Ignora maiúsculas/minúsculas ao localizar uma seqüência.\n\
|
||||||
|
/N Exibe o número de cada linha, iniciando no 1.\n\
|
||||||
|
/V Exibe todas as linhas que NÃO contêm a seqüência especificada."
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: Arquivo não encontrado\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: Não foi possível abrir o arquivo\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/ru-RU.rc
Normal file
17
base/applications/findstr/lang/ru-RU.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Поиск текстовой строки в одном или нескольких файлах.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"строка\" [ файл... ]\n\
|
||||||
|
/C Вывод только общего числа строк, содержащих заданную строку.\n\
|
||||||
|
/I Поиск без учета регистра символов.\n\
|
||||||
|
/N Вывод номеров отображаемых строк (начиная с 1).\n\
|
||||||
|
/V Вывод всех строк, НЕ содержащих заданную строку."
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: Файл не существует.\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: Невозможно открыть файл.\n"
|
||||||
|
|
||||||
|
END
|
21
base/applications/findstr/lang/sk-SK.rc
Normal file
21
base/applications/findstr/lang/sk-SK.rc
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/* TRANSLATOR: M rio KaŸm r /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||||
|
* DATE OF TR: 12-02-2008
|
||||||
|
*/
|
||||||
|
|
||||||
|
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Zobraz¡ vçetky riadky s£boru obsahuj£ce h–adanì reœazec.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"reœazec\" [ s£bor... ]\n\
|
||||||
|
/C Zobraz¡ poŸet riadkov, ktor‚ obsahuj£ reœazec.\n\
|
||||||
|
/I Ignoruje ve–kosœ p¡smen.\n\
|
||||||
|
/N ¬¡sluje zobrazen‚ riadky, zaŸ¡na od 1.\n\
|
||||||
|
/V Zobraz¡ vçetky riadky, ktor‚ neobsahuj£ h–adanì reœazec."
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: S£bor %s sa nenaçiel.\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: S£bor %s sa ned otvoriœ.\n"
|
||||||
|
|
||||||
|
END
|
17
base/applications/findstr/lang/sv-SE.rc
Normal file
17
base/applications/findstr/lang/sv-SE.rc
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Skriver ut alla rader i en fil som innehåller en sträng.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"sträng\" [ fil... ]\n\
|
||||||
|
/C Räkna nummren av linjer som innehåller en strängen\n\
|
||||||
|
/I Ignorera skiftläge\n\
|
||||||
|
/N Antal visade rader, börjar på 1\n\
|
||||||
|
/V Skriver ut rader som inte innehåller strängen"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: Ingen sorts fil\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: Kan inte öppna filen\n"
|
||||||
|
|
||||||
|
END
|
25
base/applications/findstr/lang/uk-UA.rc
Normal file
25
base/applications/findstr/lang/uk-UA.rc
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: Find
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* FILE: base/applications/cmdutils/find/lang/uk-UA.rc
|
||||||
|
* PURPOSE: Ukraianian Language File for find
|
||||||
|
* TRANSLATOR: Artem Reznikov
|
||||||
|
*/
|
||||||
|
|
||||||
|
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IDS_USAGE, "FIND: Âèâåäåííÿ âñ³õ ðÿäê³â ôàéëó, ÿê³ ì³ñòÿòü ðÿäîê.\n\n\
|
||||||
|
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"ðÿäîê\" [ ôàéë... ]\n\
|
||||||
|
/C Ïîðàõóâàòè ê³ëüê³ñòü ðÿäê³â, ÿê³ ì³ñòÿòü ðÿäîê\n\
|
||||||
|
/I Íå âðàõîâóâàòè ðåã³ñòð ñèìâîë³â\n\
|
||||||
|
/N Íóìåðóâàòè ðÿäêè, ÿê³ â³äîáðàæàþòüñÿ (ïî÷èíàþ÷è ç 1)\n\
|
||||||
|
/V Âèâåäåííÿ ðÿäê³â, ÿê³ íå ì³ñòÿòü çàäàíèé ðÿäîê"
|
||||||
|
|
||||||
|
IDS_NO_SUCH_FILE, "FIND: %s: Ôàéë íå ³ñíóº\n"
|
||||||
|
|
||||||
|
IDS_CANNOT_OPEN, "FIND: %s: Íåìîæëèâî â³äêðèòè ôàéë\n"
|
||||||
|
|
||||||
|
END
|
3
base/applications/findstr/resource.h
Normal file
3
base/applications/findstr/resource.h
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#define IDS_USAGE 1000
|
||||||
|
#define IDS_NO_SUCH_FILE 1001
|
||||||
|
#define IDS_CANNOT_OPEN 1002
|
20
base/applications/findstr/rsrc.rc
Normal file
20
base/applications/findstr/rsrc.rc
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#include <windows.h>
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
|
#include "lang/bg-BG.rc"
|
||||||
|
#include "lang/ca-ES.rc"
|
||||||
|
#include "lang/cs-CZ.rc"
|
||||||
|
#include "lang/de-DE.rc"
|
||||||
|
#include "lang/el-GR.rc"
|
||||||
|
#include "lang/en-US.rc"
|
||||||
|
#include "lang/es-ES.rc"
|
||||||
|
#include "lang/fr-FR.rc"
|
||||||
|
#include "lang/it-IT.rc"
|
||||||
|
#include "lang/lt-LT.rc"
|
||||||
|
#include "lang/no-NO.rc"
|
||||||
|
#include "lang/pl-PL.rc"
|
||||||
|
#include "lang/pt-BR.rc"
|
||||||
|
#include "lang/ru-RU.rc"
|
||||||
|
#include "lang/sk-SK.rc"
|
||||||
|
#include "lang/sv-SE.rc"
|
||||||
|
#include "lang/uk-UA.rc"
|
94
base/applications/games/winmine/lang/bg-BG.rc
Normal file
94
base/applications/games/winmine/lang/bg-BG.rc
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
/*
|
||||||
|
* WineMine
|
||||||
|
* Bulgarian Language Support
|
||||||
|
*
|
||||||
|
* Copyright 2000 Joshua Thielen
|
||||||
|
* Copyright 2003 Marcelo Duarte
|
||||||
|
*
|
||||||
|
* 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 "resource.h"
|
||||||
|
|
||||||
|
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE BEGIN
|
||||||
|
IDS_APPNAME, "Ìèíè÷êè"
|
||||||
|
IDS_NOBODY, "Íèêîé"
|
||||||
|
IDS_ABOUT, "Copyright 2000 Joshua Thielen"
|
||||||
|
END
|
||||||
|
|
||||||
|
MENU_WINEMINE MENU
|
||||||
|
BEGIN
|
||||||
|
POPUP "Íà&ñòðîéêè" BEGIN
|
||||||
|
MENUITEM "&Íîâ\tF2", IDM_NEW
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Ñëàãàíå íà &ïèòàíêà", IDM_MARKQ
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Íà&÷èíàåù", IDM_BEGINNER
|
||||||
|
MENUITEM "&Íàïðåäíàë", IDM_ADVANCED
|
||||||
|
MENUITEM "&Âåù", IDM_EXPERT
|
||||||
|
MENUITEM "&Íàãàæäàíå...", IDM_CUSTOM
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Èç&õîä\tAlt+X", IDM_EXIT
|
||||||
|
END
|
||||||
|
POPUP "&Ñâåäåíèÿ" BEGIN
|
||||||
|
MENUITEM "Íàé-&áúðçè...", IDM_TIMES
|
||||||
|
MENUITEM "&Çà", IDM_ABOUT
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
DLG_TIMES DIALOGEX 0, 0, 160, 80
|
||||||
|
STYLE DS_MODALFRAME | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_SHELLFONT
|
||||||
|
CAPTION "Íàé-áúðçè"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
GROUPBOX "Íàé-áúðçè", -1, 10, 10, 140, 45
|
||||||
|
LTEXT "Íà÷èíàåù", -1, 20, 20, 40, 8
|
||||||
|
LTEXT "Ðàçøèðåíè", -1, 20, 30, 40, 8
|
||||||
|
LTEXT "Ðàçáèðà÷", -1, 20, 40, 40, 8
|
||||||
|
LTEXT "999", IDC_TIME1, 70, 20, 15, 8
|
||||||
|
LTEXT "999", IDC_TIME2, 70, 30, 15, 8
|
||||||
|
LTEXT "999", IDC_TIME3, 70, 40, 15, 8
|
||||||
|
LTEXT "", IDC_NAME1, 90, 20, 55, 8
|
||||||
|
LTEXT "", IDC_NAME2, 90, 30, 55, 8
|
||||||
|
LTEXT "", IDC_NAME3, 90, 40, 55, 8
|
||||||
|
DEFPUSHBUTTON "Äîáðå", IDOK, 55, 60, 50, 15
|
||||||
|
END
|
||||||
|
|
||||||
|
DLG_CONGRATS DIALOGEX 0, 0, 160, 60
|
||||||
|
STYLE DS_MODALFRAME | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_SHELLFONT
|
||||||
|
CAPTION "Ïîçäðàâëåíèÿ!"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Âúâåäåòå èìåòî ñè", -1, 10, 10, 150, 10
|
||||||
|
EDITTEXT IDC_EDITNAME, 25, 20, 110, 12
|
||||||
|
DEFPUSHBUTTON "Äîáðå", IDOK, 60, 40, 40, 15
|
||||||
|
END
|
||||||
|
|
||||||
|
DLG_CUSTOM DIALOGEX 0, 0, 100, 110
|
||||||
|
STYLE DS_MODALFRAME | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_SHELLFONT
|
||||||
|
CAPTION "Íàãîäåíà èãðà"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Ðåäîâå", -1, 5, 5, 30, 10
|
||||||
|
LTEXT "Ñòúëáîâå", -1, 5, 35, 30, 10
|
||||||
|
LTEXT "Ìèíè", -1, 5, 65, 30, 10
|
||||||
|
EDITTEXT IDC_EDITROWS, 5, 15, 20, 12, ES_NUMBER
|
||||||
|
EDITTEXT IDC_EDITCOLS, 5, 45, 20, 12, ES_NUMBER
|
||||||
|
EDITTEXT IDC_EDITMINES, 5, 75, 20, 12, ES_NUMBER
|
||||||
|
DEFPUSHBUTTON "Äîáðå", IDOK, 50, 30, 50, 15
|
||||||
|
PUSHBUTTON "Îòêàç", IDCANCEL, 50, 50, 50, 15
|
||||||
|
END
|
|
@ -42,6 +42,7 @@ LEDS BITMAP rc/leds.bmp
|
||||||
MINES BITMAP rc/mines.bmp
|
MINES BITMAP rc/mines.bmp
|
||||||
|
|
||||||
/* include localised resources */
|
/* include localised resources */
|
||||||
|
#include "lang/bg-BG.rc"
|
||||||
#include "lang/cs-CZ.rc"
|
#include "lang/cs-CZ.rc"
|
||||||
#include "lang/da-DK.rc"
|
#include "lang/da-DK.rc"
|
||||||
#include "lang/en-US.rc"
|
#include "lang/en-US.rc"
|
||||||
|
|
|
@ -16,13 +16,13 @@
|
||||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define WINE_OLESELFREGISTER
|
#define WINE_FILEDESCRIPTION_STR "Wine Internet Explorer"
|
||||||
#define WINE_FILEDESCRIPTION_STR "Wine core exe"
|
|
||||||
#define WINE_FILENAME_STR "iexplore.exe"
|
#define WINE_FILENAME_STR "iexplore.exe"
|
||||||
#define WINE_FILEVERSION 6,0,2900,2180
|
#define WINE_FILEVERSION 6,0,2900,2180
|
||||||
#define WINE_FILEVERSION_STR "6.0.2900.2180"
|
#define WINE_FILEVERSION_STR "6.0.2900.2180"
|
||||||
#define WINE_PRODUCTVERSION 6,0,2900,2180
|
#define WINE_PRODUCTVERSION 6,0,2900,2180
|
||||||
#define WINE_PRODUCTVERSION_STR "6.0.2900.2180"
|
#define WINE_PRODUCTVERSION_STR "6.0.2900.2180"
|
||||||
|
#define WINE_EXTRAVALUES VALUE "OLESelfRegister",""
|
||||||
|
|
||||||
#include "wine/wine_common_ver.rc"
|
#include "wine/wine_common_ver.rc"
|
||||||
|
|
||||||
|
|
|
@ -91,13 +91,13 @@ END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_COLUMNTYPE "Type"
|
IDS_COLUMNTYPE "Âèä"
|
||||||
IDS_COLUMNDATE "Date"
|
IDS_COLUMNDATE "Äàòà"
|
||||||
IDS_COLUMNTIME "Time"
|
IDS_COLUMNTIME "Âðåìå"
|
||||||
IDS_COLUMNSOURCE "Source"
|
IDS_COLUMNSOURCE "Èçòî÷íèê"
|
||||||
IDS_COLUMNCATEGORY "Category"
|
IDS_COLUMNCATEGORY "Ðàçðÿä"
|
||||||
IDS_COLUMNEVENT "Event"
|
IDS_COLUMNEVENT "Ñúáèòèå"
|
||||||
IDS_COLUMNUSER "User"
|
IDS_COLUMNUSER "Ïîòðåáèòåë"
|
||||||
IDS_COLUMNCOMPUTER "Computer"
|
IDS_COLUMNCOMPUTER "Êîìïþòúð"
|
||||||
IDS_COLUMNEVENTDATA "Event Data"
|
IDS_COLUMNEVENTDATA "Äàííè çà ñúáèòèåòî"
|
||||||
END
|
END
|
||||||
|
|
|
@ -4,7 +4,7 @@ IDR_MAINMENU MENU
|
||||||
BEGIN
|
BEGIN
|
||||||
POPUP "&Ôàéë"
|
POPUP "&Ôàéë"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "Èçíîñ...", ID_EXPORT
|
MENUITEM "Èçíàñÿíå...", ID_EXPORT
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Èç&õîä", ID_EXIT
|
MENUITEM "Èç&õîä", ID_EXIT
|
||||||
END
|
END
|
||||||
|
@ -194,8 +194,8 @@ STRINGTABLE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
/* IDS_NUM_SERVICES "Num Services: %d" */
|
/* IDS_NUM_SERVICES "Num Services: %d" */
|
||||||
IDS_NUM_SERVICES "Áðîé óñëóãè: %d"
|
IDS_NUM_SERVICES "Áðîé óñëóãè: %d"
|
||||||
IDS_STOP_DEPENDS "When %s stops, these other services will also stop"
|
IDS_STOP_DEPENDS "Ïðè ñïèðàíåòî íà %s, ùå ñïðàò è ñëåäíèòå óñëóãè"
|
||||||
IDS_NO_DEPENDS "<No Dependencies>"
|
IDS_NO_DEPENDS "<Áåç çàâèñèìîñòè>"
|
||||||
IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
|
IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -226,7 +226,8 @@ END
|
||||||
|
|
||||||
STRINGTABLE DISCARDABLE
|
STRINGTABLE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_HELP_OPTIONS "CREATE OPTIONS:\r\nNOTE: The option name includes the equal sign.\r\n type= <own|share|interact|kernel|filesys|rec>\r\n (default = own)\r\n start= <boot|system|auto|demand|disabled>\r\n (default = demand) \r\n error= <normal|severe|critical|ignore>\r\n (default = normal)\r\n group= <LoadOrderGroup>\r\n tag= <yes|no>\r\n depend= <Dependencies(separated by / (forward slash))>\r\n obj= <AccountName|ObjectName>\r\n (default = LocalSystem)\r\n password= <password>\r\n"
|
/*IDS_HELP_OPTIONS "CREATE OPTIONS:\r\nNOTE: The option name includes the equal sign.\r\n type= <own|share|interact|kernel|filesys|rec>\r\n (default = own)\r\n start= <boot|system|auto|demand|disabled>\r\n (default = demand) \r\n error= <normal|severe|critical|ignore>\r\n (default = normal)\r\n group= <LoadOrderGroup>\r\n tag= <yes|no>\r\n depend= <Dependencies(separated by / (forward slash))>\r\n obj= <AccountName|ObjectName>\r\n (default = LocalSystem)\r\n password= <password>\r\n" */
|
||||||
|
IDS_HELP_OPTIONS "ÑÚÇÄÀÂÀÍÅ ÍÀ ÂÚÇÌÎÆÍÎÑÒ:\r\nÁÅËÅÆÊÀ: Èìåòî íà âúçìîæíîñòòà âêëþ÷âà çíàêà çà ðàâåíñòâî.\r\n type= <own|share|interact|kernel|filesys|rec>\r\n (ïîäðàçáèðàíî = own)\r\n start= <boot|system|auto|demand|disabled>\r\n (ïîäðàçáèðàíî = demand) \r\n error= <normal|severe|critical|ignore>\r\n (ïîäðàçáèðàíî = normal)\r\n group= <LoadOrderGroup>\r\n tag= <yes|no>\r\n depend= <Dependencies(separated by / (forward slash))>\r\n obj= <AccountName|ObjectName>\r\n (ïîäðàçáèðàíî = LocalSystem)\r\n password= <password>\r\n"
|
||||||
END
|
END
|
||||||
|
|
||||||
/* Hints */
|
/* Hints */
|
||||||
|
@ -239,7 +240,7 @@ BEGIN
|
||||||
IDS_HINT_CONNECT " Óïðàâëåíèå íà ðàçëè÷åí êîìïþòúð."
|
IDS_HINT_CONNECT " Óïðàâëåíèå íà ðàçëè÷åí êîìïþòúð."
|
||||||
IDS_HINT_START " Ïóñêàíå íà èçáðàíàòà óñëóãà."
|
IDS_HINT_START " Ïóñêàíå íà èçáðàíàòà óñëóãà."
|
||||||
IDS_HINT_STOP " Ñïèðàíå íà èçáðàíàòà óñëóãà."
|
IDS_HINT_STOP " Ñïèðàíå íà èçáðàíàòà óñëóãà."
|
||||||
IDS_HINT_PAUSE " Çàäúðæàíå (pause) íà èçáðàíàòà óñëóãà."
|
IDS_HINT_PAUSE " Çàäúðæàíå íà èçáðàíàòà óñëóãà."
|
||||||
IDS_HINT_RESUME " Ïðîäúëæàâàíå íà èíáðàíàòà óñëóãà."
|
IDS_HINT_RESUME " Ïðîäúëæàâàíå íà èíáðàíàòà óñëóãà."
|
||||||
IDS_HINT_RESTART " Ñïèðàíå è ïóñêàíå íà èçáðàíàòà óñëóãà"
|
IDS_HINT_RESTART " Ñïèðàíå è ïóñêàíå íà èçáðàíàòà óñëóãà"
|
||||||
IDS_HINT_REFRESH " Îïðåñíÿâàíå íà ñïèñúêà ñ óñëóãèòå."
|
IDS_HINT_REFRESH " Îïðåñíÿâàíå íà ñïèñúêà ñ óñëóãèòå."
|
||||||
|
@ -255,7 +256,7 @@ BEGIN
|
||||||
IDS_HINT_CUST " Íàãàæäàíå íà èçãëåäà."
|
IDS_HINT_CUST " Íàãàæäàíå íà èçãëåäà."
|
||||||
|
|
||||||
IDS_HINT_HELP " Ïîêàçâà ïîìîùåí ïðîçîðåö."
|
IDS_HINT_HELP " Ïîêàçâà ïîìîùåí ïðîçîðåö."
|
||||||
IDS_HINT_ABOUT " Çà óïðàâèòåëÿ íà óñòðéñòâàòà íà ÐåàêòÎÑ."
|
IDS_HINT_ABOUT " Çà óïðàâèòåëÿ íà óñòðîéñòâàòà íà ÐåàêòÎÑ."
|
||||||
|
|
||||||
IDS_HINT_SYS_RESTORE " Âúçñòàíîâÿâà ïðîçîðåöà äî îáè÷àéíèÿ ìó ðàìåð."
|
IDS_HINT_SYS_RESTORE " Âúçñòàíîâÿâà ïðîçîðåöà äî îáè÷àéíèÿ ìó ðàìåð."
|
||||||
IDS_HINT_SYS_MOVE " Ïðåìåñòâà ïðîçîðåöà."
|
IDS_HINT_SYS_MOVE " Ïðåìåñòâà ïðîçîðåöà."
|
||||||
|
|
|
@ -791,7 +791,7 @@ int main( int argc, char* argv[] )
|
||||||
RtlZeroMemory( State.DefaultServer, 256 );
|
RtlZeroMemory( State.DefaultServer, 256 );
|
||||||
RtlZeroMemory( State.DefaultServerAddress, 16 );
|
RtlZeroMemory( State.DefaultServerAddress, 16 );
|
||||||
|
|
||||||
strncpy( State.root, DEFAULT_ROOT, strlen( DEFAULT_ROOT ) );
|
memcpy( State.root, DEFAULT_ROOT, sizeof(DEFAULT_ROOT) );
|
||||||
|
|
||||||
/* We don't know how long of a buffer it will want to return. So we'll
|
/* We don't know how long of a buffer it will want to return. So we'll
|
||||||
pass an empty one now and let it fail only once, instead of guessing. */
|
pass an empty one now and let it fail only once, instead of guessing. */
|
||||||
|
|
198
base/applications/rapps/lang/cs-CZ.rc
Normal file
198
base/applications/rapps/lang/cs-CZ.rc
Normal file
|
@ -0,0 +1,198 @@
|
||||||
|
/* FILE: applications/rapps/lang/cs-CZ.rc
|
||||||
|
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
||||||
|
* UPDATED: 2010-12-12
|
||||||
|
*/
|
||||||
|
|
||||||
|
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
IDR_MAINMENU MENU
|
||||||
|
BEGIN
|
||||||
|
POPUP "&Soubor"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Nastavení", ID_SETTINGS
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Konec", ID_EXIT
|
||||||
|
END
|
||||||
|
POPUP "&Programy"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Instalovat", ID_INSTALL
|
||||||
|
MENUITEM "&Odinstalovat",ID_UNINSTALL
|
||||||
|
MENUITEM "&Zmìnit", ID_MODIFY
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Odstranit z ®istru", ID_REGREMOVE
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Obnovit", ID_REFRESH
|
||||||
|
END
|
||||||
|
POPUP "Nápovìda"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "Nápovìda", ID_HELP, GRAYED
|
||||||
|
MENUITEM "O programu...", ID_ABOUT
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
IDR_LINKMENU MENU
|
||||||
|
BEGIN
|
||||||
|
POPUP "popup"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Otevøít odkaz v prohlížeèi", ID_OPEN_LINK
|
||||||
|
MENUITEM "&Kopírovat odkaz do schránky", ID_COPY_LINK
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
IDR_APPLICATIONMENU MENU
|
||||||
|
BEGIN
|
||||||
|
POPUP "popup"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Instalovat", ID_INSTALL
|
||||||
|
MENUITEM "&Odinstalovat", ID_UNINSTALL
|
||||||
|
MENUITEM "&Zmìnit", ID_MODIFY
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Odebrat z ®istru", ID_REGREMOVE
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Obnovit", ID_REFRESH
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
|
||||||
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Nastavení"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
GROUPBOX "Obecné", -1, 4, 2, 240, 61
|
||||||
|
AUTOCHECKBOX "&Uložit pozici okna", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
|
||||||
|
AUTOCHECKBOX "&Aktualizovat seznam dostupných programù pøi startu programu", IDC_UPDATE_AVLIST, 15, 29, 219, 12
|
||||||
|
AUTOCHECKBOX "Ukládat &záznam instalací a odstranìní programù", IDC_LOG_ENABLED, 15, 46, 219, 12
|
||||||
|
|
||||||
|
GROUPBOX "Stahování", -1, 4, 65, 240, 51
|
||||||
|
LTEXT "Složka se staženými soubory:", -1, 16, 75, 100, 9
|
||||||
|
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||||
|
PUSHBUTTON "&Procházet...", IDC_CHOOSE, 187, 85, 50, 14
|
||||||
|
AUTOCHECKBOX "&Smazat instalátor programu po dokonèení instalace", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
|
||||||
|
|
||||||
|
PUSHBUTTON "Výchozí", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
|
||||||
|
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
|
||||||
|
PUSHBUTTON "Storno", IDCANCEL, 181, 124, 60, 14
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
|
||||||
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Instalace programu"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||||
|
|
||||||
|
AUTORADIOBUTTON "&Instalovat z média (CD nebo DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
|
||||||
|
AUTORADIOBUTTON "&Stáhnout a instalovat", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
|
||||||
|
|
||||||
|
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
|
||||||
|
PUSHBUTTON "Storno", IDCANCEL, 150, 78, 60, 14
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||||
|
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||||
|
CAPTION "Stahování..."
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12
|
||||||
|
LTEXT "", IDC_DOWNLOAD_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||||
|
PUSHBUTTON "Storno", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_ABOUT_DIALOG DIALOGEX 22, 16, 190, 66
|
||||||
|
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
|
||||||
|
CAPTION "O programu"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
LTEXT "ReactOS Manažer aplikací\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39
|
||||||
|
PUSHBUTTON "Zavøít", IDOK, 133, 46, 50, 14
|
||||||
|
ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_TOOLTIP_INSTALL "Instalovat"
|
||||||
|
IDS_TOOLTIP_UNINSTALL "Odinstalovat"
|
||||||
|
IDS_TOOLTIP_MODIFY "Zmìnit"
|
||||||
|
IDS_TOOLTIP_SETTINGS "Nastavení"
|
||||||
|
IDS_TOOLTIP_REFRESH "Obnovit"
|
||||||
|
IDS_TOOLTIP_EXIT "Konec"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_APP_NAME "Název"
|
||||||
|
IDS_APP_INST_VERSION "Verze"
|
||||||
|
IDS_APP_DESCRIPTION "Popis"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_INFO_VERSION "\nVerze: "
|
||||||
|
IDS_INFO_DESCRIPTION "\nPopis: "
|
||||||
|
IDS_INFO_PUBLISHER "\nVydavatel: "
|
||||||
|
IDS_INFO_HELPLINK "\nInternetová pomoc: "
|
||||||
|
IDS_INFO_HELPPHONE "\nTelefonní pomoc: "
|
||||||
|
IDS_INFO_README "\nReadme: "
|
||||||
|
IDS_INFO_REGOWNER "\nRegistrovaný vlastník: "
|
||||||
|
IDS_INFO_PRODUCTID "\nID produktu: "
|
||||||
|
IDS_INFO_CONTACT "\nKontakt: "
|
||||||
|
IDS_INFO_UPDATEINFO "\nInformace o aktualizacích: "
|
||||||
|
IDS_INFO_INFOABOUT "\nInformace o: "
|
||||||
|
IDS_INFO_COMMENTS "\nKomentáøe: "
|
||||||
|
IDS_INFO_INSTLOCATION "\nUmístìní instalace: "
|
||||||
|
IDS_INFO_INSTALLSRC "\nZdroj instalace: "
|
||||||
|
IDS_INFO_UNINSTALLSTR "\nOdinstalaèní øetìzec: "
|
||||||
|
IDS_INFO_MODIFYPATH "\nCesta úpravy: "
|
||||||
|
IDS_INFO_INSTALLDATE "\nDatum instalace: "
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_AINFO_VERSION "\nVerze: "
|
||||||
|
IDS_AINFO_DESCRIPTION "\nPopis: "
|
||||||
|
IDS_AINFO_SIZE "\nVelikost: "
|
||||||
|
IDS_AINFO_URLSITE "\nDomovská stránka: "
|
||||||
|
IDS_AINFO_LICENCE "\nLicence: "
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_CAT_AUDIO "Audio"
|
||||||
|
IDS_CAT_DEVEL "Vývoj"
|
||||||
|
IDS_CAT_DRIVERS "Ovladaèe"
|
||||||
|
IDS_CAT_EDU "Škola hrou"
|
||||||
|
IDS_CAT_ENGINEER "Strojírenství"
|
||||||
|
IDS_CAT_FINANCE "Finance"
|
||||||
|
IDS_CAT_GAMES "Hry a zábava"
|
||||||
|
IDS_CAT_GRAPHICS "Grafika"
|
||||||
|
IDS_CAT_INTERNET "Internet a sítì"
|
||||||
|
IDS_CAT_LIBS "Knihovny"
|
||||||
|
IDS_CAT_OFFICE "Kanceláø"
|
||||||
|
IDS_CAT_OTHER "Jiné"
|
||||||
|
IDS_CAT_SCIENCE "Vìda"
|
||||||
|
IDS_CAT_TOOLS "Nástroje"
|
||||||
|
IDS_CAT_VIDEO "Video"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_APPTITLE "ReactOS Manažer aplikací"
|
||||||
|
IDS_SEARCH_TEXT "Hledat..."
|
||||||
|
IDS_INSTALL "Instalovat"
|
||||||
|
IDS_UNINSTALL "Odinstalovat"
|
||||||
|
IDS_MODIFY "Zmìnit"
|
||||||
|
IDS_APPS_COUNT "Poèet aplikací: %d"
|
||||||
|
IDS_WELCOME_TITLE "Vítejte v ReactOS Manažeru aplikací!\n\n"
|
||||||
|
IDS_WELCOME_TEXT "Na levé stranì zvolte kategorii, pak vpravo zvolte aplikaci, která bude nainstalována nebo odinstalována.\nWebová stránka ReactOS: "
|
||||||
|
IDS_WELCOME_URL "http://www.reactos.org"
|
||||||
|
IDS_INSTALLED "Nainstalováno"
|
||||||
|
IDS_AVAILABLEFORINST "Dostupné k instalaci"
|
||||||
|
IDS_UPDATES "Aktualizace"
|
||||||
|
IDS_APPLICATIONS "Aplikace"
|
||||||
|
IDS_CHOOSE_FOLDER_TEXT "Zvolte složku, do které se budou ukládat stažené soubory:"
|
||||||
|
IDS_CHOOSE_FOLDER_ERROR "Zvolená složka neexistuje. Vytvoøit?"
|
||||||
|
IDS_USER_NOT_ADMIN "Ke spuštìní ""ReactOS Manažera aplikací"" je tøeba být administrátor!"
|
||||||
|
IDS_APP_REG_REMOVE "Urèitì odstranit data instalovaného programu z registru?"
|
||||||
|
IDS_INFORMATION "Informace"
|
||||||
|
IDS_UNABLE_TO_REMOVE "Nepodaøilo se odstranit data programu z registru!"
|
||||||
|
END
|
|
@ -11,6 +11,12 @@ URLSite = Unknown
|
||||||
URLDownload = http://svn.reactos.org/packages/ac97_vbox.exe
|
URLDownload = http://svn.reactos.org/packages/ac97_vbox.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
|
[Section.0405]
|
||||||
|
Name = Ovladač AC97 pro VirtualBox
|
||||||
|
Licence = Neznámá
|
||||||
|
Description = Rozbalte do složky "ReactOS" a pak ReactOS dvakrát restartujte.
|
||||||
|
URLSite = Neznámá
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Name = AC97 Treiber für VirtualBox
|
Name = AC97 Treiber für VirtualBox
|
||||||
Licence = Unbekannt
|
Licence = Unbekannt
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = Fox Audio Player
|
Name = Fox Audio Player
|
||||||
Version = 0.7.2
|
Version = 0.8.3
|
||||||
Licence = GPL
|
Licence = GPL
|
||||||
Description = Simple and lightweight audio player.
|
Description = Simple and lightweight audio player.
|
||||||
Size = 1.84MB
|
Size = 1.85MB
|
||||||
Category = 1
|
Category = 1
|
||||||
URLSite = http://foxaudioplayer.sourceforge.net/
|
URLSite = http://foxaudioplayer.sourceforge.net/
|
||||||
URLDownload = http://svn.reactos.org/packages/fap-0.7.2-win32-bin.exe
|
URLDownload = http://svn.reactos.org/packages/fap-0.8.3-win32-bin.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
|
|
|
@ -11,6 +11,12 @@ URLSite = http://www.mozilla.com/en-US/
|
||||||
URLDownload = http://svn.reactos.org/packages/Firefox%20Setup%202.0.0.20.exe
|
URLDownload = http://svn.reactos.org/packages/Firefox%20Setup%202.0.0.20.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
|
[Section.0405]
|
||||||
|
Description = Nejpopulárnější a jeden z nejlepších svobodných webových prohlížečů.
|
||||||
|
Size = 5.5M
|
||||||
|
URLSite = http://www.mozilla-europe.org/cs/
|
||||||
|
URLDownload = http://194.71.11.70/pub/www/clients/mozilla.org/firefox/releases/2.0.0.20/win32/cs/Firefox%20Setup%202.0.0.20.exe
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Der populärste und einer der besten freien Webbrowser.
|
Description = Der populärste und einer der besten freien Webbrowser.
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,12 @@ URLSite = http://www.mozilla.com/en-US/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/en-US/Firefox%20Setup%203.0.19.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/en-US/Firefox%20Setup%203.0.19.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
|
[Section.0405]
|
||||||
|
Description = Nejpopulárnější a jeden z nejlepších svobodných webových prohlížečů.
|
||||||
|
Size = 7.0M
|
||||||
|
URLSite = http://www.mozilla-europe.org/cs/
|
||||||
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/cs/Firefox%20Setup%203.0.19.exe
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Der populärste und einer der besten freien Webbrowser.
|
Description = Der populärste und einer der besten freien Webbrowser.
|
||||||
Size = 7.0M
|
Size = 7.0M
|
||||||
|
|
|
@ -2,47 +2,47 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = Mozilla Firefox 3.6
|
Name = Mozilla Firefox 3.6
|
||||||
Version = 3.6.12
|
Version = 3.6.13
|
||||||
Licence = MPL/GPL/LGPL
|
Licence = MPL/GPL/LGPL
|
||||||
Description = The most popular and one of the best free Web Browsers out there.
|
Description = The most popular and one of the best free Web Browsers out there.
|
||||||
Size = 8.1M
|
Size = 8.1M
|
||||||
Category = 5
|
Category = 5
|
||||||
URLSite = http://www.mozilla.com/en-US/
|
URLSite = http://www.mozilla.com/en-US/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/en-US/Firefox%20Setup%203.6.12.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/en-US/Firefox%20Setup%203.6.13.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Der populärste und einer der besten freien Webbrowser.
|
Description = Der populärste und einer der besten freien Webbrowser.
|
||||||
Size = 8.0M
|
Size = 8.0M
|
||||||
URLSite = http://www.mozilla-europe.org/de/
|
URLSite = http://www.mozilla-europe.org/de/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/de/Firefox%20Setup%203.6.12.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/de/Firefox%20Setup%203.6.13.exe
|
||||||
|
|
||||||
[Section.040a]
|
[Section.040a]
|
||||||
Description = El más popular y uno de los mejores navegadores web gratuitos que hay.
|
Description = El más popular y uno de los mejores navegadores web gratuitos que hay.
|
||||||
Size = 8.0M
|
Size = 8.0M
|
||||||
URLSite = http://www.mozilla-europe.org/es/
|
URLSite = http://www.mozilla-europe.org/es/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/es-ES/Firefox%20Setup%203.6.12.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/es-ES/Firefox%20Setup%203.6.13.exe
|
||||||
|
|
||||||
[Section.0414]
|
[Section.0414]
|
||||||
Description = Mest populære og best også gratis nettleserene der ute.
|
Description = Mest populære og best også gratis nettleserene der ute.
|
||||||
Size = 8.0M
|
Size = 8.0M
|
||||||
URLSite = http://www.mozilla-europe.org/no/
|
URLSite = http://www.mozilla-europe.org/no/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/nb-NO/Firefox%20Setup%203.6.12.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/nb-NO/Firefox%20Setup%203.6.13.exe
|
||||||
|
|
||||||
[Section.0415]
|
[Section.0415]
|
||||||
Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych.
|
Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych.
|
||||||
Size = 8.8M
|
Size = 8.8M
|
||||||
URLSite = http://www.mozilla-europe.org/pl/
|
URLSite = http://www.mozilla-europe.org/pl/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/pl/Firefox%20Setup%203.6.12.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/pl/Firefox%20Setup%203.6.13.exe
|
||||||
|
|
||||||
[Section.0419]
|
[Section.0419]
|
||||||
Description = Один из самых популярных и лучших бесплатных браузеров.
|
Description = Один из самых популярных и лучших бесплатных браузеров.
|
||||||
Size = 8.4M
|
Size = 8.4M
|
||||||
URLSite = http://www.mozilla-europe.org/ru/
|
URLSite = http://www.mozilla-europe.org/ru/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/ru/Firefox%20Setup%203.6.12.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/ru/Firefox%20Setup%203.6.13.exe
|
||||||
|
|
||||||
[Section.0422]
|
[Section.0422]
|
||||||
Description = Найпопулярніший та один з кращих безплатних веб-браузерів.
|
Description = Найпопулярніший та один з кращих безплатних веб-браузерів.
|
||||||
Size = 8.4M
|
Size = 8.4M
|
||||||
URLSite = http://www.mozilla-europe.org/uk/
|
URLSite = http://www.mozilla-europe.org/uk/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/uk/Firefox%20Setup%203.6.12.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/uk/Firefox%20Setup%203.6.13.exe
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = IrfanView
|
Name = IrfanView
|
||||||
Version = 4.27
|
Version = 4.28
|
||||||
Licence = Freeware (for personal use)
|
Licence = Freeware (for personal use)
|
||||||
Description = Viewer for all kinds of graphics/audio files/video files.
|
Description = Viewer for all kinds of graphics/audio files/video files.
|
||||||
Size = 1.3MB
|
Size = 1.3MB
|
||||||
Category = 3
|
Category = 3
|
||||||
URLSite = http://www.irfanview.com/
|
URLSite = http://www.irfanview.com/
|
||||||
URLDownload = http://irfanview.tuwien.ac.at/iview427_setup.exe
|
URLDownload = http://irfanview.tuwien.ac.at/iview428_setup.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = IrfanView Plugins
|
Name = IrfanView Plugins
|
||||||
Version = 4.27
|
Version = 4.28
|
||||||
Licence = Freeware (for personal use)
|
Licence = Freeware (for personal use)
|
||||||
Description = Additional Plugins for supporting more file types.
|
Description = Additional Plugins for supporting more file types.
|
||||||
Size = 7.8MB
|
Size = 7.8MB
|
||||||
Category = 3
|
Category = 3
|
||||||
URLSite = http://www.irfanview.com/
|
URLSite = http://www.irfanview.com/
|
||||||
URLDownload = http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_427_setup.exe
|
URLDownload = http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_428_setup.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = LibreOffice
|
Name = LibreOffice
|
||||||
Version = 3.3.0 Beta 3
|
Version = 3.3.0 RC2
|
||||||
Licence = LGPL
|
Licence = LGPL
|
||||||
Description = Former called OpenOffice. Open Source Office Suite.
|
Description = Former called OpenOffice. Open Source Office Suite.
|
||||||
Size = 300.0MB
|
Size = 206.0MB
|
||||||
Category = 6
|
Category = 6
|
||||||
URLSite = http://www.documentfoundation.org/
|
URLSite = http://www.documentfoundation.org/
|
||||||
URLDownload = http://download.documentfoundation.org/libreoffice/testing/3.3.0-beta3/win/x86/LibO_3.3.0_Win_x86_install_multi.exe
|
URLDownload = http://download.documentfoundation.org/libreoffice/testing/3.3.0-rc2/win/x86/LibO_3.3.0rc2_Win_x86_install_multi.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = Miranda IM
|
Name = Miranda IM
|
||||||
Version = 0.9.11
|
Version = 0.9.13
|
||||||
Licence = GPL
|
Licence = GPL
|
||||||
Description = Open source multiprotocol instant messaging application - May not work completely.
|
Description = Open source multiprotocol instant messaging application - May not work completely.
|
||||||
Size = 3.0MB
|
Size = 3.0MB
|
||||||
Category = 5
|
Category = 5
|
||||||
URLSite = http://www.miranda-im.org/
|
URLSite = http://www.miranda-im.org/
|
||||||
URLDownload = http://miranda.googlecode.com/files/miranda-im-v0.9.11-unicode.exe
|
URLDownload = http://miranda.googlecode.com/files/miranda-im-v0.9.13-unicode.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = mIRC
|
Name = mIRC
|
||||||
Version = 7.15
|
Version = 7.17
|
||||||
Licence = Shareware
|
Licence = Shareware
|
||||||
Description = The most popular client for the Internet Relay Chat (IRC).
|
Description = The most popular client for the Internet Relay Chat (IRC).
|
||||||
Size = 2.0M
|
Size = 2.0M
|
||||||
Category = 5
|
Category = 5
|
||||||
URLSite = http://www.mirc.com/
|
URLSite = http://www.mirc.com/
|
||||||
URLDownload = http://download.mirc.com/mirc715.exe
|
URLDownload = http://download.mirc.com/mirc717.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
|
|
|
@ -11,6 +11,9 @@ URLSite = http://offbyone.com/
|
||||||
URLDownload = http://offbyone.com/offbyone/images/OffByOneSetup.exe
|
URLDownload = http://offbyone.com/offbyone/images/OffByOneSetup.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
|
[Section.0405]
|
||||||
|
Description = Off-By-One-Browser je velmi malý a rychlý webový prohlížeč s plnou podporou HTML 3.2.
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Der Off-By-One-Browser ist ein sehr kleiner und schneller Webbrowser mit voller HTML 3.2 Unterstützung.
|
Description = Der Off-By-One-Browser ist ein sehr kleiner und schneller Webbrowser mit voller HTML 3.2 Unterstützung.
|
||||||
|
|
||||||
|
|
|
@ -2,15 +2,18 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = Opera
|
Name = Opera
|
||||||
Version = 10.63
|
Version = 11.00
|
||||||
Licence = Freeware
|
Licence = Freeware
|
||||||
Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.
|
Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.
|
||||||
Size = 12.7M
|
Size = 8.9M
|
||||||
Category = 5
|
Category = 5
|
||||||
URLSite = http://www.opera.com/
|
URLSite = http://www.opera.com/
|
||||||
URLDownload = http://get4.opera.com/pub/opera/win/1063/int/Opera_1063_int_Setup.exe
|
URLDownload = http://get4.opera.com/pub/opera/win/1100/int/Opera_1100_int_Setup.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
|
[Section.0405]
|
||||||
|
Description = Populární prohlížeč Opera s mnoha pokročilými vlastnostmi, včetně vestavené podpory pro e-mail a BitTorrent.
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Der populäre Opera Browser mit vielen fortschrittlichen Eigenschaften, enthält einen Mail und BitTorrent Client.
|
Description = Der populäre Opera Browser mit vielen fortschrittlichen Eigenschaften, enthält einen Mail und BitTorrent Client.
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,9 @@ URLSite = http://reactos.org/wiki/Build_Environment
|
||||||
URLDownload = http://ovh.dl.sourceforge.net/project/reactos/RosBE-Windows/i386/1.5.1/RosBE-1.5.1.1.exe
|
URLDownload = http://ovh.dl.sourceforge.net/project/reactos/RosBE-Windows/i386/1.5.1/RosBE-1.5.1.1.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
|
[Section.0405]
|
||||||
|
Description = Dovoluje zkompilovat zdrojový kód systému ReactOS. Pro další detaily viz. ReactOS wiki.
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Erlaubt es Ihnen den ReactOS Source Code zu kompilieren. Im ReactOS-Wiki finden Sie dazu nähere Anweisungen.
|
Description = Erlaubt es Ihnen den ReactOS Source Code zu kompilieren. Im ReactOS-Wiki finden Sie dazu nähere Anweisungen.
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,9 @@ URLSite = http://reactos.org/wiki/Build_Environment/
|
||||||
URLDownload = http://dreimer.bplaced.net/rosbe/RosBE64-1.4b.exe
|
URLDownload = http://dreimer.bplaced.net/rosbe/RosBE64-1.4b.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
|
[Section.0405]
|
||||||
|
Description = Dovoluje zkompilovat zdrojový kód systému ReactOS AMD64. Pro další detaily viz. ReactOS wiki.
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Erlaubt es Ihnen den ReactOS AMD64 Source Code zu kompilieren. Im ReactOS-Wiki finden Sie dazu nähere Anweisungen.
|
Description = Erlaubt es Ihnen den ReactOS AMD64 Source Code zu kompilieren. Im ReactOS-Wiki finden Sie dazu nähere Anweisungen.
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = SciTE
|
Name = SciTE
|
||||||
Version = 2.22
|
Version = 2.23
|
||||||
Licence = Freeware
|
Licence = Freeware
|
||||||
Description = SciTE is a SCIntilla based Text Editor. Originally built to demonstrate Scintilla, it has grown to be a generally useful editor with facilities for building and running programs.
|
Description = SciTE is a SCIntilla based Text Editor. Originally built to demonstrate Scintilla, it has grown to be a generally useful editor with facilities for building and running programs.
|
||||||
Size = 0.6M
|
Size = 0.6M
|
||||||
Category = 7
|
Category = 7
|
||||||
URLSite = http://www.scintilla.org/
|
URLSite = http://www.scintilla.org/
|
||||||
URLDownload = http://kent.dl.sourceforge.net/project/scintilla/SciTE/2.22/Sc222.exe
|
URLDownload = http://kent.dl.sourceforge.net/project/scintilla/SciTE/2.23/Sc223.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = ScummVM
|
Name = ScummVM
|
||||||
Version = 1.2.0
|
Version = 1.2.1
|
||||||
Licence = GPL
|
Licence = GPL
|
||||||
Description = Sam and Max, Day of the Tentacle, etc on ReactOS.
|
Description = Sam and Max, Day of the Tentacle, etc on ReactOS.
|
||||||
Size = 3.5MB
|
Size = 4.0MB
|
||||||
Category = 4
|
Category = 4
|
||||||
URLSite = http://scummvm.org/
|
URLSite = http://scummvm.org/
|
||||||
URLDownload = http://dfn.dl.sourceforge.net/project/scummvm/scummvm/1.2.0/scummvm-1.2.0-win32.exe
|
URLDownload = http://dfn.dl.sourceforge.net/project/scummvm/scummvm/1.2.1/scummvm-1.2.1-win32.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
|
|
|
@ -11,6 +11,9 @@ URLSite = http://www.libsdl.org/projects/SDL_mixer/
|
||||||
URLDownload = http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11-win32.zip
|
URLDownload = http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11-win32.zip
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
|
[Section.0405]
|
||||||
|
Description = Nutný pro spuštění některých open source her. K rozbalení je nutný 7-zip nebo podobný nástroj.
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Erforderlich um einige Open Source Spiele auszuführen. Sie brauchen 7-Zip oder einen ähnlichen Entpacker um es zu entpacken.
|
Description = Erforderlich um einige Open Source Spiele auszuführen. Sie brauchen 7-Zip oder einen ähnlichen Entpacker um es zu entpacken.
|
||||||
|
|
||||||
|
|
|
@ -2,31 +2,31 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = Mozilla SeaMonkey
|
Name = Mozilla SeaMonkey
|
||||||
Version = 2.0.10
|
Version = 2.0.11
|
||||||
Licence = MPL/GPL/LGPL
|
Licence = MPL/GPL/LGPL
|
||||||
Description = Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need.
|
Description = Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need.
|
||||||
Size = 10.1MB
|
Size = 10.1MB
|
||||||
Category = 5
|
Category = 5
|
||||||
URLSite = http://www.seamonkey-project.org/
|
URLSite = http://www.seamonkey-project.org/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/en-US/SeaMonkey%20Setup%202.0.10.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/en-US/SeaMonkey%20Setup%202.0.11.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Mozilla Suite lebt. Dies ist das einzige Browser-, Mail-, Chat- and Composerwerkzeug-Bundle welches Sie benötigen.
|
Description = Mozilla Suite lebt. Dies ist das einzige Browser-, Mail-, Chat- and Composerwerkzeug-Bundle welches Sie benötigen.
|
||||||
Size = 10.0MB
|
Size = 10.0MB
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/de/SeaMonkey%20Setup%202.0.10.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/de/SeaMonkey%20Setup%202.0.11.exe
|
||||||
|
|
||||||
[Section.040a]
|
[Section.040a]
|
||||||
Description = La suite de Mozilla está viva. Es el primero y único navegador web, gestor de correo, lector de noticias, Chat y editor HTML que necesitarás.
|
Description = La suite de Mozilla está viva. Es el primero y único navegador web, gestor de correo, lector de noticias, Chat y editor HTML que necesitarás.
|
||||||
Size = 10.0MB
|
Size = 10.0MB
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/es-ES/SeaMonkey%20Setup%202.0.10.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/es-ES/SeaMonkey%20Setup%202.0.11.exe
|
||||||
|
|
||||||
[Section.0415]
|
[Section.0415]
|
||||||
Description = Pakiet Mozilla żyje. W zestawie: przeglądarka, klient poczty, IRC oraz Edytor HTML - wszystko, czego potrzebujesz.
|
Description = Pakiet Mozilla żyje. W zestawie: przeglądarka, klient poczty, IRC oraz Edytor HTML - wszystko, czego potrzebujesz.
|
||||||
Size = 10.8MB
|
Size = 10.8MB
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/pl/SeaMonkey%20Setup%202.0.10.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/pl/SeaMonkey%20Setup%202.0.11.exe
|
||||||
|
|
||||||
[Section.0419]
|
[Section.0419]
|
||||||
Description = Продолжение Mozilla Suite. Включает браузер, почтовый клиент, IRC-клиент и HTML-редактор.
|
Description = Продолжение Mozilla Suite. Включает браузер, почтовый клиент, IRC-клиент и HTML-редактор.
|
||||||
Size = 10.4MB
|
Size = 10.4MB
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/ru/SeaMonkey%20Setup%202.0.10.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/ru/SeaMonkey%20Setup%202.0.11.exe
|
||||||
|
|
|
@ -2,41 +2,41 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = Mozilla Thunderbird
|
Name = Mozilla Thunderbird
|
||||||
Version = 3.1.6
|
Version = 3.1.7
|
||||||
Licence = MPL/GPL/LGPL
|
Licence = MPL/GPL/LGPL
|
||||||
Description = The most popular and one of the best free Mail Clients out there.
|
Description = The most popular and one of the best free Mail Clients out there.
|
||||||
Size = 9.0M
|
Size = 9.0M
|
||||||
Category = 5
|
Category = 5
|
||||||
URLSite = http://www.mozilla-europe.org/en/products/thunderbird/
|
URLSite = http://www.mozilla-europe.org/en/products/thunderbird/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/en-US/Thunderbird%20Setup%203.1.6.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/en-US/Thunderbird%20Setup%203.1.7.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Der populärste und einer der besten freien Mail-Clients.
|
Description = Der populärste und einer der besten freien Mail-Clients.
|
||||||
Size = 8.8M
|
Size = 8.8M
|
||||||
URLSite = http://www.mozilla-europe.org/de/products/thunderbird/
|
URLSite = http://www.mozilla-europe.org/de/products/thunderbird/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/de/Thunderbird%20Setup%203.1.6.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/de/Thunderbird%20Setup%203.1.7.exe
|
||||||
|
|
||||||
[Section.040a]
|
[Section.040a]
|
||||||
Description = El más popular y uno de los mejores clientes mail que hay.
|
Description = El más popular y uno de los mejores clientes mail que hay.
|
||||||
Size = 8.8M
|
Size = 8.8M
|
||||||
URLSite = http://www.mozilla-europe.org/es/products/thunderbird/
|
URLSite = http://www.mozilla-europe.org/es/products/thunderbird/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/es-ES/Thunderbird%20Setup%203.1.6.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/es-ES/Thunderbird%20Setup%203.1.7.exe
|
||||||
|
|
||||||
[Section.0415]
|
[Section.0415]
|
||||||
Description = Najpopularniejszy i jeden z najlepszych darmowych klientów poczty.
|
Description = Najpopularniejszy i jeden z najlepszych darmowych klientów poczty.
|
||||||
Size = 9.7M
|
Size = 9.7M
|
||||||
URLSite = http://www.mozilla-europe.org/pl/products/thunderbird/
|
URLSite = http://www.mozilla-europe.org/pl/products/thunderbird/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/pl/Thunderbird%20Setup%203.1.6.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/pl/Thunderbird%20Setup%203.1.7.exe
|
||||||
|
|
||||||
[Section.0419]
|
[Section.0419]
|
||||||
Description = Один из самых популярных и лучших бесплатных почтовых клиентов.
|
Description = Один из самых популярных и лучших бесплатных почтовых клиентов.
|
||||||
Size = 9.2M
|
Size = 9.2M
|
||||||
URLSite = http://www.mozilla-europe.org/ru/products/thunderbird/
|
URLSite = http://www.mozilla-europe.org/ru/products/thunderbird/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/ru/Thunderbird%20Setup%203.1.6.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/ru/Thunderbird%20Setup%203.1.7.exe
|
||||||
|
|
||||||
[Section.0422]
|
[Section.0422]
|
||||||
Description = Найпопулярніший та один з кращих поштових клієнтів.
|
Description = Найпопулярніший та один з кращих поштових клієнтів.
|
||||||
Size = 9.2M
|
Size = 9.2M
|
||||||
URLSite = http://www.mozillamessaging.com/uk/thunderbird/
|
URLSite = http://www.mozillamessaging.com/uk/thunderbird/
|
||||||
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/uk/Thunderbird%20Setup%203.1.6.exe
|
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/uk/Thunderbird%20Setup%203.1.7.exe
|
||||||
|
|
|
@ -2,15 +2,18 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = TuxPaint
|
Name = TuxPaint
|
||||||
Version = 0.9.21
|
Version = 0.9.21b
|
||||||
Licence = GPL
|
Licence = GPL
|
||||||
Description = An Open Source bitmap graphics editor geared towards young children.
|
Description = An Open Source bitmap graphics editor geared towards young children.
|
||||||
Size = 10MB
|
Size = 11MB
|
||||||
Category = 3
|
Category = 3
|
||||||
URLSite = http://tuxpaint.org/
|
URLSite = http://tuxpaint.org/
|
||||||
URLDownload = http://ovh.dl.sourceforge.net/project/tuxpaint/tuxpaint/0.9.21/tuxpaint-0.9.21-win32-installer.exe
|
URLDownload = http://ovh.dl.sourceforge.net/project/tuxpaint/tuxpaint/0.9.21b/tuxpaint-0.9.21b-win32-installer.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
|
[Section.0405]
|
||||||
|
Description = Open source bitmapový editor určený dětem.
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
Description = Ein Open Source Bitmap Zeichenprogramm für kleine Kinder.
|
Description = Ein Open Source Bitmap Zeichenprogramm für kleine Kinder.
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
[Section]
|
[Section]
|
||||||
Name = UltraVNC
|
Name = UltraVNC
|
||||||
Version = 1.0.9.1
|
Version = 1.0.9.5
|
||||||
Licence = GPL
|
Licence = GPL
|
||||||
Description = Open-source VNC client/server.
|
Description = Open-source VNC client/server.
|
||||||
Size = 2.0MB
|
Size = 2.1MB
|
||||||
Category = 5
|
Category = 5
|
||||||
URLSite = http://www.uvnc.com/
|
URLSite = http://www.uvnc.com/
|
||||||
URLDownload = http://support1.uvnc.com/download/109/UltraVNC_1.0.9.1_Setup.exe
|
URLDownload = http://support1.uvnc.com/download/1095/UltraVNC_1.0.9.5_Setup.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.040a]
|
[Section.040a]
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "lang/bg-BG.rc"
|
#include "lang/bg-BG.rc"
|
||||||
|
#include "lang/cs-CZ.rc"
|
||||||
#include "lang/de-DE.rc"
|
#include "lang/de-DE.rc"
|
||||||
#include "lang/en-US.rc"
|
#include "lang/en-US.rc"
|
||||||
#include "lang/es-ES.rc"
|
#include "lang/es-ES.rc"
|
||||||
|
|
|
@ -72,7 +72,8 @@ static void ResizeWnd(ChildWnd* pChildWnd, int cx, int cy)
|
||||||
const int tHeight = 18;
|
const int tHeight = 18;
|
||||||
SetRect(&rt, 0, 0, cx, cy);
|
SetRect(&rt, 0, 0, cx, cy);
|
||||||
cy = 0;
|
cy = 0;
|
||||||
if (hStatusBar != NULL) {
|
if (hStatusBar != NULL)
|
||||||
|
{
|
||||||
GetWindowRect(hStatusBar, &rs);
|
GetWindowRect(hStatusBar, &rs);
|
||||||
cy = rs.bottom - rs.top;
|
cy = rs.bottom - rs.top;
|
||||||
}
|
}
|
||||||
|
@ -132,7 +133,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(message);
|
UNREFERENCED_PARAMETER(message);
|
||||||
|
|
||||||
switch (wID) {
|
switch (wID)
|
||||||
|
{
|
||||||
/* Parse the menu selections: */
|
/* Parse the menu selections: */
|
||||||
case ID_REGISTRY_EXIT:
|
case ID_REGISTRY_EXIT:
|
||||||
DestroyWindow(hWnd);
|
DestroyWindow(hWnd);
|
||||||
|
@ -157,8 +159,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
if (keyPath == 0 || *keyPath == 0)
|
if (keyPath == 0 || *keyPath == 0)
|
||||||
{
|
{
|
||||||
MessageBeep(MB_ICONHAND);
|
MessageBeep(MB_ICONHAND);
|
||||||
} else
|
}
|
||||||
if (DeleteKey(hWnd, hRootKey, keyPath))
|
else if (DeleteKey(hWnd, hRootKey, keyPath))
|
||||||
DeleteNode(g_pChildWnd->hTreeWnd, 0);
|
DeleteNode(g_pChildWnd->hTreeWnd, 0);
|
||||||
break;
|
break;
|
||||||
case ID_TREE_EXPORT:
|
case ID_TREE_EXPORT:
|
||||||
|
@ -317,7 +319,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
BOOL Result;
|
BOOL Result;
|
||||||
ChildWnd* pChildWnd = g_pChildWnd;
|
ChildWnd* pChildWnd = g_pChildWnd;
|
||||||
|
|
||||||
switch (message) {
|
switch (message)
|
||||||
|
{
|
||||||
case WM_CREATE:
|
case WM_CREATE:
|
||||||
{
|
{
|
||||||
WNDPROC oldproc;
|
WNDPROC oldproc;
|
||||||
|
@ -362,10 +365,12 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
if(HIWORD(wParam) == BN_CLICKED){
|
if(HIWORD(wParam) == BN_CLICKED)
|
||||||
|
{
|
||||||
PostMessage(pChildWnd->hAddressBarWnd, WM_KEYUP, VK_RETURN, 0);
|
PostMessage(pChildWnd->hAddressBarWnd, WM_KEYUP, VK_RETURN, 0);
|
||||||
}
|
}
|
||||||
else if (!_CmdWndProc(hWnd, message, wParam, lParam)) {
|
else if (!_CmdWndProc(hWnd, message, wParam, lParam))
|
||||||
|
{
|
||||||
goto def;
|
goto def;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -373,11 +378,13 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
OnPaint(hWnd);
|
OnPaint(hWnd);
|
||||||
return 0;
|
return 0;
|
||||||
case WM_SETCURSOR:
|
case WM_SETCURSOR:
|
||||||
if (LOWORD(lParam) == HTCLIENT) {
|
if (LOWORD(lParam) == HTCLIENT)
|
||||||
|
{
|
||||||
POINT pt;
|
POINT pt;
|
||||||
GetCursorPos(&pt);
|
GetCursorPos(&pt);
|
||||||
ScreenToClient(hWnd, &pt);
|
ScreenToClient(hWnd, &pt);
|
||||||
if (pt.x>=pChildWnd->nSplitPos-SPLIT_WIDTH/2 && pt.x<pChildWnd->nSplitPos+SPLIT_WIDTH/2+1) {
|
if (pt.x>=pChildWnd->nSplitPos-SPLIT_WIDTH/2 && pt.x<pChildWnd->nSplitPos+SPLIT_WIDTH/2+1)
|
||||||
|
{
|
||||||
SetCursor(LoadCursor(0, IDC_SIZEWE));
|
SetCursor(LoadCursor(0, IDC_SIZEWE));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -391,11 +398,13 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
pChildWnd = NULL;
|
pChildWnd = NULL;
|
||||||
PostQuitMessage(0);
|
PostQuitMessage(0);
|
||||||
break;
|
break;
|
||||||
case WM_LBUTTONDOWN: {
|
case WM_LBUTTONDOWN:
|
||||||
|
{
|
||||||
RECT rt;
|
RECT rt;
|
||||||
int x = (short)LOWORD(lParam);
|
int x = (short)LOWORD(lParam);
|
||||||
GetClientRect(hWnd, &rt);
|
GetClientRect(hWnd, &rt);
|
||||||
if (x>=pChildWnd->nSplitPos-SPLIT_WIDTH/2 && x<pChildWnd->nSplitPos+SPLIT_WIDTH/2+1) {
|
if (x>=pChildWnd->nSplitPos-SPLIT_WIDTH/2 && x<pChildWnd->nSplitPos+SPLIT_WIDTH/2+1)
|
||||||
|
{
|
||||||
last_split = pChildWnd->nSplitPos;
|
last_split = pChildWnd->nSplitPos;
|
||||||
draw_splitbar(hWnd, last_split);
|
draw_splitbar(hWnd, last_split);
|
||||||
SetCapture(hWnd);
|
SetCapture(hWnd);
|
||||||
|
@ -405,7 +414,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
|
|
||||||
case WM_LBUTTONUP:
|
case WM_LBUTTONUP:
|
||||||
case WM_RBUTTONDOWN:
|
case WM_RBUTTONDOWN:
|
||||||
if (GetCapture() == hWnd) {
|
if (GetCapture() == hWnd)
|
||||||
|
{
|
||||||
finish_splitbar(hWnd, LOWORD(lParam));
|
finish_splitbar(hWnd, LOWORD(lParam));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -417,7 +427,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
|
|
||||||
case WM_KEYDOWN:
|
case WM_KEYDOWN:
|
||||||
if (wParam == VK_ESCAPE)
|
if (wParam == VK_ESCAPE)
|
||||||
if (GetCapture() == hWnd) {
|
if (GetCapture() == hWnd)
|
||||||
|
{
|
||||||
RECT rt;
|
RECT rt;
|
||||||
draw_splitbar(hWnd, last_split);
|
draw_splitbar(hWnd, last_split);
|
||||||
GetClientRect(hWnd, &rt);
|
GetClientRect(hWnd, &rt);
|
||||||
|
@ -429,7 +440,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_MOUSEMOVE:
|
case WM_MOUSEMOVE:
|
||||||
if (GetCapture() == hWnd) {
|
if (GetCapture() == hWnd)
|
||||||
|
{
|
||||||
HDC hdc;
|
HDC hdc;
|
||||||
RECT rt;
|
RECT rt;
|
||||||
HGDIOBJ OldObj;
|
HGDIOBJ OldObj;
|
||||||
|
@ -464,7 +476,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_SETFOCUS:
|
case WM_SETFOCUS:
|
||||||
if (pChildWnd != NULL) {
|
if (pChildWnd != NULL)
|
||||||
|
{
|
||||||
SetFocus(pChildWnd->nFocusPanel? pChildWnd->hListWnd: pChildWnd->hTreeWnd);
|
SetFocus(pChildWnd->nFocusPanel? pChildWnd->hListWnd: pChildWnd->hTreeWnd);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -473,21 +486,26 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
if ((int)wParam == TREE_WINDOW) {
|
if ((int)wParam == TREE_WINDOW)
|
||||||
switch (((LPNMHDR)lParam)->code) {
|
{
|
||||||
|
switch (((LPNMHDR)lParam)->code)
|
||||||
|
{
|
||||||
case TVN_ITEMEXPANDING:
|
case TVN_ITEMEXPANDING:
|
||||||
return !OnTreeExpanding(pChildWnd->hTreeWnd, (NMTREEVIEW*)lParam);
|
return !OnTreeExpanding(pChildWnd->hTreeWnd, (NMTREEVIEW*)lParam);
|
||||||
case TVN_SELCHANGED: {
|
case TVN_SELCHANGED:
|
||||||
|
{
|
||||||
LPCTSTR keyPath, rootName;
|
LPCTSTR keyPath, rootName;
|
||||||
LPTSTR fullPath;
|
LPTSTR fullPath;
|
||||||
HKEY hRootKey;
|
HKEY hRootKey;
|
||||||
|
|
||||||
keyPath = GetItemPath(pChildWnd->hTreeWnd, ((NMTREEVIEW*)lParam)->itemNew.hItem, &hRootKey);
|
keyPath = GetItemPath(pChildWnd->hTreeWnd, ((NMTREEVIEW*)lParam)->itemNew.hItem, &hRootKey);
|
||||||
if (keyPath) {
|
if (keyPath)
|
||||||
|
{
|
||||||
RefreshListView(pChildWnd->hListWnd, hRootKey, keyPath);
|
RefreshListView(pChildWnd->hListWnd, hRootKey, keyPath);
|
||||||
rootName = get_root_key_name(hRootKey);
|
rootName = get_root_key_name(hRootKey);
|
||||||
fullPath = HeapAlloc(GetProcessHeap(), 0, (_tcslen(rootName) + 1 + _tcslen(keyPath) + 1) * sizeof(TCHAR));
|
fullPath = HeapAlloc(GetProcessHeap(), 0, (_tcslen(rootName) + 1 + _tcslen(keyPath) + 1) * sizeof(TCHAR));
|
||||||
if (fullPath) {
|
if (fullPath)
|
||||||
|
{
|
||||||
/* set (correct) the address bar text */
|
/* set (correct) the address bar text */
|
||||||
if(keyPath[0] != '\0')
|
if(keyPath[0] != '\0')
|
||||||
_stprintf(fullPath, _T("%s\\%s"), rootName, keyPath);
|
_stprintf(fullPath, _T("%s\\%s"), rootName, keyPath);
|
||||||
|
@ -573,11 +591,13 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if ((int)wParam == LIST_WINDOW)
|
if ((int)wParam == LIST_WINDOW)
|
||||||
{
|
{
|
||||||
switch (((LPNMHDR)lParam)->code) {
|
switch (((LPNMHDR)lParam)->code)
|
||||||
|
{
|
||||||
case NM_SETFOCUS:
|
case NM_SETFOCUS:
|
||||||
pChildWnd->nFocusPanel = 1;
|
pChildWnd->nFocusPanel = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -745,11 +765,13 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
}
|
}
|
||||||
|
|
||||||
case WM_SIZE:
|
case WM_SIZE:
|
||||||
if (wParam != SIZE_MINIMIZED && pChildWnd != NULL) {
|
if (wParam != SIZE_MINIMIZED && pChildWnd != NULL)
|
||||||
|
{
|
||||||
ResizeWnd(pChildWnd, LOWORD(lParam), HIWORD(lParam));
|
ResizeWnd(pChildWnd, LOWORD(lParam), HIWORD(lParam));
|
||||||
}
|
}
|
||||||
/* fall through */
|
/* fall through */
|
||||||
default: def:
|
default:
|
||||||
|
def:
|
||||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -96,7 +96,8 @@ INT_PTR CALLBACK modify_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
UNREFERENCED_PARAMETER(lParam);
|
||||||
|
|
||||||
switch(uMsg) {
|
switch(uMsg)
|
||||||
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
if(editValueName && _tcscmp(editValueName, _T("")))
|
if(editValueName && _tcscmp(editValueName, _T("")))
|
||||||
{
|
{
|
||||||
|
@ -163,7 +164,8 @@ INT_PTR CALLBACK modify_multi_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wPa
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
UNREFERENCED_PARAMETER(lParam);
|
||||||
|
|
||||||
switch(uMsg) {
|
switch(uMsg)
|
||||||
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
if(editValueName && _tcscmp(editValueName, _T("")))
|
if(editValueName && _tcscmp(editValueName, _T("")))
|
||||||
{
|
{
|
||||||
|
@ -274,7 +276,8 @@ INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LP
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
UNREFERENCED_PARAMETER(lParam);
|
||||||
|
|
||||||
switch(uMsg) {
|
switch(uMsg)
|
||||||
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
dwordEditMode = EDIT_MODE_HEX;
|
dwordEditMode = EDIT_MODE_HEX;
|
||||||
|
|
||||||
|
@ -382,7 +385,8 @@ INT_PTR CALLBACK modify_binary_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
UNREFERENCED_PARAMETER(lParam);
|
||||||
|
|
||||||
switch(uMsg) {
|
switch(uMsg)
|
||||||
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
if(editValueName && _tcscmp(editValueName, _T("")))
|
if(editValueName && _tcscmp(editValueName, _T("")))
|
||||||
{
|
{
|
||||||
|
@ -786,7 +790,8 @@ BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath)
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
|
|
||||||
lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, KEY_READ|KEY_SET_VALUE, &hKey);
|
lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, KEY_READ|KEY_SET_VALUE, &hKey);
|
||||||
if (lRet != ERROR_SUCCESS) {
|
if (lRet != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
error_code_messagebox(hwnd, lRet);
|
error_code_messagebox(hwnd, lRet);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -798,7 +803,8 @@ BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
lRet = SHDeleteKey(hKeyRoot, keyPath);
|
lRet = SHDeleteKey(hKeyRoot, keyPath);
|
||||||
if (lRet != ERROR_SUCCESS) {
|
if (lRet != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
error(hwnd, IDS_BAD_KEY, keyPath);
|
error(hwnd, IDS_BAD_KEY, keyPath);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,8 @@ static void resize_frame_rect(HWND hWnd, PRECT prect)
|
||||||
prect->bottom -= rt.bottom+3;
|
prect->bottom -= rt.bottom+3;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
if (IsWindowVisible(hStatusBar)) {
|
if (IsWindowVisible(hStatusBar))
|
||||||
|
{
|
||||||
SetupStatusBar(hWnd, TRUE);
|
SetupStatusBar(hWnd, TRUE);
|
||||||
GetClientRect(hStatusBar, &rt);
|
GetClientRect(hStatusBar, &rt);
|
||||||
prect->bottom -= rt.bottom;
|
prect->bottom -= rt.bottom;
|
||||||
|
@ -141,12 +142,15 @@ static void OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
|
||||||
TCHAR str[100];
|
TCHAR str[100];
|
||||||
|
|
||||||
_tcscpy(str, _T(""));
|
_tcscpy(str, _T(""));
|
||||||
if (nFlags & MF_POPUP) {
|
if (nFlags & MF_POPUP)
|
||||||
if (hSysMenu != GetMenu(hWnd)) {
|
{
|
||||||
|
if (hSysMenu != GetMenu(hWnd))
|
||||||
|
{
|
||||||
if (nItemID == 2) nItemID = 5;
|
if (nItemID == 2) nItemID = 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (LoadString(hInst, nItemID, str, 100)) {
|
if (LoadString(hInst, nItemID, str, 100))
|
||||||
|
{
|
||||||
/* load appropriate string*/
|
/* load appropriate string*/
|
||||||
LPTSTR lpsz = str;
|
LPTSTR lpsz = str;
|
||||||
/* first newline terminates actual string*/
|
/* first newline terminates actual string*/
|
||||||
|
@ -191,7 +195,8 @@ static BOOL CheckCommDlgError(HWND hWnd)
|
||||||
{
|
{
|
||||||
DWORD dwErrorCode = CommDlgExtendedError();
|
DWORD dwErrorCode = CommDlgExtendedError();
|
||||||
UNREFERENCED_PARAMETER(hWnd);
|
UNREFERENCED_PARAMETER(hWnd);
|
||||||
switch (dwErrorCode) {
|
switch (dwErrorCode)
|
||||||
|
{
|
||||||
case CDERR_DIALOGFAILURE:
|
case CDERR_DIALOGFAILURE:
|
||||||
break;
|
break;
|
||||||
case CDERR_FINDRESFAILURE:
|
case CDERR_FINDRESFAILURE:
|
||||||
|
@ -349,7 +354,9 @@ static BOOL LoadHive(HWND hWnd)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CheckCommDlgError(hWnd);
|
CheckCommDlgError(hWnd);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -395,9 +402,11 @@ static BOOL ImportRegistryFile(HWND hWnd)
|
||||||
ofn.lpstrTitle = Caption;
|
ofn.lpstrTitle = Caption;
|
||||||
ofn.Flags |= OFN_ENABLESIZING;
|
ofn.Flags |= OFN_ENABLESIZING;
|
||||||
/* ofn.lCustData = ;*/
|
/* ofn.lCustData = ;*/
|
||||||
if (GetOpenFileName(&ofn)) {
|
if (GetOpenFileName(&ofn))
|
||||||
|
{
|
||||||
FILE *fp = _wfopen(ofn.lpstrFile, L"r");
|
FILE *fp = _wfopen(ofn.lpstrFile, L"r");
|
||||||
if (fp == NULL || !import_registry_file(fp)) {
|
if (fp == NULL || !import_registry_file(fp))
|
||||||
|
{
|
||||||
LPSTR p = GetMultiByteString(ofn.lpstrFile);
|
LPSTR p = GetMultiByteString(ofn.lpstrFile);
|
||||||
fprintf(stderr, "Can't open file \"%s\"\n", p);
|
fprintf(stderr, "Can't open file \"%s\"\n", p);
|
||||||
HeapFree(GetProcessHeap(), 0, p);
|
HeapFree(GetProcessHeap(), 0, p);
|
||||||
|
@ -406,7 +415,9 @@ static BOOL ImportRegistryFile(HWND hWnd)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CheckCommDlgError(hWnd);
|
CheckCommDlgError(hWnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -429,7 +440,8 @@ static UINT_PTR CALLBACK ExportRegistryFile_OFNHookProc(HWND hdlg, UINT uiMsg, W
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(wParam);
|
UNREFERENCED_PARAMETER(wParam);
|
||||||
|
|
||||||
switch(uiMsg) {
|
switch(uiMsg)
|
||||||
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
pOfn = (OPENFILENAME *) lParam;
|
pOfn = (OPENFILENAME *) lParam;
|
||||||
pszSelectedKey = (LPTSTR) pOfn->lCustData;
|
pszSelectedKey = (LPTSTR) pOfn->lCustData;
|
||||||
|
@ -494,7 +506,8 @@ BOOL ExportRegistryFile(HWND hWnd)
|
||||||
ofn.Flags = OFN_ENABLETEMPLATE | OFN_EXPLORER | OFN_ENABLEHOOK | OFN_OVERWRITEPROMPT;
|
ofn.Flags = OFN_ENABLETEMPLATE | OFN_EXPLORER | OFN_ENABLEHOOK | OFN_OVERWRITEPROMPT;
|
||||||
ofn.lpfnHook = ExportRegistryFile_OFNHookProc;
|
ofn.lpfnHook = ExportRegistryFile_OFNHookProc;
|
||||||
ofn.lpTemplateName = MAKEINTRESOURCE(IDD_EXPORTRANGE);
|
ofn.lpTemplateName = MAKEINTRESOURCE(IDD_EXPORTRANGE);
|
||||||
if (GetSaveFileName(&ofn)) {
|
if (GetSaveFileName(&ofn))
|
||||||
|
{
|
||||||
BOOL result;
|
BOOL result;
|
||||||
DWORD format;
|
DWORD format;
|
||||||
|
|
||||||
|
@ -503,13 +516,16 @@ BOOL ExportRegistryFile(HWND hWnd)
|
||||||
else
|
else
|
||||||
format = REG_FORMAT_4;
|
format = REG_FORMAT_4;
|
||||||
result = export_registry_key(ofn.lpstrFile, ExportKeyPath, format);
|
result = export_registry_key(ofn.lpstrFile, ExportKeyPath, format);
|
||||||
if (!result) {
|
if (!result)
|
||||||
|
{
|
||||||
LPSTR p = GetMultiByteString(ofn.lpstrFile);
|
LPSTR p = GetMultiByteString(ofn.lpstrFile);
|
||||||
fprintf(stderr, "Can't open file \"%s\"\n", p);
|
fprintf(stderr, "Can't open file \"%s\"\n", p);
|
||||||
HeapFree(GetProcessHeap(), 0, p);
|
HeapFree(GetProcessHeap(), 0, p);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CheckCommDlgError(hWnd);
|
CheckCommDlgError(hWnd);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -532,7 +548,8 @@ BOOL PrintRegistryHive(HWND hWnd, LPTSTR path)
|
||||||
pd.nToPage = 0xFFFF;
|
pd.nToPage = 0xFFFF;
|
||||||
pd.nMinPage = 1;
|
pd.nMinPage = 1;
|
||||||
pd.nMaxPage = 0xFFFF;
|
pd.nMaxPage = 0xFFFF;
|
||||||
if (PrintDlg(&pd)) {
|
if (PrintDlg(&pd))
|
||||||
|
{
|
||||||
/* GDI calls to render output. */
|
/* GDI calls to render output. */
|
||||||
DeleteDC(pd.hDC); /* Delete DC when done.*/
|
DeleteDC(pd.hDC); /* Delete DC when done.*/
|
||||||
}
|
}
|
||||||
|
@ -541,8 +558,10 @@ BOOL PrintRegistryHive(HWND hWnd, LPTSTR path)
|
||||||
PRINTDLGEX pd;
|
PRINTDLGEX pd;
|
||||||
|
|
||||||
hResult = PrintDlgEx(&pd);
|
hResult = PrintDlgEx(&pd);
|
||||||
if (hResult == S_OK) {
|
if (hResult == S_OK)
|
||||||
switch (pd.dwResultAction) {
|
{
|
||||||
|
switch (pd.dwResultAction)
|
||||||
|
{
|
||||||
case PD_RESULT_APPLY:
|
case PD_RESULT_APPLY:
|
||||||
/*The user clicked the Apply button and later clicked the Cancel button. This indicates that the user wants to apply the changes made in the property sheet, but does not yet want to print. The PRINTDLGEX structure contains the information specified by the user at the time the Apply button was clicked. */
|
/*The user clicked the Apply button and later clicked the Cancel button. This indicates that the user wants to apply the changes made in the property sheet, but does not yet want to print. The PRINTDLGEX structure contains the information specified by the user at the time the Apply button was clicked. */
|
||||||
break;
|
break;
|
||||||
|
@ -555,8 +574,11 @@ BOOL PrintRegistryHive(HWND hWnd, LPTSTR path)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
switch (hResult) {
|
else
|
||||||
|
{
|
||||||
|
switch (hResult)
|
||||||
|
{
|
||||||
case E_OUTOFMEMORY:
|
case E_OUTOFMEMORY:
|
||||||
/*Insufficient memory. */
|
/*Insufficient memory. */
|
||||||
break;
|
break;
|
||||||
|
@ -664,9 +686,11 @@ static BOOL CreateNewValue(HKEY hRootKey, LPCTSTR pszKeyPath, DWORD dwType)
|
||||||
wsprintf(szNewValue, szNewValueFormat, iIndex++);
|
wsprintf(szNewValue, szNewValueFormat, iIndex++);
|
||||||
cbData = sizeof(data);
|
cbData = sizeof(data);
|
||||||
lResult = RegQueryValueEx(hKey, szNewValue, NULL, &dwExistingType, data, &cbData);
|
lResult = RegQueryValueEx(hKey, szNewValue, NULL, &dwExistingType, data, &cbData);
|
||||||
} while(lResult == ERROR_SUCCESS);
|
}
|
||||||
|
while(lResult == ERROR_SUCCESS);
|
||||||
|
|
||||||
switch(dwType) {
|
switch(dwType)
|
||||||
|
{
|
||||||
case REG_DWORD:
|
case REG_DWORD:
|
||||||
cbData = sizeof(DWORD);
|
cbData = sizeof(DWORD);
|
||||||
break;
|
break;
|
||||||
|
@ -857,7 +881,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
UNREFERENCED_PARAMETER(lParam);
|
||||||
UNREFERENCED_PARAMETER(message);
|
UNREFERENCED_PARAMETER(message);
|
||||||
|
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam))
|
||||||
|
{
|
||||||
case ID_REGISTRY_LOADHIVE:
|
case ID_REGISTRY_LOADHIVE:
|
||||||
LoadHive(hWnd);
|
LoadHive(hWnd);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -942,12 +967,14 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
|
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
|
||||||
valueName = GetValueName(g_pChildWnd->hListWnd, -1);
|
valueName = GetValueName(g_pChildWnd->hListWnd, -1);
|
||||||
if (keyPath) {
|
if (keyPath)
|
||||||
|
{
|
||||||
lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, regsam, &hKey);
|
lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, regsam, &hKey);
|
||||||
if (lRet != ERROR_SUCCESS) hKey = 0;
|
if (lRet != ERROR_SUCCESS) hKey = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam))
|
||||||
|
{
|
||||||
case ID_EDIT_MODIFY:
|
case ID_EDIT_MODIFY:
|
||||||
if (valueName && ModifyValue(hWnd, hKey, valueName, FALSE))
|
if (valueName && ModifyValue(hWnd, hKey, valueName, FALSE))
|
||||||
RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath);
|
RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath);
|
||||||
|
@ -1017,8 +1044,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
if (keyPath == 0 || *keyPath == 0)
|
if (keyPath == 0 || *keyPath == 0)
|
||||||
{
|
{
|
||||||
MessageBeep(MB_ICONHAND);
|
MessageBeep(MB_ICONHAND);
|
||||||
} else
|
}
|
||||||
if (DeleteKey(hWnd, hKeyRoot, keyPath))
|
else if (DeleteKey(hWnd, hKeyRoot, keyPath))
|
||||||
{
|
{
|
||||||
DeleteNode(g_pChildWnd->hTreeWnd, 0);
|
DeleteNode(g_pChildWnd->hTreeWnd, 0);
|
||||||
RefreshTreeView(g_pChildWnd->hTreeWnd);
|
RefreshTreeView(g_pChildWnd->hTreeWnd);
|
||||||
|
@ -1118,7 +1145,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
switch (message) {
|
switch (message)
|
||||||
|
{
|
||||||
case WM_CREATE:
|
case WM_CREATE:
|
||||||
CreateWindowEx(0, szChildClass, NULL, WS_CHILD | WS_VISIBLE,
|
CreateWindowEx(0, szChildClass, NULL, WS_CHILD | WS_VISIBLE,
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
|
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
//Íåäîâúðøåí
|
||||||
/*
|
/*
|
||||||
* Regedit resources
|
* Regedit resources
|
||||||
*
|
*
|
||||||
|
@ -135,8 +136,8 @@ BEGIN
|
||||||
MENUITEM "&Íèçîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE
|
MENUITEM "&Íèçîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE
|
||||||
MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE
|
MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE
|
||||||
MENUITEM "&Ñòîéíîñò íà äâîéíà äóìà", ID_EDIT_NEW_DWORDVALUE
|
MENUITEM "&Ñòîéíîñò íà äâîéíà äóìà", ID_EDIT_NEW_DWORDVALUE
|
||||||
MENUITEM "&Multi-String Value", ID_EDIT_NEW_MULTISTRINGVALUE
|
MENUITEM "&Ìíîãîíèçîâà ñòîéíîñò", ID_EDIT_NEW_MULTISTRINGVALUE
|
||||||
MENUITEM "&Expandable String Value", ID_EDIT_NEW_EXPANDABLESTRINGVALUE
|
MENUITEM "&Ðàçøèðèìà ìíîãîíèçîâà ñòîéíîñò", ID_EDIT_NEW_EXPANDABLESTRINGVALUE
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
POPUP ""
|
POPUP ""
|
||||||
|
@ -149,8 +150,8 @@ BEGIN
|
||||||
MENUITEM "&Íèçîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE
|
MENUITEM "&Íèçîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE
|
||||||
MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE
|
MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE
|
||||||
MENUITEM "&Ñòîéíîñò íà äâîéíà äóìà", ID_EDIT_NEW_DWORDVALUE
|
MENUITEM "&Ñòîéíîñò íà äâîéíà äóìà", ID_EDIT_NEW_DWORDVALUE
|
||||||
MENUITEM "&Multi-String Value", ID_EDIT_NEW_MULTISTRINGVALUE
|
MENUITEM "&Ìíîãîíèçîâà ñòîéíîñò", ID_EDIT_NEW_MULTISTRINGVALUE
|
||||||
MENUITEM "&Expandable String Value", ID_EDIT_NEW_EXPANDABLESTRINGVALUE
|
MENUITEM "&Ðàçøèðèìà ìíîãîíèçîâà ñòîéíîñò", ID_EDIT_NEW_EXPANDABLESTRINGVALUE
|
||||||
END
|
END
|
||||||
MENUITEM "&Òúðñåíå", ID_EDIT_FIND
|
MENUITEM "&Òúðñåíå", ID_EDIT_FIND
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
|
@ -165,11 +166,11 @@ BEGIN
|
||||||
POPUP ""
|
POPUP ""
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "C&ut", ID_HEXEDIT_CUT
|
MENUITEM "C&ut", ID_HEXEDIT_CUT
|
||||||
MENUITEM "&Copy", ID_HEXEDIT_COPY
|
MENUITEM "Çà&ïîìíÿíå", ID_HEXEDIT_COPY
|
||||||
MENUITEM "&Paste", ID_HEXEDIT_PASTE
|
MENUITEM "&Ïîñòàâÿíå", ID_HEXEDIT_PASTE
|
||||||
MENUITEM "&Delete", ID_HEXEDIT_DELETE
|
MENUITEM "Èç&òðèâàíå", ID_HEXEDIT_DELETE
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Select &All", ID_HEXEDIT_SELECT_ALL
|
MENUITEM "Èçáîð íà âñè&÷êè", ID_HEXEDIT_SELECT_ALL
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -182,10 +183,10 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "Load Hive"
|
CAPTION "Load Hive"
|
||||||
FONT 8, "Ms Shell Dlg"
|
FONT 8, "Ms Shell Dlg"
|
||||||
{
|
{
|
||||||
LTEXT "&Key:", IDC_STATIC, 4, 4, 15, 8, SS_LEFT
|
LTEXT "&Êëàâèø:", IDC_STATIC, 4, 4, 15, 8, SS_LEFT
|
||||||
EDITTEXT IDC_EDIT_KEY, 23, 2, 167, 13
|
EDITTEXT IDC_EDIT_KEY, 23, 2, 167, 13
|
||||||
DEFPUSHBUTTON "OK", IDOK, 140, 17, 50, 14
|
DEFPUSHBUTTON "Äîáðå", IDOK, 140, 17, 50, 14
|
||||||
PUSHBUTTON "Cancel", IDCANCEL, 89, 17, 50, 14
|
PUSHBUTTON "Îòêàç", IDCANCEL, 89, 17, 50, 14
|
||||||
}
|
}
|
||||||
|
|
||||||
IDD_EDIT_STRING DIALOGEX 32, 24, 252, 84
|
IDD_EDIT_STRING DIALOGEX 32, 24, 252, 84
|
||||||
|
|
|
@ -162,8 +162,10 @@ static void AddEntryToList(HWND hwndLV, LPTSTR Name, DWORD dwValType, void* ValB
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
index = ListView_InsertItem(hwndLV, &item);
|
index = ListView_InsertItem(hwndLV, &item);
|
||||||
if (index != -1) {
|
if (index != -1)
|
||||||
switch (dwValType) {
|
{
|
||||||
|
switch (dwValType)
|
||||||
|
{
|
||||||
case REG_SZ:
|
case REG_SZ:
|
||||||
case REG_EXPAND_SZ:
|
case REG_EXPAND_SZ:
|
||||||
if(dwCount > 0)
|
if(dwCount > 0)
|
||||||
|
@ -205,7 +207,8 @@ static void AddEntryToList(HWND hwndLV, LPTSTR Name, DWORD dwValType, void* ValB
|
||||||
ListView_SetItemText(hwndLV, index, 2, _T(""));
|
ListView_SetItemText(hwndLV, index, 2, _T(""));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case REG_DWORD: {
|
case REG_DWORD:
|
||||||
|
{
|
||||||
TCHAR buf[200];
|
TCHAR buf[200];
|
||||||
if(dwCount == sizeof(DWORD))
|
if(dwCount == sizeof(DWORD))
|
||||||
{
|
{
|
||||||
|
@ -258,7 +261,8 @@ static BOOL CreateListColumns(HWND hWndListView)
|
||||||
lvC.pszText = szText;
|
lvC.pszText = szText;
|
||||||
|
|
||||||
/* Load the column labels from the resource file. */
|
/* Load the column labels from the resource file. */
|
||||||
for (index = 0; index < MAX_LIST_COLUMNS; index++) {
|
for (index = 0; index < MAX_LIST_COLUMNS; index++)
|
||||||
|
{
|
||||||
lvC.iSubItem = index;
|
lvC.iSubItem = index;
|
||||||
lvC.cx = default_column_widths[index];
|
lvC.cx = default_column_widths[index];
|
||||||
lvC.fmt = column_alignment[index];
|
lvC.fmt = column_alignment[index];
|
||||||
|
@ -306,13 +310,15 @@ static void OnGetDispInfo(NMLVDISPINFO* plvdi)
|
||||||
plvdi->item.pszText = NULL;
|
plvdi->item.pszText = NULL;
|
||||||
plvdi->item.cchTextMax = 0;
|
plvdi->item.cchTextMax = 0;
|
||||||
|
|
||||||
switch (plvdi->item.iSubItem) {
|
switch (plvdi->item.iSubItem)
|
||||||
|
{
|
||||||
case 0:
|
case 0:
|
||||||
LoadString(hInst, IDS_DEFAULT_VALUE_NAME, buffer, sizeof(buffer)/sizeof(TCHAR));
|
LoadString(hInst, IDS_DEFAULT_VALUE_NAME, buffer, sizeof(buffer)/sizeof(TCHAR));
|
||||||
plvdi->item.pszText = buffer;
|
plvdi->item.pszText = buffer;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
switch (((LINE_INFO*)plvdi->item.lParam)->dwValType) {
|
switch (((LINE_INFO*)plvdi->item.lParam)->dwValType)
|
||||||
|
{
|
||||||
case REG_NONE:
|
case REG_NONE:
|
||||||
plvdi->item.pszText = _T("REG_NONE");
|
plvdi->item.pszText = _T("REG_NONE");
|
||||||
break;
|
break;
|
||||||
|
@ -349,7 +355,8 @@ static void OnGetDispInfo(NMLVDISPINFO* plvdi)
|
||||||
case REG_QWORD: /* REG_QWORD_LITTLE_ENDIAN */
|
case REG_QWORD: /* REG_QWORD_LITTLE_ENDIAN */
|
||||||
plvdi->item.pszText = _T("REG_QWORD");
|
plvdi->item.pszText = _T("REG_QWORD");
|
||||||
break;
|
break;
|
||||||
default: {
|
default:
|
||||||
|
{
|
||||||
TCHAR buf2[200];
|
TCHAR buf2[200];
|
||||||
LoadString(hInst, IDS_UNKNOWN_TYPE, buf2, sizeof(buf2)/sizeof(TCHAR));
|
LoadString(hInst, IDS_UNKNOWN_TYPE, buf2, sizeof(buf2)/sizeof(TCHAR));
|
||||||
wsprintf(buffer, buf2, ((LINE_INFO*)plvdi->item.lParam)->dwValType);
|
wsprintf(buffer, buf2, ((LINE_INFO*)plvdi->item.lParam)->dwValType);
|
||||||
|
@ -377,7 +384,8 @@ static int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSor
|
||||||
|
|
||||||
if (g_columnToSort == 1 && l->dwValType != r->dwValType)
|
if (g_columnToSort == 1 && l->dwValType != r->dwValType)
|
||||||
return g_invertSort ? (int)r->dwValType - (int)l->dwValType : (int)l->dwValType - (int)r->dwValType;
|
return g_invertSort ? (int)r->dwValType - (int)l->dwValType : (int)l->dwValType - (int)r->dwValType;
|
||||||
if (g_columnToSort == 2) {
|
if (g_columnToSort == 2)
|
||||||
|
{
|
||||||
/* FIXME: Sort on value */
|
/* FIXME: Sort on value */
|
||||||
}
|
}
|
||||||
return g_invertSort ? _tcsicmp(r->name, l->name) : _tcsicmp(l->name, r->name);
|
return g_invertSort ? _tcsicmp(r->name, l->name) : _tcsicmp(l->name, r->name);
|
||||||
|
@ -388,14 +396,16 @@ BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result)
|
||||||
NMLVDISPINFO* Info;
|
NMLVDISPINFO* Info;
|
||||||
UNREFERENCED_PARAMETER(wParam);
|
UNREFERENCED_PARAMETER(wParam);
|
||||||
*Result = TRUE;
|
*Result = TRUE;
|
||||||
switch (((LPNMHDR)lParam)->code) {
|
switch (((LPNMHDR)lParam)->code)
|
||||||
|
{
|
||||||
case LVN_GETDISPINFO:
|
case LVN_GETDISPINFO:
|
||||||
OnGetDispInfo((NMLVDISPINFO*)lParam);
|
OnGetDispInfo((NMLVDISPINFO*)lParam);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
case LVN_COLUMNCLICK:
|
case LVN_COLUMNCLICK:
|
||||||
if (g_columnToSort == (DWORD)((LPNMLISTVIEW)lParam)->iSubItem)
|
if (g_columnToSort == (DWORD)((LPNMLISTVIEW)lParam)->iSubItem)
|
||||||
g_invertSort = !g_invertSort;
|
g_invertSort = !g_invertSort;
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
g_columnToSort = ((LPNMLISTVIEW)lParam)->iSubItem;
|
g_columnToSort = ((LPNMLISTVIEW)lParam)->iSubItem;
|
||||||
g_invertSort = FALSE;
|
g_invertSort = FALSE;
|
||||||
}
|
}
|
||||||
|
@ -503,7 +513,8 @@ void DestroyListView(HWND hwndLV)
|
||||||
LVITEM item;
|
LVITEM item;
|
||||||
|
|
||||||
count = ListView_GetItemCount(hwndLV);
|
count = ListView_GetItemCount(hwndLV);
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++)
|
||||||
|
{
|
||||||
item.mask = LVIF_PARAM;
|
item.mask = LVIF_PARAM;
|
||||||
item.iItem = i;
|
item.iItem = i;
|
||||||
(void)ListView_GetItem(hwndLV, &item);
|
(void)ListView_GetItem(hwndLV, &item);
|
||||||
|
@ -555,7 +566,8 @@ BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCTSTR keyPath)
|
||||||
/* AddEntryToList(hwndLV, _T("(Default)"), dwValType, ValBuf, dwValSize); */
|
/* AddEntryToList(hwndLV, _T("(Default)"), dwValType, ValBuf, dwValSize); */
|
||||||
/* } */
|
/* } */
|
||||||
/* dwValSize = max_val_size; */
|
/* dwValSize = max_val_size; */
|
||||||
while (RegEnumValue(hNewKey, dwIndex, ValName, &dwValNameLen, NULL, &dwValType, ValBuf, &dwValSize) == ERROR_SUCCESS) {
|
while (RegEnumValue(hNewKey, dwIndex, ValName, &dwValNameLen, NULL, &dwValType, ValBuf, &dwValSize) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
/* Add a terminating 0 character. Usually this is only necessary for strings. */
|
/* Add a terminating 0 character. Usually this is only necessary for strings. */
|
||||||
ValBuf[dwValSize] = 0;
|
ValBuf[dwValSize] = 0;
|
||||||
#ifdef UNICODE
|
#ifdef UNICODE
|
||||||
|
|
|
@ -129,14 +129,16 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
|
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
|
||||||
NULL, hMenuFrame, hInstance, NULL/*lpParam*/);
|
NULL, hMenuFrame, hInstance, NULL/*lpParam*/);
|
||||||
|
|
||||||
if (!hFrameWnd) {
|
if (!hFrameWnd)
|
||||||
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create the status bar */
|
/* Create the status bar */
|
||||||
hStatusBar = CreateStatusWindow(WS_VISIBLE|WS_CHILD|WS_CLIPSIBLINGS|SBT_NOBORDERS,
|
hStatusBar = CreateStatusWindow(WS_VISIBLE|WS_CHILD|WS_CLIPSIBLINGS|SBT_NOBORDERS,
|
||||||
_T(""), hFrameWnd, STATUS_WINDOW);
|
_T(""), hFrameWnd, STATUS_WINDOW);
|
||||||
if (hStatusBar) {
|
if (hStatusBar)
|
||||||
|
{
|
||||||
/* Create the status bar panes */
|
/* Create the status bar panes */
|
||||||
SetupStatusBar(hFrameWnd, FALSE);
|
SetupStatusBar(hFrameWnd, FALSE);
|
||||||
CheckMenuItem(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND|MF_CHECKED);
|
CheckMenuItem(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND|MF_CHECKED);
|
||||||
|
@ -159,7 +161,8 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
||||||
/* we need to destroy the main menu before destroying the main window
|
/* we need to destroy the main menu before destroying the main window
|
||||||
to avoid a memory leak */
|
to avoid a memory leak */
|
||||||
|
|
||||||
void DestroyMainMenu() {
|
void DestroyMainMenu()
|
||||||
|
{
|
||||||
DestroyMenu(hMenuFrame);
|
DestroyMenu(hMenuFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,7 +195,8 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(hPrevInstance);
|
UNREFERENCED_PARAMETER(hPrevInstance);
|
||||||
|
|
||||||
if (ProcessCmdLine(lpCmdLine)) {
|
if (ProcessCmdLine(lpCmdLine))
|
||||||
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,15 +209,18 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||||
hInst = hInstance;
|
hInst = hInstance;
|
||||||
|
|
||||||
/* Perform application initialization */
|
/* Perform application initialization */
|
||||||
if (!InitInstance(hInstance, nCmdShow)) {
|
if (!InitInstance(hInstance, nCmdShow))
|
||||||
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCEL));
|
hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCEL));
|
||||||
|
|
||||||
/* Main message loop */
|
/* Main message loop */
|
||||||
while (GetMessage(&msg, (HWND)NULL, 0, 0)) {
|
while (GetMessage(&msg, (HWND)NULL, 0, 0))
|
||||||
|
{
|
||||||
if (!TranslateAccelerator(hFrameWnd, hAccel, &msg)
|
if (!TranslateAccelerator(hFrameWnd, hAccel, &msg)
|
||||||
&& !TranslateChildTabMessage(&msg)) {
|
&& !TranslateChildTabMessage(&msg))
|
||||||
|
{
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,8 @@ extern HINSTANCE hInst;
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
enum OPTION_FLAGS {
|
enum OPTION_FLAGS
|
||||||
|
{
|
||||||
OPTIONS_AUTO_REFRESH = 0x01,
|
OPTIONS_AUTO_REFRESH = 0x01,
|
||||||
OPTIONS_READ_ONLY_MODE = 0x02,
|
OPTIONS_READ_ONLY_MODE = 0x02,
|
||||||
OPTIONS_CONFIRM_ON_DELETE = 0x04,
|
OPTIONS_CONFIRM_ON_DELETE = 0x04,
|
||||||
|
@ -53,7 +54,8 @@ enum OPTION_FLAGS {
|
||||||
OPTIONS_VIEW_DATA_ONLY = 0x40,
|
OPTIONS_VIEW_DATA_ONLY = 0x40,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
HWND hTreeWnd;
|
HWND hTreeWnd;
|
||||||
HWND hListWnd;
|
HWND hListWnd;
|
||||||
|
|
|
@ -52,7 +52,8 @@ static const char *usage =
|
||||||
"This program is command-line compatible with Microsoft Windows\n"
|
"This program is command-line compatible with Microsoft Windows\n"
|
||||||
"regedit.\n";
|
"regedit.\n";
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
ACTION_UNDEF, ACTION_ADD, ACTION_EXPORT, ACTION_DELETE
|
ACTION_UNDEF, ACTION_ADD, ACTION_EXPORT, ACTION_DELETE
|
||||||
} REGEDIT_ACTION;
|
} REGEDIT_ACTION;
|
||||||
|
|
||||||
|
@ -79,40 +80,52 @@ void get_file_name(LPWSTR *command_line, LPWSTR file_name)
|
||||||
int pos = 0; /* position of pointer "s" in *command_line */
|
int pos = 0; /* position of pointer "s" in *command_line */
|
||||||
file_name[0] = 0;
|
file_name[0] = 0;
|
||||||
|
|
||||||
if (!s[0]) {
|
if (!s[0])
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s[0] == L'"') {
|
if (s[0] == L'"')
|
||||||
|
{
|
||||||
s++;
|
s++;
|
||||||
(*command_line)++;
|
(*command_line)++;
|
||||||
while(s[0] != L'"') {
|
while(s[0] != L'"')
|
||||||
if (!s[0]) {
|
{
|
||||||
|
if (!s[0])
|
||||||
|
{
|
||||||
fprintf(stderr, "%s: Unexpected end of file name!\n", getAppName());
|
fprintf(stderr, "%s: Unexpected end of file name!\n", getAppName());
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
s++;
|
s++;
|
||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
while(s[0] && !iswspace(s[0])) {
|
else
|
||||||
|
{
|
||||||
|
while(s[0] && !iswspace(s[0]))
|
||||||
|
{
|
||||||
s++;
|
s++;
|
||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
memcpy(file_name, *command_line, pos * sizeof((*command_line)[0]));
|
memcpy(file_name, *command_line, pos * sizeof((*command_line)[0]));
|
||||||
/* remove the last backslash */
|
/* remove the last backslash */
|
||||||
if (file_name[pos - 1] == L'\\') {
|
if (file_name[pos - 1] == L'\\')
|
||||||
|
{
|
||||||
file_name[pos - 1] = L'\0';
|
file_name[pos - 1] = L'\0';
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
file_name[pos] = L'\0';
|
file_name[pos] = L'\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s[0]) {
|
if (s[0])
|
||||||
|
{
|
||||||
s++;
|
s++;
|
||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
while(s[0] && iswspace(s[0])) {
|
while(s[0] && iswspace(s[0]))
|
||||||
|
{
|
||||||
s++;
|
s++;
|
||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
|
@ -121,19 +134,23 @@ void get_file_name(LPWSTR *command_line, LPWSTR file_name)
|
||||||
|
|
||||||
BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
|
BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
|
||||||
{
|
{
|
||||||
switch (action) {
|
switch (action)
|
||||||
case ACTION_ADD: {
|
{
|
||||||
|
case ACTION_ADD:
|
||||||
|
{
|
||||||
WCHAR filename[MAX_PATH];
|
WCHAR filename[MAX_PATH];
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
|
||||||
get_file_name(&s, filename);
|
get_file_name(&s, filename);
|
||||||
if (!filename[0]) {
|
if (!filename[0])
|
||||||
|
{
|
||||||
fprintf(stderr, "%s: No file name is specified\n", getAppName());
|
fprintf(stderr, "%s: No file name is specified\n", getAppName());
|
||||||
fprintf(stderr, usage);
|
fprintf(stderr, usage);
|
||||||
exit(4);
|
exit(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
while(filename[0]) {
|
while(filename[0])
|
||||||
|
{
|
||||||
fp = _wfopen(filename, L"r");
|
fp = _wfopen(filename, L"r");
|
||||||
if (fp == NULL)
|
if (fp == NULL)
|
||||||
{
|
{
|
||||||
|
@ -148,10 +165,12 @@ BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ACTION_DELETE: {
|
case ACTION_DELETE:
|
||||||
|
{
|
||||||
WCHAR reg_key_name[KEY_MAX_LEN];
|
WCHAR reg_key_name[KEY_MAX_LEN];
|
||||||
get_file_name(&s, reg_key_name);
|
get_file_name(&s, reg_key_name);
|
||||||
if (!reg_key_name[0]) {
|
if (!reg_key_name[0])
|
||||||
|
{
|
||||||
fprintf(stderr, "%s: No registry key is specified for removal\n", getAppName());
|
fprintf(stderr, "%s: No registry key is specified for removal\n", getAppName());
|
||||||
fprintf(stderr, usage);
|
fprintf(stderr, usage);
|
||||||
exit(6);
|
exit(6);
|
||||||
|
@ -159,22 +178,27 @@ BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
|
||||||
delete_registry_key(reg_key_name);
|
delete_registry_key(reg_key_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ACTION_EXPORT: {
|
case ACTION_EXPORT:
|
||||||
|
{
|
||||||
WCHAR filename[MAX_PATH];
|
WCHAR filename[MAX_PATH];
|
||||||
|
|
||||||
filename[0] = _T('\0');
|
filename[0] = _T('\0');
|
||||||
get_file_name(&s, filename);
|
get_file_name(&s, filename);
|
||||||
if (!filename[0]) {
|
if (!filename[0])
|
||||||
|
{
|
||||||
fprintf(stderr, "%s: No file name is specified\n", getAppName());
|
fprintf(stderr, "%s: No file name is specified\n", getAppName());
|
||||||
fprintf(stderr, usage);
|
fprintf(stderr, usage);
|
||||||
exit(7);
|
exit(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s[0]) {
|
if (s[0])
|
||||||
|
{
|
||||||
WCHAR reg_key_name[KEY_MAX_LEN];
|
WCHAR reg_key_name[KEY_MAX_LEN];
|
||||||
get_file_name(&s, reg_key_name);
|
get_file_name(&s, reg_key_name);
|
||||||
export_registry_key(filename, reg_key_name, REG_FORMAT_4);
|
export_registry_key(filename, reg_key_name, REG_FORMAT_4);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
export_registry_key(filename, NULL, REG_FORMAT_4);
|
export_registry_key(filename, NULL, REG_FORMAT_4);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -196,9 +220,12 @@ BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
|
||||||
*/
|
*/
|
||||||
static void error_unknown_switch(WCHAR chu, LPWSTR s)
|
static void error_unknown_switch(WCHAR chu, LPWSTR s)
|
||||||
{
|
{
|
||||||
if (iswalpha(chu)) {
|
if (iswalpha(chu))
|
||||||
|
{
|
||||||
fprintf(stderr, "%s: Undefined switch /%c!\n", getAppName(), chu);
|
fprintf(stderr, "%s: Undefined switch /%c!\n", getAppName(), chu);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
fprintf(stderr, "%s: Alphabetic character is expected after '%c' "
|
fprintf(stderr, "%s: Alphabetic character is expected after '%c' "
|
||||||
"in swit ch specification\n", getAppName(), *(s - 1));
|
"in swit ch specification\n", getAppName(), *(s - 1));
|
||||||
}
|
}
|
||||||
|
@ -220,12 +247,16 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine)
|
||||||
ch = *s;
|
ch = *s;
|
||||||
ch2 = *(s + 1);
|
ch2 = *(s + 1);
|
||||||
chu = (WCHAR)towupper(ch);
|
chu = (WCHAR)towupper(ch);
|
||||||
if (!ch2 || iswspace(ch2)) {
|
if (!ch2 || iswspace(ch2))
|
||||||
|
{
|
||||||
if (chu == L'S' || chu == L'V')
|
if (chu == L'S' || chu == L'V')
|
||||||
{
|
{
|
||||||
/* ignore these switches */
|
/* ignore these switches */
|
||||||
} else {
|
}
|
||||||
switch (chu) {
|
else
|
||||||
|
{
|
||||||
|
switch (chu)
|
||||||
|
{
|
||||||
case L'D':
|
case L'D':
|
||||||
action = ACTION_DELETE;
|
action = ACTION_DELETE;
|
||||||
break;
|
break;
|
||||||
|
@ -242,14 +273,19 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s++;
|
s++;
|
||||||
} else {
|
}
|
||||||
if (ch2 == L':') {
|
else
|
||||||
switch (chu) {
|
{
|
||||||
|
if (ch2 == L':')
|
||||||
|
{
|
||||||
|
switch (chu)
|
||||||
|
{
|
||||||
case L'L':
|
case L'L':
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case L'R':
|
case L'R':
|
||||||
s += 2;
|
s += 2;
|
||||||
while (*s && !iswspace(*s)) {
|
while (*s && !iswspace(*s))
|
||||||
|
{
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -257,7 +293,9 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine)
|
||||||
error_unknown_switch(chu, s);
|
error_unknown_switch(chu, s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
/* this is a file name, starting from '/' */
|
/* this is a file name, starting from '/' */
|
||||||
s--;
|
s--;
|
||||||
break;
|
break;
|
||||||
|
@ -265,7 +303,8 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine)
|
||||||
}
|
}
|
||||||
/* skip spaces to the next parameter */
|
/* skip spaces to the next parameter */
|
||||||
ch = *s;
|
ch = *s;
|
||||||
while (ch && iswspace(ch)) {
|
while (ch && iswspace(ch))
|
||||||
|
{
|
||||||
s++;
|
s++;
|
||||||
ch = *s;
|
ch = *s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,22 +30,25 @@
|
||||||
*/
|
*/
|
||||||
#define REG_FILE_HEX_LINE_LEN (2 + 25 * 3)
|
#define REG_FILE_HEX_LINE_LEN (2 + 25 * 3)
|
||||||
|
|
||||||
static const CHAR *reg_class_names[] = {
|
static const CHAR *reg_class_names[] =
|
||||||
|
{
|
||||||
"HKEY_LOCAL_MACHINE", "HKEY_USERS", "HKEY_CLASSES_ROOT",
|
"HKEY_LOCAL_MACHINE", "HKEY_USERS", "HKEY_CLASSES_ROOT",
|
||||||
"HKEY_CURRENT_CONFIG", "HKEY_CURRENT_USER", "HKEY_DYN_DATA"
|
"HKEY_CURRENT_CONFIG", "HKEY_CURRENT_USER", "HKEY_DYN_DATA"
|
||||||
};
|
};
|
||||||
|
|
||||||
#define REG_CLASS_NUMBER (sizeof(reg_class_names) / sizeof(reg_class_names[0]))
|
#define REG_CLASS_NUMBER (sizeof(reg_class_names) / sizeof(reg_class_names[0]))
|
||||||
|
|
||||||
const WCHAR* reg_class_namesW[REG_CLASS_NUMBER] = {
|
const WCHAR* reg_class_namesW[REG_CLASS_NUMBER] =
|
||||||
|
{
|
||||||
L"HKEY_LOCAL_MACHINE", L"HKEY_USERS", L"HKEY_CLASSES_ROOT",
|
L"HKEY_LOCAL_MACHINE", L"HKEY_USERS", L"HKEY_CLASSES_ROOT",
|
||||||
L"HKEY_CURRENT_CONFIG", L"HKEY_CURRENT_USER", L"HKEY_DYN_DATA"
|
L"HKEY_CURRENT_CONFIG", L"HKEY_CURRENT_USER", L"HKEY_DYN_DATA"
|
||||||
};
|
};
|
||||||
|
|
||||||
static HKEY reg_class_keys[REG_CLASS_NUMBER] = {
|
static HKEY reg_class_keys[REG_CLASS_NUMBER] =
|
||||||
|
{
|
||||||
HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT,
|
HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT,
|
||||||
HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_DYN_DATA
|
HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_DYN_DATA
|
||||||
};
|
};
|
||||||
|
|
||||||
/* return values */
|
/* return values */
|
||||||
#define NOT_ENOUGH_MEMORY 1
|
#define NOT_ENOUGH_MEMORY 1
|
||||||
|
@ -149,7 +152,8 @@ static BOOL convertHexToDWord(WCHAR* str, DWORD *dw)
|
||||||
char dummy;
|
char dummy;
|
||||||
|
|
||||||
WideCharToMultiByte(CP_ACP, 0, str, -1, buf, 9, NULL, NULL);
|
WideCharToMultiByte(CP_ACP, 0, str, -1, buf, 9, NULL, NULL);
|
||||||
if (lstrlenW(str) > 8 || sscanf(buf, "%lx%c", dw, &dummy) != 1) {
|
if (lstrlenW(str) > 8 || sscanf(buf, "%lx%c", dw, &dummy) != 1)
|
||||||
|
{
|
||||||
fprintf(stderr,"%s: ERROR, invalid hex value\n", getAppName());
|
fprintf(stderr,"%s: ERROR, invalid hex value\n", getAppName());
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -172,12 +176,14 @@ static BYTE* convertHexCSVToHex(WCHAR *str, DWORD *size)
|
||||||
s = str;
|
s = str;
|
||||||
d = data;
|
d = data;
|
||||||
*size=0;
|
*size=0;
|
||||||
while (*s != '\0') {
|
while (*s != '\0')
|
||||||
|
{
|
||||||
UINT wc;
|
UINT wc;
|
||||||
WCHAR *end;
|
WCHAR *end;
|
||||||
|
|
||||||
wc = wcstoul(s,&end, 16);
|
wc = wcstoul(s,&end, 16);
|
||||||
if (end == s || wc > 0xff || (*end && *end != L',')) {
|
if (end == s || wc > 0xff || (*end && *end != L','))
|
||||||
|
{
|
||||||
char* strA = GetMultiByteString(s);
|
char* strA = GetMultiByteString(s);
|
||||||
fprintf(stderr,"%s: ERROR converting CSV hex stream. Invalid value at '%s'\n",
|
fprintf(stderr,"%s: ERROR converting CSV hex stream. Invalid value at '%s'\n",
|
||||||
getAppName(), strA);
|
getAppName(), strA);
|
||||||
|
@ -203,7 +209,13 @@ static BYTE* convertHexCSVToHex(WCHAR *str, DWORD *size)
|
||||||
*/
|
*/
|
||||||
static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
|
static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
|
||||||
{
|
{
|
||||||
struct data_type { const WCHAR *tag; int len; int type; int parse_type; };
|
struct data_type
|
||||||
|
{
|
||||||
|
const WCHAR *tag;
|
||||||
|
int len;
|
||||||
|
int type;
|
||||||
|
int parse_type;
|
||||||
|
};
|
||||||
|
|
||||||
static const WCHAR quote[] = {'"'};
|
static const WCHAR quote[] = {'"'};
|
||||||
static const WCHAR str[] = {'s','t','r',':','"'};
|
static const WCHAR str[] = {'s','t','r',':','"'};
|
||||||
|
@ -225,7 +237,8 @@ static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
|
||||||
const struct data_type *ptr;
|
const struct data_type *ptr;
|
||||||
int type;
|
int type;
|
||||||
|
|
||||||
for (ptr = data_types; ptr->tag; ptr++) {
|
for (ptr = data_types; ptr->tag; ptr++)
|
||||||
|
{
|
||||||
if (wcsncmp(ptr->tag, *lpValue, ptr->len))
|
if (wcsncmp(ptr->tag, *lpValue, ptr->len))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -233,14 +246,18 @@ static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
|
||||||
*parse_type = ptr->parse_type;
|
*parse_type = ptr->parse_type;
|
||||||
type=ptr->type;
|
type=ptr->type;
|
||||||
*lpValue+=ptr->len;
|
*lpValue+=ptr->len;
|
||||||
if (type == -1) {
|
if (type == -1)
|
||||||
|
{
|
||||||
WCHAR* end;
|
WCHAR* end;
|
||||||
|
|
||||||
/* "hex(xx):" is special */
|
/* "hex(xx):" is special */
|
||||||
type = (int)wcstoul( *lpValue , &end, 16 );
|
type = (int)wcstoul( *lpValue , &end, 16 );
|
||||||
if (**lpValue=='\0' || *end!=')' || *(end+1)!=':') {
|
if (**lpValue=='\0' || *end!=')' || *(end+1)!=':')
|
||||||
|
{
|
||||||
type=REG_NONE;
|
type=REG_NONE;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
*lpValue = end + 2;
|
*lpValue = end + 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -258,10 +275,13 @@ static void REGPROC_unescape_string(WCHAR* str)
|
||||||
int str_idx = 0; /* current character under analysis */
|
int str_idx = 0; /* current character under analysis */
|
||||||
int val_idx = 0; /* the last character of the unescaped string */
|
int val_idx = 0; /* the last character of the unescaped string */
|
||||||
int len = lstrlenW(str);
|
int len = lstrlenW(str);
|
||||||
for (str_idx = 0; str_idx < len; str_idx++, val_idx++) {
|
for (str_idx = 0; str_idx < len; str_idx++, val_idx++)
|
||||||
if (str[str_idx] == '\\') {
|
{
|
||||||
|
if (str[str_idx] == '\\')
|
||||||
|
{
|
||||||
str_idx++;
|
str_idx++;
|
||||||
switch (str[str_idx]) {
|
switch (str[str_idx])
|
||||||
|
{
|
||||||
case 'n':
|
case 'n':
|
||||||
str[val_idx] = '\n';
|
str[val_idx] = '\n';
|
||||||
break;
|
break;
|
||||||
|
@ -275,7 +295,9 @@ static void REGPROC_unescape_string(WCHAR* str)
|
||||||
str[val_idx] = str[str_idx];
|
str[val_idx] = str[str_idx];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
str[val_idx] = str[str_idx];
|
str[val_idx] = str[str_idx];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -310,9 +332,11 @@ static BOOL parseKeyName(LPWSTR lpKeyName, HKEY *hKey, LPWSTR *lpKeyPath)
|
||||||
}
|
}
|
||||||
*hKey = NULL;
|
*hKey = NULL;
|
||||||
|
|
||||||
for (i = 0; i < REG_CLASS_NUMBER; i++) {
|
for (i = 0; i < REG_CLASS_NUMBER; i++)
|
||||||
|
{
|
||||||
if (CompareStringW(LOCALE_USER_DEFAULT, 0, lpKeyName, len, reg_class_namesW[i], len) == CSTR_EQUAL &&
|
if (CompareStringW(LOCALE_USER_DEFAULT, 0, lpKeyName, len, reg_class_namesW[i], len) == CSTR_EQUAL &&
|
||||||
len == lstrlenW(reg_class_namesW[i])) {
|
len == lstrlenW(reg_class_namesW[i]))
|
||||||
|
{
|
||||||
*hKey = reg_class_keys[i];
|
*hKey = reg_class_keys[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -485,29 +509,39 @@ static void processSetValue(WCHAR* line, BOOL is_unicode)
|
||||||
|
|
||||||
/* get value name */
|
/* get value name */
|
||||||
while ( iswspace(line[line_idx]) ) line_idx++;
|
while ( iswspace(line[line_idx]) ) line_idx++;
|
||||||
if (line[line_idx] == '@' && line[line_idx + 1] == '=') {
|
if (line[line_idx] == '@' && line[line_idx + 1] == '=')
|
||||||
|
{
|
||||||
line[line_idx] = '\0';
|
line[line_idx] = '\0';
|
||||||
val_name = line;
|
val_name = line;
|
||||||
line_idx++;
|
line_idx++;
|
||||||
} else if (line[line_idx] == '\"') {
|
}
|
||||||
|
else if (line[line_idx] == '\"')
|
||||||
|
{
|
||||||
line_idx++;
|
line_idx++;
|
||||||
val_name = line + line_idx;
|
val_name = line + line_idx;
|
||||||
while (TRUE) {
|
while (TRUE)
|
||||||
|
{
|
||||||
if (line[line_idx] == '\\') /* skip escaped character */
|
if (line[line_idx] == '\\') /* skip escaped character */
|
||||||
{
|
{
|
||||||
line_idx += 2;
|
line_idx += 2;
|
||||||
} else {
|
}
|
||||||
if (line[line_idx] == '\"') {
|
else
|
||||||
|
{
|
||||||
|
if (line[line_idx] == '\"')
|
||||||
|
{
|
||||||
line[line_idx] = '\0';
|
line[line_idx] = '\0';
|
||||||
line_idx++;
|
line_idx++;
|
||||||
break;
|
break;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
line_idx++;
|
line_idx++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while ( iswspace(line[line_idx]) ) line_idx++;
|
while ( iswspace(line[line_idx]) ) line_idx++;
|
||||||
if (line[line_idx] != '=') {
|
if (line[line_idx] != '=')
|
||||||
|
{
|
||||||
char* lineA;
|
char* lineA;
|
||||||
line[line_idx] = '\"';
|
line[line_idx] = '\"';
|
||||||
lineA = GetMultiByteString(line);
|
lineA = GetMultiByteString(line);
|
||||||
|
@ -516,7 +550,9 @@ static void processSetValue(WCHAR* line, BOOL is_unicode)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
char* lineA = GetMultiByteString(line);
|
char* lineA = GetMultiByteString(line);
|
||||||
fprintf(stderr,"Warning! unrecognized line:\n%s\n", lineA);
|
fprintf(stderr,"Warning! unrecognized line:\n%s\n", lineA);
|
||||||
HeapFree(GetProcessHeap(), 0, lineA);
|
HeapFree(GetProcessHeap(), 0, lineA);
|
||||||
|
@ -558,7 +594,8 @@ static void processRegEntry(WCHAR* stdInput, BOOL isUnicode)
|
||||||
* We encountered the end of the file, make sure we
|
* We encountered the end of the file, make sure we
|
||||||
* close the opened key and exit
|
* close the opened key and exit
|
||||||
*/
|
*/
|
||||||
if (stdInput == NULL) {
|
if (stdInput == NULL)
|
||||||
|
{
|
||||||
closeKey();
|
closeKey();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -578,19 +615,22 @@ static void processRegEntry(WCHAR* stdInput, BOOL isUnicode)
|
||||||
if ( stdInput[0] == '-')
|
if ( stdInput[0] == '-')
|
||||||
{
|
{
|
||||||
delete_registry_key(stdInput + 1);
|
delete_registry_key(stdInput + 1);
|
||||||
} else if ( openKeyW(stdInput) != ERROR_SUCCESS )
|
}
|
||||||
|
else if ( openKeyW(stdInput) != ERROR_SUCCESS )
|
||||||
{
|
{
|
||||||
char* stdInputA = GetMultiByteString(stdInput);
|
char* stdInputA = GetMultiByteString(stdInput);
|
||||||
fprintf(stderr,"%s: setValue failed to open key %s\n",
|
fprintf(stderr,"%s: setValue failed to open key %s\n",
|
||||||
getAppName(), stdInputA);
|
getAppName(), stdInputA);
|
||||||
HeapFree(GetProcessHeap(), 0, stdInputA);
|
HeapFree(GetProcessHeap(), 0, stdInputA);
|
||||||
}
|
}
|
||||||
} else if( currentKeyHandle &&
|
}
|
||||||
|
else if( currentKeyHandle &&
|
||||||
(( stdInput[0] == '@') || /* reading a default @=data pair */
|
(( stdInput[0] == '@') || /* reading a default @=data pair */
|
||||||
( stdInput[0] == '\"'))) /* reading a new value=data pair */
|
( stdInput[0] == '\"'))) /* reading a new value=data pair */
|
||||||
{
|
{
|
||||||
processSetValue(stdInput, isUnicode);
|
processSetValue(stdInput, isUnicode);
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
/* Since we are assuming that the file format is valid we must be
|
/* Since we are assuming that the file format is valid we must be
|
||||||
* reading a blank line which indicates the end of this key processing
|
* reading a blank line which indicates the end of this key processing
|
||||||
|
@ -614,13 +654,15 @@ static void processRegLinesA(FILE *in)
|
||||||
line = HeapAlloc(GetProcessHeap(), 0, lineSize);
|
line = HeapAlloc(GetProcessHeap(), 0, lineSize);
|
||||||
CHECK_ENOUGH_MEMORY(line);
|
CHECK_ENOUGH_MEMORY(line);
|
||||||
|
|
||||||
while (!feof(in)) {
|
while (!feof(in))
|
||||||
|
{
|
||||||
LPSTR s; /* The pointer into line for where the current fgets should read */
|
LPSTR s; /* The pointer into line for where the current fgets should read */
|
||||||
LPSTR check;
|
LPSTR check;
|
||||||
WCHAR* lineW;
|
WCHAR* lineW;
|
||||||
s = line;
|
s = line;
|
||||||
|
|
||||||
for (;;) {
|
for (;;)
|
||||||
|
{
|
||||||
size_t size_remaining;
|
size_t size_remaining;
|
||||||
int size_to_get;
|
int size_to_get;
|
||||||
char *s_eol; /* various local uses */
|
char *s_eol; /* various local uses */
|
||||||
|
@ -650,11 +692,15 @@ static void processRegLinesA(FILE *in)
|
||||||
|
|
||||||
check = fgets (s, size_to_get, in);
|
check = fgets (s, size_to_get, in);
|
||||||
|
|
||||||
if (check == NULL) {
|
if (check == NULL)
|
||||||
if (ferror(in)) {
|
{
|
||||||
|
if (ferror(in))
|
||||||
|
{
|
||||||
perror ("While reading input");
|
perror ("While reading input");
|
||||||
exit (IO_ERROR);
|
exit (IO_ERROR);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
assert (feof(in));
|
assert (feof(in));
|
||||||
*s = '\0';
|
*s = '\0';
|
||||||
/* It is not clear to me from the definition that the
|
/* It is not clear to me from the definition that the
|
||||||
|
@ -666,35 +712,41 @@ static void processRegLinesA(FILE *in)
|
||||||
|
|
||||||
/* If we didn't read the eol nor the eof go around for the rest */
|
/* If we didn't read the eol nor the eof go around for the rest */
|
||||||
s_eol = strchr (s, '\n');
|
s_eol = strchr (s, '\n');
|
||||||
if (!feof (in) && !s_eol) {
|
if (!feof (in) && !s_eol)
|
||||||
|
{
|
||||||
s = strchr (s, '\0');
|
s = strchr (s, '\0');
|
||||||
/* It should be s + size_to_get - 1 but this is safer */
|
/* It should be s + size_to_get - 1 but this is safer */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If it is a comment line then discard it and go around again */
|
/* If it is a comment line then discard it and go around again */
|
||||||
if (line [0] == '#') {
|
if (line [0] == '#')
|
||||||
|
{
|
||||||
s = line;
|
s = line;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove any line feed. Leave s_eol on the \0 */
|
/* Remove any line feed. Leave s_eol on the \0 */
|
||||||
if (s_eol) {
|
if (s_eol)
|
||||||
|
{
|
||||||
*s_eol = '\0';
|
*s_eol = '\0';
|
||||||
if (s_eol > line && *(s_eol-1) == '\r')
|
if (s_eol > line && *(s_eol-1) == '\r')
|
||||||
*--s_eol = '\0';
|
*--s_eol = '\0';
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
s_eol = strchr (s, '\0');
|
s_eol = strchr (s, '\0');
|
||||||
|
|
||||||
/* If there is a concatenating \\ then go around again */
|
/* If there is a concatenating \\ then go around again */
|
||||||
if (s_eol > line && *(s_eol-1) == '\\') {
|
if (s_eol > line && *(s_eol-1) == '\\')
|
||||||
|
{
|
||||||
int c;
|
int c;
|
||||||
s = s_eol-1;
|
s = s_eol-1;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
c = fgetc(in);
|
c = fgetc(in);
|
||||||
} while(c == ' ' || c == '\t');
|
}
|
||||||
|
while(c == ' ' || c == '\t');
|
||||||
|
|
||||||
if(c == EOF)
|
if(c == EOF)
|
||||||
{
|
{
|
||||||
|
@ -737,7 +789,8 @@ static void processRegLinesW(FILE *in)
|
||||||
s = buf;
|
s = buf;
|
||||||
line = buf;
|
line = buf;
|
||||||
|
|
||||||
while(!feof(in)) {
|
while(!feof(in))
|
||||||
|
{
|
||||||
size_t size_remaining;
|
size_t size_remaining;
|
||||||
int size_to_get;
|
int size_to_get;
|
||||||
WCHAR *s_eol = NULL; /* various local uses */
|
WCHAR *s_eol = NULL; /* various local uses */
|
||||||
|
@ -769,11 +822,15 @@ static void processRegLinesW(FILE *in)
|
||||||
CharsInBuf = fread(s, sizeof(WCHAR), size_to_get - 1, in);
|
CharsInBuf = fread(s, sizeof(WCHAR), size_to_get - 1, in);
|
||||||
s[CharsInBuf] = 0;
|
s[CharsInBuf] = 0;
|
||||||
|
|
||||||
if (CharsInBuf == 0) {
|
if (CharsInBuf == 0)
|
||||||
if (ferror(in)) {
|
{
|
||||||
|
if (ferror(in))
|
||||||
|
{
|
||||||
perror ("While reading input");
|
perror ("While reading input");
|
||||||
exit (IO_ERROR);
|
exit (IO_ERROR);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
assert (feof(in));
|
assert (feof(in));
|
||||||
*s = '\0';
|
*s = '\0';
|
||||||
/* It is not clear to me from the definition that the
|
/* It is not clear to me from the definition that the
|
||||||
|
@ -788,7 +845,8 @@ static void processRegLinesW(FILE *in)
|
||||||
{
|
{
|
||||||
s_eol = wcschr(line, '\n');
|
s_eol = wcschr(line, '\n');
|
||||||
|
|
||||||
if(!s_eol) {
|
if(!s_eol)
|
||||||
|
{
|
||||||
/* Move the stub of the line to the start of the buffer so
|
/* Move the stub of the line to the start of the buffer so
|
||||||
* we get the maximum space to read into, and so we don't
|
* we get the maximum space to read into, and so we don't
|
||||||
* have to recalculate 'line' if the buffer expands */
|
* have to recalculate 'line' if the buffer expands */
|
||||||
|
@ -799,14 +857,16 @@ static void processRegLinesW(FILE *in)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If it is a comment line then discard it and go around again */
|
/* If it is a comment line then discard it and go around again */
|
||||||
if (*line == '#') {
|
if (*line == '#')
|
||||||
|
{
|
||||||
line = s_eol + 1;
|
line = s_eol + 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If there is a concatenating \\ then go around again */
|
/* If there is a concatenating \\ then go around again */
|
||||||
if ((*(s_eol-1) == '\\') ||
|
if ((*(s_eol-1) == '\\') ||
|
||||||
(*(s_eol-1) == '\r' && *(s_eol-2) == '\\')) {
|
(*(s_eol-1) == '\r' && *(s_eol-2) == '\\'))
|
||||||
|
{
|
||||||
WCHAR* NextLine = s_eol;
|
WCHAR* NextLine = s_eol;
|
||||||
|
|
||||||
while(*(NextLine+1) == ' ' || *(NextLine+1) == '\t')
|
while(*(NextLine+1) == ' ' || *(NextLine+1) == '\t')
|
||||||
|
@ -824,7 +884,8 @@ static void processRegLinesW(FILE *in)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove any line feed. Leave s_eol on the \0 */
|
/* Remove any line feed. Leave s_eol on the \0 */
|
||||||
if (s_eol) {
|
if (s_eol)
|
||||||
|
{
|
||||||
*s_eol = '\0';
|
*s_eol = '\0';
|
||||||
if (s_eol > buf && *(s_eol-1) == '\r')
|
if (s_eol > buf && *(s_eol-1) == '\r')
|
||||||
*(s_eol-1) = '\0';
|
*(s_eol-1) = '\0';
|
||||||
|
@ -860,7 +921,8 @@ static void REGPROC_print_error(void)
|
||||||
error_code = GetLastError ();
|
error_code = GetLastError ();
|
||||||
status = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
status = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
||||||
NULL, error_code, 0, (LPTSTR) &lpMsgBuf, 0, NULL);
|
NULL, error_code, 0, (LPTSTR) &lpMsgBuf, 0, NULL);
|
||||||
if (!status) {
|
if (!status)
|
||||||
|
{
|
||||||
fprintf(stderr,"%s: Cannot display message for error %ld, status %ld\n",
|
fprintf(stderr,"%s: Cannot display message for error %ld, status %ld\n",
|
||||||
getAppName(), error_code, GetLastError());
|
getAppName(), error_code, GetLastError());
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -883,7 +945,8 @@ static void REGPROC_print_error(void)
|
||||||
static void REGPROC_resize_char_buffer(WCHAR **buffer, DWORD *len, DWORD required_len)
|
static void REGPROC_resize_char_buffer(WCHAR **buffer, DWORD *len, DWORD required_len)
|
||||||
{
|
{
|
||||||
required_len++;
|
required_len++;
|
||||||
if (required_len > *len) {
|
if (required_len > *len)
|
||||||
|
{
|
||||||
*len = required_len;
|
*len = required_len;
|
||||||
if (!*buffer)
|
if (!*buffer)
|
||||||
*buffer = HeapAlloc(GetProcessHeap(), 0, *len * sizeof(**buffer));
|
*buffer = HeapAlloc(GetProcessHeap(), 0, *len * sizeof(**buffer));
|
||||||
|
@ -903,7 +966,8 @@ static void REGPROC_resize_char_buffer(WCHAR **buffer, DWORD *len, DWORD require
|
||||||
*/
|
*/
|
||||||
static void REGPROC_resize_binary_buffer(BYTE **buffer, DWORD *size, DWORD required_size)
|
static void REGPROC_resize_binary_buffer(BYTE **buffer, DWORD *size, DWORD required_size)
|
||||||
{
|
{
|
||||||
if (required_size > *size) {
|
if (required_size > *size)
|
||||||
|
{
|
||||||
*size = required_size;
|
*size = required_size;
|
||||||
if (!*buffer)
|
if (!*buffer)
|
||||||
*buffer = HeapAlloc(GetProcessHeap(), 0, *size);
|
*buffer = HeapAlloc(GetProcessHeap(), 0, *size);
|
||||||
|
@ -925,9 +989,11 @@ static void REGPROC_export_string(WCHAR **line_buf, DWORD *line_buf_size, DWORD
|
||||||
|
|
||||||
/* escaping characters */
|
/* escaping characters */
|
||||||
pos = *line_len;
|
pos = *line_len;
|
||||||
for (i = 0; i < str_len; i++) {
|
for (i = 0; i < str_len; i++)
|
||||||
|
{
|
||||||
WCHAR c = str[i];
|
WCHAR c = str[i];
|
||||||
switch (c) {
|
switch (c)
|
||||||
|
{
|
||||||
case '\n':
|
case '\n':
|
||||||
extra++;
|
extra++;
|
||||||
REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + str_len + extra);
|
REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + str_len + extra);
|
||||||
|
@ -962,9 +1028,12 @@ static void REGPROC_export_binary(WCHAR **line_buf, DWORD *line_buf_size, DWORD
|
||||||
const WCHAR newline[] = {'\n',0};
|
const WCHAR newline[] = {'\n',0};
|
||||||
CHAR* value_multibyte = NULL;
|
CHAR* value_multibyte = NULL;
|
||||||
|
|
||||||
if (type == REG_BINARY) {
|
if (type == REG_BINARY)
|
||||||
|
{
|
||||||
hex_prefix = hex;
|
hex_prefix = hex;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
const WCHAR hex_format[] = {'h','e','x','(','%','u',')',':',0};
|
const WCHAR hex_format[] = {'h','e','x','(','%','u',')',':',0};
|
||||||
hex_prefix = hex_buf;
|
hex_prefix = hex_buf;
|
||||||
wsprintfW(hex_buf, hex_format, type);
|
wsprintfW(hex_buf, hex_format, type);
|
||||||
|
@ -1011,7 +1080,8 @@ static void REGPROC_export_binary(WCHAR **line_buf, DWORD *line_buf_size, DWORD
|
||||||
column += 3;
|
column += 3;
|
||||||
|
|
||||||
/* wrap the line */
|
/* wrap the line */
|
||||||
if (column >= REG_FILE_HEX_LINE_LEN) {
|
if (column >= REG_FILE_HEX_LINE_LEN)
|
||||||
|
{
|
||||||
lstrcpyW(*line_buf + data_pos, concat);
|
lstrcpyW(*line_buf + data_pos, concat);
|
||||||
data_pos += concat_len;
|
data_pos += concat_len;
|
||||||
column = concat_prefix;
|
column = concat_prefix;
|
||||||
|
@ -1062,11 +1132,11 @@ static void REGPROC_write_line(FILE *file, const WCHAR* str, BOOL unicode)
|
||||||
* val_size - size of the buffer for storing values in bytes.
|
* val_size - size of the buffer for storing values in bytes.
|
||||||
*/
|
*/
|
||||||
static void export_hkey(FILE *file, HKEY key,
|
static void export_hkey(FILE *file, HKEY key,
|
||||||
WCHAR **reg_key_name_buf, DWORD *reg_key_name_size,
|
WCHAR **reg_key_name_buf, DWORD *reg_key_name_size,
|
||||||
WCHAR **val_name_buf, DWORD *val_name_size,
|
WCHAR **val_name_buf, DWORD *val_name_size,
|
||||||
BYTE **val_buf, DWORD *val_size,
|
BYTE **val_buf, DWORD *val_size,
|
||||||
WCHAR **line_buf, DWORD *line_buf_size,
|
WCHAR **line_buf, DWORD *line_buf_size,
|
||||||
BOOL unicode)
|
BOOL unicode)
|
||||||
{
|
{
|
||||||
DWORD max_sub_key_len;
|
DWORD max_sub_key_len;
|
||||||
DWORD max_val_name_len;
|
DWORD max_val_name_len;
|
||||||
|
@ -1081,7 +1151,8 @@ static void export_hkey(FILE *file, HKEY key,
|
||||||
if (RegQueryInfoKeyW(key, NULL, NULL, NULL, NULL,
|
if (RegQueryInfoKeyW(key, NULL, NULL, NULL, NULL,
|
||||||
&max_sub_key_len, NULL,
|
&max_sub_key_len, NULL,
|
||||||
NULL, &max_val_name_len, &max_val_size, NULL, NULL
|
NULL, &max_val_name_len, &max_val_size, NULL, NULL
|
||||||
) != ERROR_SUCCESS) {
|
) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
REGPROC_print_error();
|
REGPROC_print_error();
|
||||||
}
|
}
|
||||||
curr_len = lstrlenW(*reg_key_name_buf);
|
curr_len = lstrlenW(*reg_key_name_buf);
|
||||||
|
@ -1098,26 +1169,34 @@ static void export_hkey(FILE *file, HKEY key,
|
||||||
/* print all the values */
|
/* print all the values */
|
||||||
i = 0;
|
i = 0;
|
||||||
more_data = TRUE;
|
more_data = TRUE;
|
||||||
while(more_data) {
|
while(more_data)
|
||||||
|
{
|
||||||
DWORD value_type;
|
DWORD value_type;
|
||||||
DWORD val_name_size1 = *val_name_size;
|
DWORD val_name_size1 = *val_name_size;
|
||||||
DWORD val_size1 = *val_size;
|
DWORD val_size1 = *val_size;
|
||||||
ret = RegEnumValueW(key, i, *val_name_buf, &val_name_size1, NULL,
|
ret = RegEnumValueW(key, i, *val_name_buf, &val_name_size1, NULL,
|
||||||
&value_type, *val_buf, &val_size1);
|
&value_type, *val_buf, &val_size1);
|
||||||
if (ret == ERROR_MORE_DATA) {
|
if (ret == ERROR_MORE_DATA)
|
||||||
|
{
|
||||||
/* Increase the size of the buffers and retry */
|
/* Increase the size of the buffers and retry */
|
||||||
REGPROC_resize_char_buffer(val_name_buf, val_name_size, val_name_size1);
|
REGPROC_resize_char_buffer(val_name_buf, val_name_size, val_name_size1);
|
||||||
REGPROC_resize_binary_buffer(val_buf, val_size, val_size1);
|
REGPROC_resize_binary_buffer(val_buf, val_size, val_size1);
|
||||||
} else if (ret != ERROR_SUCCESS) {
|
}
|
||||||
|
else if (ret != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
more_data = FALSE;
|
more_data = FALSE;
|
||||||
if (ret != ERROR_NO_MORE_ITEMS) {
|
if (ret != ERROR_NO_MORE_ITEMS)
|
||||||
|
{
|
||||||
REGPROC_print_error();
|
REGPROC_print_error();
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
DWORD line_len;
|
DWORD line_len;
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
if ((*val_name_buf)[0]) {
|
if ((*val_name_buf)[0])
|
||||||
|
{
|
||||||
const WCHAR val_start[] = {'"','%','s','"','=',0};
|
const WCHAR val_start[] = {'"','%','s','"','=',0};
|
||||||
|
|
||||||
line_len = 0;
|
line_len = 0;
|
||||||
|
@ -1128,22 +1207,28 @@ static void export_hkey(FILE *file, HKEY key,
|
||||||
line_len = 3 + lstrlenW(*val_name_buf);
|
line_len = 3 + lstrlenW(*val_name_buf);
|
||||||
REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len);
|
REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len);
|
||||||
wsprintfW(*line_buf, val_start, *val_name_buf);
|
wsprintfW(*line_buf, val_start, *val_name_buf);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
const WCHAR std_val[] = {'@','=',0};
|
const WCHAR std_val[] = {'@','=',0};
|
||||||
line_len = 2;
|
line_len = 2;
|
||||||
REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len);
|
REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len);
|
||||||
lstrcpyW(*line_buf, std_val);
|
lstrcpyW(*line_buf, std_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (value_type) {
|
switch (value_type)
|
||||||
|
{
|
||||||
case REG_SZ:
|
case REG_SZ:
|
||||||
{
|
{
|
||||||
WCHAR* wstr = (WCHAR*)*val_buf;
|
WCHAR* wstr = (WCHAR*)*val_buf;
|
||||||
|
|
||||||
if (val_size1 < sizeof(WCHAR) || val_size1 % sizeof(WCHAR) ||
|
if (val_size1 < sizeof(WCHAR) || val_size1 % sizeof(WCHAR) ||
|
||||||
wstr[val_size1 / sizeof(WCHAR) - 1]) {
|
wstr[val_size1 / sizeof(WCHAR) - 1])
|
||||||
|
{
|
||||||
REGPROC_export_binary(line_buf, line_buf_size, &line_len, value_type, *val_buf, val_size1, unicode);
|
REGPROC_export_binary(line_buf, line_buf_size, &line_len, value_type, *val_buf, val_size1, unicode);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
const WCHAR start[] = {'"',0};
|
const WCHAR start[] = {'"',0};
|
||||||
const WCHAR end[] = {'"','\n',0};
|
const WCHAR end[] = {'"','\n',0};
|
||||||
DWORD len;
|
DWORD len;
|
||||||
|
@ -1199,30 +1284,40 @@ static void export_hkey(FILE *file, HKEY key,
|
||||||
i = 0;
|
i = 0;
|
||||||
more_data = TRUE;
|
more_data = TRUE;
|
||||||
(*reg_key_name_buf)[curr_len] = '\\';
|
(*reg_key_name_buf)[curr_len] = '\\';
|
||||||
while(more_data) {
|
while(more_data)
|
||||||
|
{
|
||||||
DWORD buf_size = *reg_key_name_size - curr_len - 1;
|
DWORD buf_size = *reg_key_name_size - curr_len - 1;
|
||||||
|
|
||||||
ret = RegEnumKeyExW(key, i, *reg_key_name_buf + curr_len + 1, &buf_size,
|
ret = RegEnumKeyExW(key, i, *reg_key_name_buf + curr_len + 1, &buf_size,
|
||||||
NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL);
|
||||||
if (ret == ERROR_MORE_DATA) {
|
if (ret == ERROR_MORE_DATA)
|
||||||
|
{
|
||||||
/* Increase the size of the buffer and retry */
|
/* Increase the size of the buffer and retry */
|
||||||
REGPROC_resize_char_buffer(reg_key_name_buf, reg_key_name_size, curr_len + 1 + buf_size);
|
REGPROC_resize_char_buffer(reg_key_name_buf, reg_key_name_size, curr_len + 1 + buf_size);
|
||||||
} else if (ret != ERROR_SUCCESS) {
|
}
|
||||||
|
else if (ret != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
more_data = FALSE;
|
more_data = FALSE;
|
||||||
if (ret != ERROR_NO_MORE_ITEMS) {
|
if (ret != ERROR_NO_MORE_ITEMS)
|
||||||
|
{
|
||||||
REGPROC_print_error();
|
REGPROC_print_error();
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
HKEY subkey;
|
HKEY subkey;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
if (RegOpenKeyW(key, *reg_key_name_buf + curr_len + 1,
|
if (RegOpenKeyW(key, *reg_key_name_buf + curr_len + 1,
|
||||||
&subkey) == ERROR_SUCCESS) {
|
&subkey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
export_hkey(file, subkey, reg_key_name_buf, reg_key_name_size,
|
export_hkey(file, subkey, reg_key_name_buf, reg_key_name_size,
|
||||||
val_name_buf, val_name_size, val_buf, val_size,
|
val_name_buf, val_name_size, val_buf, val_size,
|
||||||
line_buf, line_buf_size, unicode);
|
line_buf, line_buf_size, unicode);
|
||||||
RegCloseKey(subkey);
|
RegCloseKey(subkey);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
REGPROC_print_error();
|
REGPROC_print_error();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1246,7 +1341,8 @@ static FILE *REGPROC_open_export_file(WCHAR *file_name, BOOL unicode)
|
||||||
file = _wfopen(file_name, L"wb");
|
file = _wfopen(file_name, L"wb");
|
||||||
else
|
else
|
||||||
file = _wfopen(file_name, L"w");
|
file = _wfopen(file_name, L"w");
|
||||||
if (!file) {
|
if (!file)
|
||||||
|
{
|
||||||
CHAR* file_nameA = GetMultiByteString(file_name);
|
CHAR* file_nameA = GetMultiByteString(file_name);
|
||||||
perror("");
|
perror("");
|
||||||
fprintf(stderr,"%s: Can't open file \"%s\"\n", getAppName(), file_nameA);
|
fprintf(stderr,"%s: Can't open file \"%s\"\n", getAppName(), file_nameA);
|
||||||
|
@ -1298,7 +1394,8 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
|
||||||
line_buf = HeapAlloc(GetProcessHeap(), 0, line_buf_size * sizeof(*line_buf));
|
line_buf = HeapAlloc(GetProcessHeap(), 0, line_buf_size * sizeof(*line_buf));
|
||||||
CHECK_ENOUGH_MEMORY(reg_key_name_buf && val_name_buf && val_buf && line_buf);
|
CHECK_ENOUGH_MEMORY(reg_key_name_buf && val_name_buf && val_buf && line_buf);
|
||||||
|
|
||||||
if (reg_key_name && reg_key_name[0]) {
|
if (reg_key_name && reg_key_name[0])
|
||||||
|
{
|
||||||
HKEY reg_key_class;
|
HKEY reg_key_class;
|
||||||
WCHAR *branch_name = NULL;
|
WCHAR *branch_name = NULL;
|
||||||
HKEY key;
|
HKEY key;
|
||||||
|
@ -1308,14 +1405,16 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
|
||||||
lstrcpyW(reg_key_name_buf, reg_key_name);
|
lstrcpyW(reg_key_name_buf, reg_key_name);
|
||||||
|
|
||||||
/* open the specified key */
|
/* open the specified key */
|
||||||
if (!parseKeyName(reg_key_name, ®_key_class, &branch_name)) {
|
if (!parseKeyName(reg_key_name, ®_key_class, &branch_name))
|
||||||
|
{
|
||||||
CHAR* key_nameA = GetMultiByteString(reg_key_name);
|
CHAR* key_nameA = GetMultiByteString(reg_key_name);
|
||||||
fprintf(stderr,"%s: Incorrect registry class specification in '%s'\n",
|
fprintf(stderr,"%s: Incorrect registry class specification in '%s'\n",
|
||||||
getAppName(), key_nameA);
|
getAppName(), key_nameA);
|
||||||
HeapFree(GetProcessHeap(), 0, key_nameA);
|
HeapFree(GetProcessHeap(), 0, key_nameA);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (!branch_name[0]) {
|
if (!branch_name[0])
|
||||||
|
{
|
||||||
/* no branch - registry class is specified */
|
/* no branch - registry class is specified */
|
||||||
file = REGPROC_open_export_file(file_name, unicode);
|
file = REGPROC_open_export_file(file_name, unicode);
|
||||||
export_hkey(file, reg_key_class,
|
export_hkey(file, reg_key_class,
|
||||||
|
@ -1323,7 +1422,9 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
|
||||||
&val_name_buf, &val_name_size,
|
&val_name_buf, &val_name_size,
|
||||||
&val_buf, &val_size, &line_buf,
|
&val_buf, &val_size, &line_buf,
|
||||||
&line_buf_size, unicode);
|
&line_buf_size, unicode);
|
||||||
} else if (RegOpenKeyW(reg_key_class, branch_name, &key) == ERROR_SUCCESS) {
|
}
|
||||||
|
else if (RegOpenKeyW(reg_key_class, branch_name, &key) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
file = REGPROC_open_export_file(file_name, unicode);
|
file = REGPROC_open_export_file(file_name, unicode);
|
||||||
export_hkey(file, key,
|
export_hkey(file, key,
|
||||||
®_key_name_buf, ®_key_name_size,
|
®_key_name_buf, ®_key_name_size,
|
||||||
|
@ -1331,24 +1432,30 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
|
||||||
&val_buf, &val_size, &line_buf,
|
&val_buf, &val_size, &line_buf,
|
||||||
&line_buf_size, unicode);
|
&line_buf_size, unicode);
|
||||||
RegCloseKey(key);
|
RegCloseKey(key);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CHAR* key_nameA = GetMultiByteString(reg_key_name);
|
CHAR* key_nameA = GetMultiByteString(reg_key_name);
|
||||||
fprintf(stderr,"%s: Can't export. Registry key '%s' does not exist!\n",
|
fprintf(stderr,"%s: Can't export. Registry key '%s' does not exist!\n",
|
||||||
getAppName(), key_nameA);
|
getAppName(), key_nameA);
|
||||||
HeapFree(GetProcessHeap(), 0, key_nameA);
|
HeapFree(GetProcessHeap(), 0, key_nameA);
|
||||||
REGPROC_print_error();
|
REGPROC_print_error();
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
/* export all registry classes */
|
/* export all registry classes */
|
||||||
file = REGPROC_open_export_file(file_name, unicode);
|
file = REGPROC_open_export_file(file_name, unicode);
|
||||||
for (i = 0; i < REG_CLASS_NUMBER; i++) {
|
for (i = 0; i < REG_CLASS_NUMBER; i++)
|
||||||
|
{
|
||||||
/* do not export HKEY_CLASSES_ROOT */
|
/* do not export HKEY_CLASSES_ROOT */
|
||||||
if (reg_class_keys[i] != HKEY_CLASSES_ROOT &&
|
if (reg_class_keys[i] != HKEY_CLASSES_ROOT &&
|
||||||
reg_class_keys[i] != HKEY_CURRENT_USER &&
|
reg_class_keys[i] != HKEY_CURRENT_USER &&
|
||||||
reg_class_keys[i] != HKEY_CURRENT_CONFIG &&
|
reg_class_keys[i] != HKEY_CURRENT_CONFIG &&
|
||||||
reg_class_keys[i] != HKEY_DYN_DATA) {
|
reg_class_keys[i] != HKEY_DYN_DATA)
|
||||||
|
{
|
||||||
lstrcpyW(reg_key_name_buf, reg_class_namesW[i]);
|
lstrcpyW(reg_key_name_buf, reg_class_namesW[i]);
|
||||||
export_hkey(file, reg_class_keys[i],
|
export_hkey(file, reg_class_keys[i],
|
||||||
®_key_name_buf, ®_key_name_size,
|
®_key_name_buf, ®_key_name_size,
|
||||||
|
@ -1359,7 +1466,8 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file) {
|
if (file)
|
||||||
|
{
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
HeapFree(GetProcessHeap(), 0, reg_key_name);
|
HeapFree(GetProcessHeap(), 0, reg_key_name);
|
||||||
|
@ -1382,7 +1490,8 @@ BOOL import_registry_file(FILE* reg_file)
|
||||||
if (s[0] == 0xff && s[1] == 0xfe)
|
if (s[0] == 0xff && s[1] == 0xfe)
|
||||||
{
|
{
|
||||||
processRegLinesW(reg_file);
|
processRegLinesW(reg_file);
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
fseek(reg_file, 0, SEEK_SET);
|
fseek(reg_file, 0, SEEK_SET);
|
||||||
processRegLinesA(reg_file);
|
processRegLinesA(reg_file);
|
||||||
|
@ -1408,14 +1517,16 @@ void delete_registry_key(WCHAR *reg_key_name)
|
||||||
if (!reg_key_name || !reg_key_name[0])
|
if (!reg_key_name || !reg_key_name[0])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!parseKeyName(reg_key_name, &key_class, &key_name)) {
|
if (!parseKeyName(reg_key_name, &key_class, &key_name))
|
||||||
|
{
|
||||||
char* reg_key_nameA = GetMultiByteString(reg_key_name);
|
char* reg_key_nameA = GetMultiByteString(reg_key_name);
|
||||||
fprintf(stderr,"%s: Incorrect registry class specification in '%s'\n",
|
fprintf(stderr,"%s: Incorrect registry class specification in '%s'\n",
|
||||||
getAppName(), reg_key_nameA);
|
getAppName(), reg_key_nameA);
|
||||||
HeapFree(GetProcessHeap(), 0, reg_key_nameA);
|
HeapFree(GetProcessHeap(), 0, reg_key_nameA);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (!*key_name) {
|
if (!*key_name)
|
||||||
|
{
|
||||||
char* reg_key_nameA = GetMultiByteString(reg_key_name);
|
char* reg_key_nameA = GetMultiByteString(reg_key_name);
|
||||||
fprintf(stderr,"%s: Can't delete registry class '%s'\n",
|
fprintf(stderr,"%s: Can't delete registry class '%s'\n",
|
||||||
getAppName(), reg_key_nameA);
|
getAppName(), reg_key_nameA);
|
||||||
|
|
|
@ -42,19 +42,22 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPTSTR* pKe
|
||||||
item.hItem = hItem;
|
item.hItem = hItem;
|
||||||
if (!TreeView_GetItem(hwndTV, &item)) return FALSE;
|
if (!TreeView_GetItem(hwndTV, &item)) return FALSE;
|
||||||
|
|
||||||
if (item.lParam) {
|
if (item.lParam)
|
||||||
|
{
|
||||||
/* found root key with valid key value */
|
/* found root key with valid key value */
|
||||||
*phKey = (HKEY)item.lParam;
|
*phKey = (HKEY)item.lParam;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!get_item_path(hwndTV, TreeView_GetParent(hwndTV, hItem), phKey, pKeyPath, pPathLen, pMaxLen)) return FALSE;
|
if(!get_item_path(hwndTV, TreeView_GetParent(hwndTV, hItem), phKey, pKeyPath, pPathLen, pMaxLen)) return FALSE;
|
||||||
if (*pPathLen) {
|
if (*pPathLen)
|
||||||
|
{
|
||||||
(*pKeyPath)[*pPathLen] = _T('\\');
|
(*pKeyPath)[*pPathLen] = _T('\\');
|
||||||
++(*pPathLen);
|
++(*pPathLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do
|
||||||
|
{
|
||||||
item.mask = TVIF_TEXT;
|
item.mask = TVIF_TEXT;
|
||||||
item.hItem = hItem;
|
item.hItem = hItem;
|
||||||
item.pszText = *pKeyPath + *pPathLen;
|
item.pszText = *pKeyPath + *pPathLen;
|
||||||
|
@ -62,7 +65,8 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPTSTR* pKe
|
||||||
item.cchTextMax = (int) maxLen;
|
item.cchTextMax = (int) maxLen;
|
||||||
if (!TreeView_GetItem(hwndTV, &item)) return FALSE;
|
if (!TreeView_GetItem(hwndTV, &item)) return FALSE;
|
||||||
len = _tcslen(item.pszText);
|
len = _tcslen(item.pszText);
|
||||||
if (len < maxLen - 1) {
|
if (len < maxLen - 1)
|
||||||
|
{
|
||||||
*pPathLen += (int) len;
|
*pPathLen += (int) len;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +74,8 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPTSTR* pKe
|
||||||
if (!newStr) return FALSE;
|
if (!newStr) return FALSE;
|
||||||
*pKeyPath = newStr;
|
*pKeyPath = newStr;
|
||||||
*pMaxLen *= 2;
|
*pMaxLen *= 2;
|
||||||
} while(TRUE);
|
}
|
||||||
|
while(TRUE);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -87,7 +92,8 @@ LPCTSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY* phRootKey)
|
||||||
if (maxLen == -1) return NULL;
|
if (maxLen == -1) return NULL;
|
||||||
if (!hItem) hItem = TreeView_GetSelection(hwndTV);
|
if (!hItem) hItem = TreeView_GetSelection(hwndTV);
|
||||||
if (!hItem) return NULL;
|
if (!hItem) return NULL;
|
||||||
if (!get_item_path(hwndTV, hItem, phRootKey, &pathBuffer, &pathLen, &maxLen)) {
|
if (!get_item_path(hwndTV, hItem, phRootKey, &pathBuffer, &pathLen, &maxLen))
|
||||||
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return pathBuffer;
|
return pathBuffer;
|
||||||
|
@ -106,8 +112,10 @@ static HTREEITEM AddEntryToTree(HWND hwndTV, HTREEITEM hParent, LPTSTR label, HK
|
||||||
TVITEM tvi;
|
TVITEM tvi;
|
||||||
TVINSERTSTRUCT tvins;
|
TVINSERTSTRUCT tvins;
|
||||||
|
|
||||||
if (hKey) {
|
if (hKey)
|
||||||
if (RegQueryInfoKey(hKey, 0, 0, 0, &dwChildren, 0, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS) {
|
{
|
||||||
|
if (RegQueryInfoKey(hKey, 0, 0, 0, &dwChildren, 0, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
dwChildren = 0;
|
dwChildren = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,15 +148,20 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
||||||
|
|
||||||
KeyPath = GetItemPath(hwndTV, hItem, &hRoot);
|
KeyPath = GetItemPath(hwndTV, hItem, &hRoot);
|
||||||
|
|
||||||
if (*KeyPath) {
|
if (*KeyPath)
|
||||||
if (RegOpenKeyEx(hRoot, KeyPath, 0, KEY_READ, &hKey) != ERROR_SUCCESS) {
|
{
|
||||||
|
if (RegOpenKeyEx(hRoot, KeyPath, 0, KEY_READ, &hKey) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
hKey = hRoot;
|
hKey = hRoot;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RegQueryInfoKey(hKey, 0, 0, 0, &dwCount, &dwMaxSubKeyLen, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS) {
|
if (RegQueryInfoKey(hKey, 0, 0, 0, &dwCount, &dwMaxSubKeyLen, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,19 +169,22 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
||||||
tvItem.mask = TVIF_CHILDREN;
|
tvItem.mask = TVIF_CHILDREN;
|
||||||
tvItem.hItem = hItem;
|
tvItem.hItem = hItem;
|
||||||
tvItem.cChildren = dwCount;
|
tvItem.cChildren = dwCount;
|
||||||
if (!TreeView_SetItem(hwndTV, &tvItem)) {
|
if (!TreeView_SetItem(hwndTV, &tvItem))
|
||||||
|
{
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We don't have to bother with the rest if it's not expanded. */
|
/* We don't have to bother with the rest if it's not expanded. */
|
||||||
if (TreeView_GetItemState(hwndTV, hItem, TVIS_EXPANDED) == 0) {
|
if (TreeView_GetItemState(hwndTV, hItem, TVIS_EXPANDED) == 0)
|
||||||
|
{
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
bSuccess = TRUE;
|
bSuccess = TRUE;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
dwMaxSubKeyLen++; /* account for the \0 terminator */
|
dwMaxSubKeyLen++; /* account for the \0 terminator */
|
||||||
if (!(Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(TCHAR)))) {
|
if (!(Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(TCHAR))))
|
||||||
|
{
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
tvItem.cchTextMax = dwMaxSubKeyLen;
|
tvItem.cchTextMax = dwMaxSubKeyLen;
|
||||||
|
@ -185,7 +201,8 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
||||||
DWORD dwStep = 10000;
|
DWORD dwStep = 10000;
|
||||||
|
|
||||||
for (childItem = TreeView_GetChild(hwndTV, hItem); childItem;
|
for (childItem = TreeView_GetChild(hwndTV, hItem); childItem;
|
||||||
childItem = TreeView_GetNextSibling(hwndTV, childItem)) {
|
childItem = TreeView_GetNextSibling(hwndTV, childItem))
|
||||||
|
{
|
||||||
|
|
||||||
if (dwActualSize + dwMaxSubKeyLen + 1 > dwPhysicalSize)
|
if (dwActualSize + dwMaxSubKeyLen + 1 > dwPhysicalSize)
|
||||||
{
|
{
|
||||||
|
@ -218,9 +235,11 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
||||||
|
|
||||||
/* Now go through all the children in the tree, and check if any have to be removed. */
|
/* Now go through all the children in the tree, and check if any have to be removed. */
|
||||||
childItem = TreeView_GetChild(hwndTV, hItem);
|
childItem = TreeView_GetChild(hwndTV, hItem);
|
||||||
while (childItem) {
|
while (childItem)
|
||||||
|
{
|
||||||
HTREEITEM nextItem = TreeView_GetNextSibling(hwndTV, childItem);
|
HTREEITEM nextItem = TreeView_GetNextSibling(hwndTV, childItem);
|
||||||
if (RefreshTreeItem(hwndTV, childItem) == FALSE) {
|
if (RefreshTreeItem(hwndTV, childItem) == FALSE)
|
||||||
|
{
|
||||||
(void)TreeView_DeleteItem(hwndTV, childItem);
|
(void)TreeView_DeleteItem(hwndTV, childItem);
|
||||||
}
|
}
|
||||||
childItem = nextItem;
|
childItem = nextItem;
|
||||||
|
@ -228,30 +247,38 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
||||||
|
|
||||||
/* Now go through all the children in the registry, and check if any have to be added. */
|
/* Now go through all the children in the registry, and check if any have to be added. */
|
||||||
bAddedAny = FALSE;
|
bAddedAny = FALSE;
|
||||||
for (dwIndex = 0; dwIndex < dwCount; dwIndex++) {
|
for (dwIndex = 0; dwIndex < dwCount; dwIndex++)
|
||||||
|
{
|
||||||
DWORD cName = dwMaxSubKeyLen, dwSubCount;
|
DWORD cName = dwMaxSubKeyLen, dwSubCount;
|
||||||
BOOL found;
|
BOOL found;
|
||||||
|
|
||||||
found = FALSE;
|
found = FALSE;
|
||||||
if (RegEnumKeyEx(hKey, dwIndex, Name, &cName, 0, 0, 0, NULL) != ERROR_SUCCESS) {
|
if (RegEnumKeyEx(hKey, dwIndex, Name, &cName, 0, 0, 0, NULL) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if the node is already in there. */
|
/* Check if the node is already in there. */
|
||||||
if (pszNodes) {
|
if (pszNodes)
|
||||||
for (s = pszNodes; *s; s += _tcslen(s) + 1) {
|
{
|
||||||
if (!_tcscmp(s, Name)) {
|
for (s = pszNodes; *s; s += _tcslen(s) + 1)
|
||||||
|
{
|
||||||
|
if (!_tcscmp(s, Name))
|
||||||
|
{
|
||||||
found = TRUE;
|
found = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found == FALSE) {
|
if (found == FALSE)
|
||||||
|
{
|
||||||
/* Find the number of children of the node. */
|
/* Find the number of children of the node. */
|
||||||
dwSubCount = 0;
|
dwSubCount = 0;
|
||||||
if (RegOpenKeyEx(hKey, Name, 0, KEY_QUERY_VALUE, &hSubKey) == ERROR_SUCCESS) {
|
if (RegOpenKeyEx(hKey, Name, 0, KEY_QUERY_VALUE, &hSubKey) == ERROR_SUCCESS)
|
||||||
if (RegQueryInfoKey(hSubKey, 0, 0, 0, &dwSubCount, 0, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS) {
|
{
|
||||||
|
if (RegQueryInfoKey(hSubKey, 0, 0, 0, &dwSubCount, 0, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
dwSubCount = 0;
|
dwSubCount = 0;
|
||||||
}
|
}
|
||||||
RegCloseKey(hSubKey);
|
RegCloseKey(hSubKey);
|
||||||
|
@ -287,7 +314,8 @@ BOOL RefreshTreeView(HWND hwndTV)
|
||||||
SendMessage(hwndTV, WM_SETREDRAW, FALSE, 0);
|
SendMessage(hwndTV, WM_SETREDRAW, FALSE, 0);
|
||||||
|
|
||||||
hItem = TreeView_GetChild(hwndTV, TreeView_GetRoot(hwndTV));
|
hItem = TreeView_GetChild(hwndTV, TreeView_GetRoot(hwndTV));
|
||||||
while (hItem) {
|
while (hItem)
|
||||||
|
{
|
||||||
RefreshTreeItem(hwndTV, hItem);
|
RefreshTreeItem(hwndTV, hItem);
|
||||||
hItem = TreeView_GetNextSibling(hwndTV, hItem);
|
hItem = TreeView_GetNextSibling(hwndTV, hItem);
|
||||||
}
|
}
|
||||||
|
@ -483,7 +511,8 @@ BOOL OnTreeExpanding(HWND hwndTV, NMTREEVIEW* pnmtv)
|
||||||
|
|
||||||
static int expanding;
|
static int expanding;
|
||||||
if (expanding) return FALSE;
|
if (expanding) return FALSE;
|
||||||
if (pnmtv->itemNew.state & TVIS_EXPANDEDONCE ) {
|
if (pnmtv->itemNew.state & TVIS_EXPANDEDONCE )
|
||||||
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
expanding = TRUE;
|
expanding = TRUE;
|
||||||
|
@ -493,10 +522,13 @@ BOOL OnTreeExpanding(HWND hwndTV, NMTREEVIEW* pnmtv)
|
||||||
keyPath = GetItemPath(hwndTV, pnmtv->itemNew.hItem, &hRoot);
|
keyPath = GetItemPath(hwndTV, pnmtv->itemNew.hItem, &hRoot);
|
||||||
if (!keyPath) goto done;
|
if (!keyPath) goto done;
|
||||||
|
|
||||||
if (*keyPath) {
|
if (*keyPath)
|
||||||
|
{
|
||||||
errCode = RegOpenKeyEx(hRoot, keyPath, 0, KEY_READ, &hNewKey);
|
errCode = RegOpenKeyEx(hRoot, keyPath, 0, KEY_READ, &hNewKey);
|
||||||
if (errCode != ERROR_SUCCESS) goto done;
|
if (errCode != ERROR_SUCCESS) goto done;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
hNewKey = hRoot;
|
hNewKey = hRoot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -506,13 +538,15 @@ BOOL OnTreeExpanding(HWND hwndTV, NMTREEVIEW* pnmtv)
|
||||||
Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(TCHAR));
|
Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(TCHAR));
|
||||||
if (!Name) goto done;
|
if (!Name) goto done;
|
||||||
|
|
||||||
for (dwIndex = 0; dwIndex < dwCount; dwIndex++) {
|
for (dwIndex = 0; dwIndex < dwCount; dwIndex++)
|
||||||
|
{
|
||||||
DWORD cName = dwMaxSubKeyLen, dwSubCount;
|
DWORD cName = dwMaxSubKeyLen, dwSubCount;
|
||||||
|
|
||||||
errCode = RegEnumKeyEx(hNewKey, dwIndex, Name, &cName, 0, 0, 0, 0);
|
errCode = RegEnumKeyEx(hNewKey, dwIndex, Name, &cName, 0, 0, 0, 0);
|
||||||
if (errCode != ERROR_SUCCESS) continue;
|
if (errCode != ERROR_SUCCESS) continue;
|
||||||
errCode = RegOpenKeyEx(hNewKey, Name, 0, KEY_QUERY_VALUE, &hKey);
|
errCode = RegOpenKeyEx(hNewKey, Name, 0, KEY_QUERY_VALUE, &hKey);
|
||||||
if (errCode == ERROR_SUCCESS) {
|
if (errCode == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
errCode = RegQueryInfoKey(hKey, 0, 0, 0, &dwSubCount, 0, 0, 0, 0, 0, 0, 0);
|
errCode = RegQueryInfoKey(hKey, 0, 0, 0, &dwSubCount, 0, 0, 0, 0, 0, 0, 0);
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
@ -611,14 +645,16 @@ HWND CreateTreeView(HWND hwndParent, LPTSTR pHostName, HMENU id)
|
||||||
0, 0, rcClient.right, rcClient.bottom,
|
0, 0, rcClient.right, rcClient.bottom,
|
||||||
hwndParent, id, hInst, NULL);
|
hwndParent, id, hInst, NULL);
|
||||||
/* Initialize the image list, and add items to the control. */
|
/* Initialize the image list, and add items to the control. */
|
||||||
if (!InitTreeViewImageLists(hwndTV) || !InitTreeViewItems(hwndTV, pHostName)) {
|
if (!InitTreeViewImageLists(hwndTV) || !InitTreeViewItems(hwndTV, pHostName))
|
||||||
|
{
|
||||||
DestroyWindow(hwndTV);
|
DestroyWindow(hwndTV);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return hwndTV;
|
return hwndTV;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DestroyTreeView() {
|
void DestroyTreeView()
|
||||||
|
{
|
||||||
if (pathBuffer)
|
if (pathBuffer)
|
||||||
HeapFree(GetProcessHeap(), 0, pathBuffer);
|
HeapFree(GetProcessHeap(), 0, pathBuffer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -210,6 +210,11 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
ApplicationPageOnNotify(wParam, lParam);
|
ApplicationPageOnNotify(wParam, lParam);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_KEYDOWN:
|
||||||
|
if (wParam == VK_DELETE)
|
||||||
|
ProcessPage_OnEndProcess();
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -584,6 +589,14 @@ void ApplicationPageOnNotify(WPARAM wParam, LPARAM lParam)
|
||||||
ApplicationPage_OnSwitchTo();
|
ApplicationPage_OnSwitchTo();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LVN_KEYDOWN:
|
||||||
|
|
||||||
|
if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE)
|
||||||
|
ApplicationPage_OnEndTask();
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pnmh->hwndFrom == ListView_GetHeader(hApplicationPageListCtrl))
|
else if (pnmh->hwndFrom == ListView_GetHeader(hApplicationPageListCtrl))
|
||||||
|
|
|
@ -392,13 +392,13 @@ BEGIN
|
||||||
WS_TABSTOP,125,94,115,10
|
WS_TABSTOP,125,94,115,10
|
||||||
CONTROL "GDI Objects",IDC_GDIOBJECTS,"Button",BS_AUTOCHECKBOX |
|
CONTROL "GDI Objects",IDC_GDIOBJECTS,"Button",BS_AUTOCHECKBOX |
|
||||||
WS_TABSTOP,125,105,115,10
|
WS_TABSTOP,125,105,115,10
|
||||||
CONTROL "I/O Writes",IDC_IOWRITES,"Button",BS_AUTOCHECKBOX |
|
CONTROL "Â/È ïèñàíåòà",IDC_IOWRITES,"Button",BS_AUTOCHECKBOX |
|
||||||
WS_TABSTOP,125,116,115,10
|
WS_TABSTOP,125,116,115,10
|
||||||
CONTROL "I/O Write Bytes",IDC_IOWRITEBYTES,"Button",
|
CONTROL "Â/È áàéòîâå çà ïèñàíå",IDC_IOWRITEBYTES,"Button",
|
||||||
BS_AUTOCHECKBOX | WS_TABSTOP,125,127,65,10
|
BS_AUTOCHECKBOX | WS_TABSTOP,125,127,65,10
|
||||||
CONTROL "I/O Other",IDC_IOOTHER,"Button",BS_AUTOCHECKBOX |
|
CONTROL "Äðóãè Â/È",IDC_IOOTHER,"Button",BS_AUTOCHECKBOX |
|
||||||
WS_TABSTOP,125,138,115,10
|
WS_TABSTOP,125,138,115,10
|
||||||
CONTROL "I/O Other Bytes",IDC_IOOTHERBYTES,"Button",
|
CONTROL "Äðóãè Â/È áàéòîâå",IDC_IOOTHERBYTES,"Button",
|
||||||
BS_AUTOCHECKBOX | WS_TABSTOP,125,149,115,10
|
BS_AUTOCHECKBOX | WS_TABSTOP,125,149,115,10
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,11 @@ ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
ProcessPageOnNotify(wParam, lParam);
|
ProcessPageOnNotify(wParam, lParam);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_KEYDOWN:
|
||||||
|
if (wParam == VK_DELETE)
|
||||||
|
ProcessPage_OnEndProcess();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -251,6 +256,12 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
|
||||||
ProcessPageShowContextMenu(GetSelectedProcessId());
|
ProcessPageShowContextMenu(GetSelectedProcessId());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LVN_KEYDOWN:
|
||||||
|
|
||||||
|
if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE)
|
||||||
|
ProcessPage_OnEndProcess();
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pnmh->hwndFrom == hProcessPageHeaderCtrl)
|
else if (pnmh->hwndFrom == hProcessPageHeaderCtrl)
|
||||||
|
|
|
@ -21,49 +21,51 @@
|
||||||
|
|
||||||
#include "winhelp_res.h"
|
#include "winhelp_res.h"
|
||||||
|
|
||||||
|
#pragma code_page(65001)
|
||||||
|
|
||||||
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
/* Menu */
|
/* Menu */
|
||||||
|
|
||||||
MAIN_MENU MENU
|
MAIN_MENU MENU
|
||||||
{
|
{
|
||||||
POPUP "파일(&F)" {
|
POPUP "파일(&F)" {
|
||||||
MENUITEM "열기(&O)...", MNID_FILE_OPEN
|
MENUITEM "열기(&O)...", MNID_FILE_OPEN
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "인쇄(&P)", MNID_FILE_PRINT
|
MENUITEM "인쇄(&P)", MNID_FILE_PRINT
|
||||||
MENUITEM "프린터 설정(&S)...", MNID_FILE_SETUP
|
MENUITEM "프린터 설정(&S)...", MNID_FILE_SETUP
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "종료(&E)", MNID_FILE_EXIT
|
MENUITEM "종료(&E)", MNID_FILE_EXIT
|
||||||
}
|
}
|
||||||
POPUP "편집(&E)" {
|
POPUP "편집(&E)" {
|
||||||
MENUITEM "복사(&C)...", MNID_EDIT_COPYDLG
|
MENUITEM "복사(&C)...", MNID_EDIT_COPYDLG
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "주석(&A)...", MNID_EDIT_ANNOTATE
|
MENUITEM "주석(&A)...", MNID_EDIT_ANNOTATE
|
||||||
}
|
}
|
||||||
POPUP "책갈피(&B)" {
|
POPUP "책갈피(&B)" {
|
||||||
MENUITEM "정의(&D)...", MNID_BKMK_DEFINE
|
MENUITEM "정의(&D)...", MNID_BKMK_DEFINE
|
||||||
}
|
}
|
||||||
POPUP "옵션(&O)" {
|
POPUP "옵션(&O)" {
|
||||||
POPUP "가능한 도움말 보이기"
|
POPUP "가능한 도움말 보이기"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "기본", MNID_OPTS_HELP_DEFAULT
|
MENUITEM "기본", MNID_OPTS_HELP_DEFAULT
|
||||||
MENUITEM "보이기", MNID_OPTS_HELP_VISIBLE
|
MENUITEM "보이기", MNID_OPTS_HELP_VISIBLE
|
||||||
MENUITEM "보여주지 않기", MNID_OPTS_HELP_NONVISIBLE
|
MENUITEM "보여주지 않기", MNID_OPTS_HELP_NONVISIBLE
|
||||||
END
|
END
|
||||||
MENUITEM "기록", MNID_OPTS_HISTORY
|
MENUITEM "기록", MNID_OPTS_HISTORY
|
||||||
POPUP "글꼴"
|
POPUP "글꼴"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "작게", MNID_OPTS_FONTS_SMALL
|
MENUITEM "작게", MNID_OPTS_FONTS_SMALL
|
||||||
MENUITEM "보통", MNID_OPTS_FONTS_NORMAL
|
MENUITEM "보통", MNID_OPTS_FONTS_NORMAL
|
||||||
MENUITEM "크게", MNID_OPTS_FONTS_LARGE
|
MENUITEM "크게", MNID_OPTS_FONTS_LARGE
|
||||||
END
|
END
|
||||||
MENUITEM "시스템 색상 사용", MNID_OPTS_SYSTEM_COLORS
|
MENUITEM "시스템 색상 사용", MNID_OPTS_SYSTEM_COLORS
|
||||||
}
|
}
|
||||||
POPUP "도움말(&H)" {
|
POPUP "도움말(&H)" {
|
||||||
MENUITEM "도움말 사용법(&O)", MNID_HELP_HELPON
|
MENUITEM "도움말 사용법(&O)", MNID_HELP_HELPON
|
||||||
MENUITEM "항상 위(&T)", MNID_HELP_HELPTOP
|
MENUITEM "항상 위(&T)", MNID_HELP_HELPTOP
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "정보(&I)...", MNID_HELP_ABOUT
|
MENUITEM "Wine 도움말 정보(&I)...", MNID_HELP_ABOUT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +73,7 @@ MAIN_MENU MENU
|
||||||
IDD_INDEX DIALOG 0, 0, 200, 190
|
IDD_INDEX DIALOG 0, 0, 200, 190
|
||||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||||
FONT 9, "MS Shell Dlg"
|
FONT 9, "MS Shell Dlg"
|
||||||
CAPTION "인덱스"
|
CAPTION "인덱스"
|
||||||
{
|
{
|
||||||
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
|
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
|
||||||
}
|
}
|
||||||
|
@ -79,50 +81,50 @@ CAPTION "
|
||||||
IDD_SEARCH DIALOG 0, 0, 200, 190
|
IDD_SEARCH DIALOG 0, 0, 200, 190
|
||||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||||
FONT 9, "MS Shell Dlg"
|
FONT 9, "MS Shell Dlg"
|
||||||
CAPTION "찾기"
|
CAPTION "찾기"
|
||||||
{
|
{
|
||||||
LTEXT "아직 구현되지 않음", -1, 10, 10, 180, 150
|
LTEXT "아직 구현되지 않음", -1, 10, 10, 180, 150
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Strings */
|
/* Strings */
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
{
|
{
|
||||||
STID_WINE_HELP, "Wine 도움말"
|
STID_WINE_HELP, "Wine 도움말"
|
||||||
STID_WHERROR, "에러"
|
STID_WHERROR, "에러"
|
||||||
STID_WARNING, "경고"
|
STID_WARNING, "경고"
|
||||||
STID_INFO, "정보"
|
STID_INFO, "정보"
|
||||||
STID_NOT_IMPLEMENTED, "구현되지 않았음"
|
STID_NOT_IMPLEMENTED, "구현되지 않았음"
|
||||||
STID_HLPFILE_ERROR_s, "도움말 파일 `%s'를 읽는 도중 오류 발생"
|
STID_HLPFILE_ERROR_s, "도움말 파일 `%s'를 읽는 도중 오류 발생"
|
||||||
STID_INDEX, "목차(&C)"
|
STID_INDEX, "목차(&C)"
|
||||||
STID_CONTENTS, "요약"
|
STID_CONTENTS, "요약"
|
||||||
STID_BACK, "뒤로(&B)"
|
STID_BACK, "뒤로(&B)"
|
||||||
STID_ALL_FILES, "모든 파일 (*.*)"
|
STID_ALL_FILES, "모든 파일 (*.*)"
|
||||||
STID_HELP_FILES_HLP, "도움말 파일 (*.hlp)"
|
STID_HELP_FILES_HLP, "도움말 파일 (*.hlp)"
|
||||||
STID_FILE_NOT_FOUND_s "%s을 찾을 수 없습니다'. 이 파일을 직접 찾겠습니까?"
|
STID_FILE_NOT_FOUND_s "%s을 찾을 수 없습니다'. 이 파일을 직접 찾겠습니까?"
|
||||||
STID_NO_RICHEDIT "richedit 구현을 찾을수 업습니다.. 취소중"
|
STID_NO_RICHEDIT "richedit 구현을 찾을수 업습니다.. 취소중"
|
||||||
STID_PSH_INDEX, "도움말 목차: "
|
STID_PSH_INDEX, "도움말 목차: "
|
||||||
}
|
}
|
||||||
|
|
||||||
CONTEXT_MENU MENU
|
CONTEXT_MENU MENU
|
||||||
BEGIN
|
BEGIN
|
||||||
POPUP ""
|
POPUP ""
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "주석...", MNID_CTXT_ANNOTATE
|
MENUITEM "주석...", MNID_CTXT_ANNOTATE
|
||||||
MENUITEM "복사", MNID_CTXT_COPY
|
MENUITEM "복사", MNID_CTXT_COPY
|
||||||
MENUITEM "인쇄...", MNID_CTXT_PRINT
|
MENUITEM "인쇄...", MNID_CTXT_PRINT
|
||||||
POPUP "글꼴"
|
POPUP "글꼴"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "좁게", MNID_CTXT_FONTS_SMALL
|
MENUITEM "좁게", MNID_CTXT_FONTS_SMALL
|
||||||
MENUITEM "보통", MNID_CTXT_FONTS_NORMAL
|
MENUITEM "보통", MNID_CTXT_FONTS_NORMAL
|
||||||
MENUITEM "넓게", MNID_CTXT_FONTS_LARGE
|
MENUITEM "넓게", MNID_CTXT_FONTS_LARGE
|
||||||
END
|
END
|
||||||
POPUP "도움말 항상 보이기"
|
POPUP "도움말 항상 보이기"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "기본", MNID_CTXT_HELP_DEFAULT
|
MENUITEM "기본", MNID_CTXT_HELP_DEFAULT
|
||||||
MENUITEM "보이기", MNID_CTXT_HELP_VISIBLE
|
MENUITEM "보이기", MNID_CTXT_HELP_VISIBLE
|
||||||
MENUITEM "안 보이기", MNID_CTXT_HELP_NONVISIBLE
|
MENUITEM "안 보이기", MNID_CTXT_HELP_NONVISIBLE
|
||||||
END
|
END
|
||||||
MENUITEM "시스템 색상 사용", MNID_CTXT_SYSTEM_COLORS
|
MENUITEM "시스템 색상 사용", MNID_CTXT_SYSTEM_COLORS
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
*
|
*
|
||||||
* Copyright 2002 liuspider <liuspider@yahoo.com>
|
* Copyright 2002 liuspider <liuspider@yahoo.com>
|
||||||
* Copyright 2008 Hongbo Ni <hongbo.at.njstar.com>
|
* Copyright 2008 Hongbo Ni <hongbo.at.njstar.com>
|
||||||
|
* Copyright 2010 Cheer Xiao <xiaqqaix.at.gmail.com>
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -37,7 +38,7 @@ MAIN_MENU MENU
|
||||||
MENUITEM "打印(&P)", MNID_FILE_PRINT
|
MENUITEM "打印(&P)", MNID_FILE_PRINT
|
||||||
MENUITEM "打印机设置(&S)...", MNID_FILE_SETUP
|
MENUITEM "打印机设置(&S)...", MNID_FILE_SETUP
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "退出(&E)", MNID_FILE_EXIT
|
MENUITEM "退出(&X)", MNID_FILE_EXIT
|
||||||
}
|
}
|
||||||
POPUP "编辑(&E)" {
|
POPUP "编辑(&E)" {
|
||||||
MENUITEM "复制(&C)...", MNID_EDIT_COPYDLG
|
MENUITEM "复制(&C)...", MNID_EDIT_COPYDLG
|
||||||
|
@ -48,7 +49,7 @@ MAIN_MENU MENU
|
||||||
MENUITEM "定义(&D)...", MNID_BKMK_DEFINE
|
MENUITEM "定义(&D)...", MNID_BKMK_DEFINE
|
||||||
}
|
}
|
||||||
POPUP "选项(&O)" {
|
POPUP "选项(&O)" {
|
||||||
POPUP "显示帮助"
|
POPUP "总是显示帮助"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "默认", MNID_OPTS_HELP_DEFAULT
|
MENUITEM "默认", MNID_OPTS_HELP_DEFAULT
|
||||||
MENUITEM "显示", MNID_OPTS_HELP_VISIBLE
|
MENUITEM "显示", MNID_OPTS_HELP_VISIBLE
|
||||||
|
@ -67,10 +68,26 @@ MAIN_MENU MENU
|
||||||
MENUITEM "如何使用帮助(&O)", MNID_HELP_HELPON
|
MENUITEM "如何使用帮助(&O)", MNID_HELP_HELPON
|
||||||
MENUITEM "总是在最前面(&T)", MNID_HELP_HELPTOP
|
MENUITEM "总是在最前面(&T)", MNID_HELP_HELPTOP
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "资料信息(&I)...", MNID_HELP_ABOUT
|
MENUITEM "关于 Wine 帮助(&I)...", MNID_HELP_ABOUT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IDD_INDEX DIALOG 0, 0, 200, 190
|
||||||
|
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
CAPTION "索引"
|
||||||
|
{
|
||||||
|
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
|
||||||
|
}
|
||||||
|
|
||||||
|
IDD_SEARCH DIALOG 0, 0, 200, 190
|
||||||
|
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
CAPTION "搜索"
|
||||||
|
{
|
||||||
|
LTEXT "尚未实现", -1, 10, 10, 180, 150
|
||||||
|
}
|
||||||
|
|
||||||
/* Strings */
|
/* Strings */
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
{
|
{
|
||||||
|
@ -79,17 +96,40 @@ STID_WHERROR, "错误"
|
||||||
STID_WARNING, "警告"
|
STID_WARNING, "警告"
|
||||||
STID_INFO, "信息"
|
STID_INFO, "信息"
|
||||||
STID_NOT_IMPLEMENTED, "未实现"
|
STID_NOT_IMPLEMENTED, "未实现"
|
||||||
STID_HLPFILE_ERROR_s, "读入帮助文件 ‘%s’ 时发生错误"
|
STID_HLPFILE_ERROR_s, "读入帮助文件“%s”时发生错误"
|
||||||
STID_INDEX, "内容(&C)"
|
STID_INDEX, "索引(&I)"
|
||||||
STID_CONTENTS, "概要"
|
STID_CONTENTS, "概要"
|
||||||
STID_BACK, "返回(&B)"
|
STID_BACK, "返回(&B)"
|
||||||
STID_ALL_FILES, "所有文件 (*.*)"
|
STID_ALL_FILES, "所有文件 (*.*)"
|
||||||
STID_HELP_FILES_HLP, "帮助文件 (*.hlp)"
|
STID_HELP_FILES_HLP, "帮助文件 (*.hlp)"
|
||||||
STID_FILE_NOT_FOUND_s "不能打开文件 '%s'. 你想要自己找这个文件吗?"
|
STID_FILE_NOT_FOUND_s "找不到文件“%s”。 你想要自己找这个文件吗?"
|
||||||
STID_NO_RICHEDIT "找不到 richedit... 终止"
|
STID_NO_RICHEDIT "找不到 richedit 的实现……终止"
|
||||||
STID_PSH_INDEX, "帮助内容: "
|
STID_PSH_INDEX, "帮助主题:"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CONTEXT_MENU MENU
|
||||||
|
BEGIN
|
||||||
|
POPUP ""
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "注释...", MNID_CTXT_ANNOTATE
|
||||||
|
MENUITEM "复制", MNID_CTXT_COPY
|
||||||
|
MENUITEM "打印...", MNID_CTXT_PRINT
|
||||||
|
POPUP "字体"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "小号", MNID_CTXT_FONTS_SMALL
|
||||||
|
MENUITEM "中号", MNID_CTXT_FONTS_NORMAL
|
||||||
|
MENUITEM "大号", MNID_CTXT_FONTS_LARGE
|
||||||
|
END
|
||||||
|
POPUP "总是显示帮助"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "默认", MNID_CTXT_HELP_DEFAULT
|
||||||
|
MENUITEM "显示", MNID_CTXT_HELP_VISIBLE
|
||||||
|
MENUITEM "不显示", MNID_CTXT_HELP_NONVISIBLE
|
||||||
|
END
|
||||||
|
MENUITEM "使用系统颜色", MNID_CTXT_SYSTEM_COLORS
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
||||||
|
|
||||||
/* Menu */
|
/* Menu */
|
||||||
|
|
|
@ -30,7 +30,6 @@ IDI_WINHELP ICON winhelp.ico
|
||||||
#include "Es.rc"
|
#include "Es.rc"
|
||||||
#include "Fi.rc"
|
#include "Fi.rc"
|
||||||
#include "Hu.rc"
|
#include "Hu.rc"
|
||||||
#include "Ko.rc"
|
|
||||||
#include "No.rc"
|
#include "No.rc"
|
||||||
#include "Pl.rc"
|
#include "Pl.rc"
|
||||||
#include "Sk.rc"
|
#include "Sk.rc"
|
||||||
|
@ -44,6 +43,7 @@ IDI_WINHELP ICON winhelp.ico
|
||||||
#include "He.rc"
|
#include "He.rc"
|
||||||
#include "It.rc"
|
#include "It.rc"
|
||||||
#include "Ja.rc"
|
#include "Ja.rc"
|
||||||
|
#include "Ko.rc"
|
||||||
#include "Lt.rc"
|
#include "Lt.rc"
|
||||||
#include "Nl.rc"
|
#include "Nl.rc"
|
||||||
#include "Pt.rc"
|
#include "Pt.rc"
|
||||||
|
|
|
@ -61,7 +61,7 @@ BEGIN
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
POPUP "其他(&X)"
|
POPUP "其他(&X)"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "选中信息(&I)", ID_EDIT_SELECTIONINFO
|
MENUITEM "选中信息(&I)", ID_EDIT_SELECTIONINFO /* 准确性待议 */
|
||||||
MENUITEM "文字格式(&F)", ID_EDIT_CHARFORMAT
|
MENUITEM "文字格式(&F)", ID_EDIT_CHARFORMAT
|
||||||
MENUITEM "默认格式(&D)", ID_EDIT_DEFCHARFORMAT
|
MENUITEM "默认格式(&D)", ID_EDIT_DEFCHARFORMAT
|
||||||
MENUITEM "段落格式(&H)", ID_EDIT_PARAFORMAT
|
MENUITEM "段落格式(&H)", ID_EDIT_PARAFORMAT
|
||||||
|
@ -118,7 +118,7 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "黑色", ID_COLOR_BLACK /* 未找到“标准译名表” */
|
MENUITEM "黑色", ID_COLOR_BLACK /* 未找到“标准译名表” */
|
||||||
MENUITEM "栗色", ID_COLOR_MAROON
|
MENUITEM "栗色", ID_COLOR_MAROON
|
||||||
MENUITEM "调和绿", ID_COLOR_GREEN
|
MENUITEM "绿色", ID_COLOR_GREEN
|
||||||
MENUITEM "橄榄色", ID_COLOR_OLIVE
|
MENUITEM "橄榄色", ID_COLOR_OLIVE
|
||||||
MENUITEM "藏青", ID_COLOR_NAVY
|
MENUITEM "藏青", ID_COLOR_NAVY
|
||||||
MENUITEM "紫色", ID_COLOR_PURPLE
|
MENUITEM "紫色", ID_COLOR_PURPLE
|
||||||
|
@ -126,7 +126,7 @@ BEGIN
|
||||||
MENUITEM "灰色", ID_COLOR_GRAY
|
MENUITEM "灰色", ID_COLOR_GRAY
|
||||||
MENUITEM "银色", ID_COLOR_SILVER
|
MENUITEM "银色", ID_COLOR_SILVER
|
||||||
MENUITEM "红色", ID_COLOR_RED
|
MENUITEM "红色", ID_COLOR_RED
|
||||||
MENUITEM "绿色", ID_COLOR_LIME
|
MENUITEM "青柠色", ID_COLOR_LIME
|
||||||
MENUITEM "黄色", ID_COLOR_YELLOW
|
MENUITEM "黄色", ID_COLOR_YELLOW
|
||||||
MENUITEM "蓝色", ID_COLOR_BLUE
|
MENUITEM "蓝色", ID_COLOR_BLUE
|
||||||
MENUITEM "洋红", ID_COLOR_FUCHSIA /* =magenta? */
|
MENUITEM "洋红", ID_COLOR_FUCHSIA /* =magenta? */
|
||||||
|
@ -487,7 +487,9 @@ BEGIN
|
||||||
STRING_PROMPT_SAVE_CHANGES, "儲存改動到 '%s'?"
|
STRING_PROMPT_SAVE_CHANGES, "儲存改動到 '%s'?"
|
||||||
STRING_SEARCH_FINISHED, "檔案查找結束."
|
STRING_SEARCH_FINISHED, "檔案查找結束."
|
||||||
STRING_LOAD_RICHED_FAILED, "RichEdit 裝載失敗."
|
STRING_LOAD_RICHED_FAILED, "RichEdit 裝載失敗."
|
||||||
STRING_SAVE_LOSEFORMATTING, "你已經選擇儲存為文本檔案, 這可能導致格式丟失. 你確定要這麼做嗎?"
|
STRING_SAVE_LOSEFORMATTING, "你已經選擇儲存為文本檔案, " \
|
||||||
|
"這可能導致格式丟失. " \
|
||||||
|
"你確定要這麼做嗎?"
|
||||||
STRING_INVALID_NUMBER, "數字格式無效"
|
STRING_INVALID_NUMBER, "數字格式無效"
|
||||||
STRING_OLE_STORAGE_NOT_SUPPORTED, "不支援OLE 儲存檔案"
|
STRING_OLE_STORAGE_NOT_SUPPORTED, "不支援OLE 儲存檔案"
|
||||||
STRING_WRITE_FAILED, "不能儲存檔案."
|
STRING_WRITE_FAILED, "不能儲存檔案."
|
||||||
|
|
|
@ -162,7 +162,7 @@ static void AddButton(HWND hwndToolBar, int nImage, int nCommand)
|
||||||
button.iBitmap = nImage;
|
button.iBitmap = nImage;
|
||||||
button.idCommand = nCommand;
|
button.idCommand = nCommand;
|
||||||
button.fsState = TBSTATE_ENABLED;
|
button.fsState = TBSTATE_ENABLED;
|
||||||
button.fsStyle = TBSTYLE_BUTTON;
|
button.fsStyle = BTNS_BUTTON;
|
||||||
button.dwData = 0;
|
button.dwData = 0;
|
||||||
button.iString = -1;
|
button.iString = -1;
|
||||||
SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button);
|
SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button);
|
||||||
|
@ -176,7 +176,7 @@ static void AddSeparator(HWND hwndToolBar)
|
||||||
button.iBitmap = -1;
|
button.iBitmap = -1;
|
||||||
button.idCommand = 0;
|
button.idCommand = 0;
|
||||||
button.fsState = 0;
|
button.fsState = 0;
|
||||||
button.fsStyle = TBSTYLE_SEP;
|
button.fsStyle = BTNS_SEP;
|
||||||
button.dwData = 0;
|
button.dwData = 0;
|
||||||
button.iString = -1;
|
button.iString = -1;
|
||||||
SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button);
|
SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button);
|
||||||
|
@ -1818,7 +1818,7 @@ static LRESULT OnCreate( HWND hWnd )
|
||||||
if(!SendMessageW(hReBarWnd, RB_SETBARINFO, 0, (LPARAM)&rbi))
|
if(!SendMessageW(hReBarWnd, RB_SETBARINFO, 0, (LPARAM)&rbi))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
hToolBarWnd = CreateToolbarEx(hReBarWnd, CCS_NOPARENTALIGN|CCS_NOMOVEY|WS_VISIBLE|WS_CHILD|TBSTYLE_TOOLTIPS|TBSTYLE_BUTTON,
|
hToolBarWnd = CreateToolbarEx(hReBarWnd, CCS_NOPARENTALIGN|CCS_NOMOVEY|WS_VISIBLE|WS_CHILD|TBSTYLE_TOOLTIPS|BTNS_BUTTON,
|
||||||
IDC_TOOLBAR,
|
IDC_TOOLBAR,
|
||||||
1, hInstance, IDB_TOOLBAR,
|
1, hInstance, IDB_TOOLBAR,
|
||||||
NULL, 0,
|
NULL, 0,
|
||||||
|
@ -1880,7 +1880,7 @@ static LRESULT OnCreate( HWND hWnd )
|
||||||
SendMessageW(hReBarWnd, RB_INSERTBAND, -1, (LPARAM)&rbb);
|
SendMessageW(hReBarWnd, RB_INSERTBAND, -1, (LPARAM)&rbb);
|
||||||
|
|
||||||
hFormatBarWnd = CreateToolbarEx(hReBarWnd,
|
hFormatBarWnd = CreateToolbarEx(hReBarWnd,
|
||||||
CCS_NOPARENTALIGN | CCS_NOMOVEY | WS_VISIBLE | TBSTYLE_TOOLTIPS | TBSTYLE_BUTTON,
|
CCS_NOPARENTALIGN | CCS_NOMOVEY | WS_VISIBLE | TBSTYLE_TOOLTIPS | BTNS_BUTTON,
|
||||||
IDC_FORMATBAR, 8, hInstance, IDB_FORMATBAR, NULL, 0, 16, 16, 16, 16, sizeof(TBBUTTON));
|
IDC_FORMATBAR, 8, hInstance, IDB_FORMATBAR, NULL, 0, 16, 16, 16, 16, sizeof(TBBUTTON));
|
||||||
|
|
||||||
AddButton(hFormatBarWnd, 0, ID_FORMAT_BOLD);
|
AddButton(hFormatBarWnd, 0, ID_FORMAT_BOLD);
|
||||||
|
|
38
base/applications/write/Sr.rc
Normal file
38
base/applications/write/Sr.rc
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Serbian language support
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 Mikolaj Zalewski
|
||||||
|
* Copyright 2010 Đorđe Vasiljević
|
||||||
|
*
|
||||||
|
* 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 "resources.h"
|
||||||
|
|
||||||
|
#pragma code_page(65001)
|
||||||
|
|
||||||
|
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
{
|
||||||
|
IDS_FAILED, "Покретање Писанке није успело"
|
||||||
|
}
|
||||||
|
|
||||||
|
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
{
|
||||||
|
IDS_FAILED, "Pokretanje Pisanke nije uspelo"
|
||||||
|
}
|
31
base/applications/write/Zh.rc
Normal file
31
base/applications/write/Zh.rc
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Simplified Chinese language support
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Cheer Xiao <xiaqqaix.at.gmail.com>
|
||||||
|
*
|
||||||
|
* 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 "resources.h"
|
||||||
|
|
||||||
|
/* Chinese text is encoded in UTF-8 */
|
||||||
|
#pragma code_page(65001)
|
||||||
|
|
||||||
|
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
{
|
||||||
|
IDS_FAILED, "启动写字板失败"
|
||||||
|
}
|
|
@ -39,4 +39,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
#include "Ro.rc"
|
#include "Ro.rc"
|
||||||
#include "Ru.rc"
|
#include "Ru.rc"
|
||||||
#include "Si.rc"
|
#include "Si.rc"
|
||||||
|
#include "Sr.rc"
|
||||||
#include "Uk.rc"
|
#include "Uk.rc"
|
||||||
|
#include "Zh.rc"
|
||||||
|
|
|
@ -104,7 +104,7 @@ BOOL PrepareService(LPCTSTR ServiceName)
|
||||||
HeapFree(GetProcessHeap(), 0, Buffer);
|
HeapFree(GetProcessHeap(), 0, Buffer);
|
||||||
|
|
||||||
/* Load the service dll */
|
/* Load the service dll */
|
||||||
DPRINT1("Trying to load dll\n");
|
DPRINT("Trying to load dll\n");
|
||||||
hServiceDll = LoadLibrary(DllPath);
|
hServiceDll = LoadLibrary(DllPath);
|
||||||
|
|
||||||
if (NULL == hServiceDll)
|
if (NULL == hServiceDll)
|
||||||
|
@ -226,7 +226,7 @@ int _tmain (int argc, LPTSTR argv [])
|
||||||
|
|
||||||
NrOfServices = LoadServiceCategory(argv[2]);
|
NrOfServices = LoadServiceCategory(argv[2]);
|
||||||
|
|
||||||
DPRINT1("NrOfServices: %lu\n", NrOfServices);
|
DPRINT("NrOfServices: %lu\n", NrOfServices);
|
||||||
if (0 == NrOfServices)
|
if (0 == NrOfServices)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -240,7 +240,7 @@ int _tmain (int argc, LPTSTR argv [])
|
||||||
/* Fill the service table */
|
/* Fill the service table */
|
||||||
for (i = 0; i < NrOfServices; ++i)
|
for (i = 0; i < NrOfServices; ++i)
|
||||||
{
|
{
|
||||||
DPRINT1("Loading service: %s\n", Service->Name);
|
DPRINT("Loading service: %s\n", Service->Name);
|
||||||
ServiceTable[i].lpServiceName = Service->Name;
|
ServiceTable[i].lpServiceName = Service->Name;
|
||||||
ServiceTable[i].lpServiceProc = Service->ServiceMainFunc;
|
ServiceTable[i].lpServiceProc = Service->ServiceMainFunc;
|
||||||
Service = Service->Next;
|
Service = Service->Next;
|
||||||
|
|
|
@ -94,20 +94,37 @@ static DWORD WINAPI
|
||||||
RpcServerThread(LPVOID lpParameter)
|
RpcServerThread(LPVOID lpParameter)
|
||||||
{
|
{
|
||||||
RPC_STATUS Status;
|
RPC_STATUS Status;
|
||||||
|
BOOLEAN RegisteredProtSeq = FALSE;
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(lpParameter);
|
UNREFERENCED_PARAMETER(lpParameter);
|
||||||
|
|
||||||
DPRINT("RpcServerThread() called\n");
|
DPRINT("RpcServerThread() called\n");
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* XP-compatible protocol sequence/endpoint */
|
||||||
Status = RpcServerUseProtseqEpW(L"ncacn_np",
|
Status = RpcServerUseProtseqEpW(L"ncacn_np",
|
||||||
20,
|
20,
|
||||||
L"\\pipe\\umpnpmgr",
|
L"\\pipe\\ntsvcs",
|
||||||
NULL); // Security descriptor
|
NULL); // Security descriptor
|
||||||
if (Status != RPC_S_OK)
|
if (Status == RPC_S_OK)
|
||||||
{
|
RegisteredProtSeq = TRUE;
|
||||||
|
else
|
||||||
DPRINT1("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
|
DPRINT1("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Vista-compatible protocol sequence/endpoint */
|
||||||
|
Status = RpcServerUseProtseqEpW(L"ncacn_np",
|
||||||
|
20,
|
||||||
|
L"\\pipe\\plugplay",
|
||||||
|
NULL); // Security descriptor
|
||||||
|
if (Status == RPC_S_OK)
|
||||||
|
RegisteredProtSeq = TRUE;
|
||||||
|
else
|
||||||
|
DPRINT1("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
|
||||||
|
|
||||||
|
/* Make sure there's a usable endpoint */
|
||||||
|
if (RegisteredProtSeq == FALSE)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
Status = RpcServerRegisterIf(pnp_v1_0_s_ifspec,
|
Status = RpcServerRegisterIf(pnp_v1_0_s_ifspec,
|
||||||
NULL,
|
NULL,
|
||||||
|
|
|
@ -1496,7 +1496,7 @@ MUI_ERROR bgBGErrorEntries[] =
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
//ERROR_INSUFFICIENT_DISKSPACE,
|
//ERROR_INSUFFICIENT_DISKSPACE,
|
||||||
"Not enough free space in the selected partition.\n"
|
"<EFBFBD> ¨§΅ΰ ¨ο ¤ο« ο¬ ¤®αβ βκη® αΆ®΅®¤® ―ΰ®αβΰ αβΆ®.\n"
|
||||||
" * <20> â¨á¥â¥ ª« ¢¨è, § ¤ ¯à®¤ê«¦¨â¥.",
|
" * <20> â¨á¥â¥ ª« ¢¨è, § ¤ ¯à®¤ê«¦¨â¥.",
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
|
@ -1640,7 +1640,7 @@ MUI_STRING bgBGStrings[] =
|
||||||
{STRING_COPYING,
|
{STRING_COPYING,
|
||||||
" ‡ ¯¨á ä ©«: %S"},
|
" ‡ ¯¨á ä ©«: %S"},
|
||||||
{STRING_SETUPCOPYINGFILES,
|
{STRING_SETUPCOPYINGFILES,
|
||||||
"’¥ç¥ § ¯¨á¢ ¥ ä ©«®¢¥â¥..."},
|
"” ©«®Ά¥β¥ α¥ § ―¨αΆ β..."},
|
||||||
{STRING_REGHIVEUPDATE,
|
{STRING_REGHIVEUPDATE,
|
||||||
" Žáê¢à¥¬¥ï¢ ¥ ॣ¨áâêà¨â¥ ஥¢¥..."},
|
" Žáê¢à¥¬¥ï¢ ¥ ॣ¨áâêà¨â¥ ஥¢¥..."},
|
||||||
{STRING_IMPORTFILE,
|
{STRING_IMPORTFILE,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* FILE: setup/usetup/lang/cs-CZ.rc
|
/* FILE: setup/usetup/lang/cs-CZ.rc
|
||||||
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
||||||
* THANKS TO: preston
|
* THANKS TO: preston
|
||||||
* UPDATED: 2010-05-25
|
* UPDATED: 2010-12-12
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -993,13 +993,13 @@ static MUI_ENTRY csCZBootLoaderEntries[] =
|
||||||
{
|
{
|
||||||
8,
|
8,
|
||||||
12,
|
12,
|
||||||
"Install bootloader on the harddisk (MBR and VBR).",
|
"Nainstalovat zavadŘź na pevně disk (MBR a VBR).",
|
||||||
TEXT_STYLE_NORMAL
|
TEXT_STYLE_NORMAL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
8,
|
8,
|
||||||
13,
|
13,
|
||||||
"Install bootloader on the harddisk (VBR only).",
|
"Nainstalovat zavadŘź na pevně disk (pouze VBR).",
|
||||||
TEXT_STYLE_NORMAL
|
TEXT_STYLE_NORMAL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -180,7 +180,7 @@ WORD wDefColor; /* default color */
|
||||||
* insert commas into a number
|
* insert commas into a number
|
||||||
*/
|
*/
|
||||||
INT
|
INT
|
||||||
ConvertULargeInteger(ULONGLONG num, LPTSTR des, INT len, BOOL bPutSeperator)
|
ConvertULargeInteger(ULONGLONG num, LPTSTR des, UINT len, BOOL bPutSeperator)
|
||||||
{
|
{
|
||||||
TCHAR temp[39]; /* maximum length with nNumberGroups == 1 */
|
TCHAR temp[39]; /* maximum length with nNumberGroups == 1 */
|
||||||
UINT n, iTarget;
|
UINT n, iTarget;
|
||||||
|
|
|
@ -99,7 +99,7 @@ INT cmd_cls (LPTSTR);
|
||||||
|
|
||||||
|
|
||||||
/* Prototypes for CMD.C */
|
/* Prototypes for CMD.C */
|
||||||
INT ConvertULargeInteger(ULONGLONG num, LPTSTR des, INT len, BOOL bPutSeperator);
|
INT ConvertULargeInteger(ULONGLONG num, LPTSTR des, UINT len, BOOL bPutSeperator);
|
||||||
HANDLE RunFile(DWORD, LPTSTR, LPTSTR, LPTSTR, INT);
|
HANDLE RunFile(DWORD, LPTSTR, LPTSTR, LPTSTR, INT);
|
||||||
INT ParseCommandLine(LPTSTR);
|
INT ParseCommandLine(LPTSTR);
|
||||||
struct _PARSED_COMMAND;
|
struct _PARSED_COMMAND;
|
||||||
|
|
|
@ -131,7 +131,7 @@ static VOID ConWrite(TCHAR *str, DWORD len, DWORD nStdHandle)
|
||||||
error_out_of_memory();
|
error_out_of_memory();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
len = MultiByteToWideChar(OutputCodePage, 0, str, len, buffer, len, NULL, NULL);
|
len = MultiByteToWideChar(OutputCodePage, 0, str, len, buffer, len);
|
||||||
str = (PVOID)buffer;
|
str = (PVOID)buffer;
|
||||||
#endif
|
#endif
|
||||||
WriteFile(hOutput, str, len * sizeof(WCHAR), &dwWritten, NULL);
|
WriteFile(hOutput, str, len * sizeof(WCHAR), &dwWritten, NULL);
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
#define NTOS_MODE_USER
|
#define NTOS_MODE_USER
|
||||||
#include <ndk/ntndk.h>
|
#include <ndk/ntndk.h>
|
||||||
|
|
|
@ -152,7 +152,7 @@ CreateDropTarget(IN HWND hwndTarget,
|
||||||
{
|
{
|
||||||
CopyMemory(&This->Callbacks,
|
CopyMemory(&This->Callbacks,
|
||||||
Callbacks,
|
Callbacks,
|
||||||
sizeof(Callbacks));
|
sizeof(*Callbacks));
|
||||||
}
|
}
|
||||||
|
|
||||||
hr = CoCreateInstance(&CLSID_DragDropHelper,
|
hr = CoCreateInstance(&CLSID_DragDropHelper,
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
IDM_TRAYWND MENU DISCARDABLE
|
IDM_TRAYWND MENU DISCARDABLE
|
||||||
|
@ -36,7 +37,7 @@ BEGIN
|
||||||
MENUITEM "&Ñèãóðíîñò...", IDM_SECURITY, MFT_STRING, MFS_ENABLED
|
MENUITEM "&Ñèãóðíîñò...", IDM_SECURITY, MFT_STRING, MFS_ENABLED
|
||||||
MENUITEM "&Ìðåæîâè âðúçêè", IDM_NETWORKCONNECTIONS, MFT_STRING, MFS_ENABLED
|
MENUITEM "&Ìðåæîâè âðúçêè", IDM_NETWORKCONNECTIONS, MFT_STRING, MFS_ENABLED
|
||||||
MENUITEM "&Ïå÷àòà÷è è ôàêñîâå", IDM_PRINTERSANDFAXES, MFT_STRING, MFS_ENABLED
|
MENUITEM "&Ïå÷àòà÷è è ôàêñîâå", IDM_PRINTERSANDFAXES, MFT_STRING, MFS_ENABLED
|
||||||
MENUITEM "&Taskbar and Start Menu", IDM_TASKBARANDSTARTMENU, MFT_STRING, MFS_ENABLED
|
MENUITEM "&Задачна лента и изборник „Пуск“", IDM_TASKBARANDSTARTMENU, MFT_STRING, MFS_ENABLED
|
||||||
END
|
END
|
||||||
POPUP "&Òúðñåíå", IDM_SEARCH
|
POPUP "&Òúðñåíå", IDM_SEARCH
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -49,6 +50,7 @@ BEGIN
|
||||||
MENUITEM "&Èçõîä %s...", IDM_LOGOFF, MFT_STRING, MFS_ENABLED
|
MENUITEM "&Èçõîä %s...", IDM_LOGOFF, MFT_STRING, MFS_ENABLED
|
||||||
MENUITEM "&Îòêà÷âàíå...", IDM_DISCONNECT, MFT_STRING, MFS_ENABLED
|
MENUITEM "&Îòêà÷âàíå...", IDM_DISCONNECT, MFT_STRING, MFS_ENABLED
|
||||||
/* undock computer*/
|
/* undock computer*/
|
||||||
|
/* неясно */
|
||||||
MENUITEM "Îò&ãíåçäâàíå íà êîìïþòúðà", IDM_UNDOCKCOMPUTER, MFT_STRING, MFS_ENABLED
|
MENUITEM "Îò&ãíåçäâàíå íà êîìïþòúðà", IDM_UNDOCKCOMPUTER, MFT_STRING, MFS_ENABLED
|
||||||
MENUITEM "&Èçêëþ÷âàíå...", IDM_SHUTDOWN, MFT_STRING, MFS_ENABLED
|
MENUITEM "&Èçêëþ÷âàíå...", IDM_SHUTDOWN, MFT_STRING, MFS_ENABLED
|
||||||
END
|
END
|
||||||
|
@ -121,7 +123,7 @@ BEGIN
|
||||||
IDS_PROPERTIES "&Ñâîéñòâà"
|
IDS_PROPERTIES "&Ñâîéñòâà"
|
||||||
IDS_OPEN_ALL_USERS "&Îòâàðÿíå íà âñè÷êè ïîòðåáèòåëè"
|
IDS_OPEN_ALL_USERS "&Îòâàðÿíå íà âñè÷êè ïîòðåáèòåëè"
|
||||||
IDS_EXPLORE_ALL_USERS "&Ðàçëèñòâàíå íà âñè÷êè ïîòðåáèòåëè"
|
IDS_EXPLORE_ALL_USERS "&Ðàçëèñòâàíå íà âñè÷êè ïîòðåáèòåëè"
|
||||||
IDS_STARTUP_ERROR "The system cannot start explorer because the registry is corrupted or unavailable."
|
IDS_STARTUP_ERROR "Уредбата не може да пусне изследователя, понеже понеже регистърът е увреден или недостъпен."
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGTABLE DISCARDABLE
|
STRINGTABLE DISCARDABLE
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* FILE: base/shell/explorer-new/lang/cs-CZ.rc
|
* FILE: base/shell/explorer-new/lang/cs-CZ.rc
|
||||||
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
||||||
* UPDATED: 2009-07-15
|
* UPDATED: 2010-05-31
|
||||||
*/
|
*/
|
||||||
|
|
||||||
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||||
|
@ -126,7 +126,7 @@ BEGIN
|
||||||
IDS_PROPERTIES "Vl&astnosti"
|
IDS_PROPERTIES "Vl&astnosti"
|
||||||
IDS_OPEN_ALL_USERS "Ote&vøít složku All Users"
|
IDS_OPEN_ALL_USERS "Ote&vøít složku All Users"
|
||||||
IDS_EXPLORE_ALL_USERS "Pro&cházet složku All Users"
|
IDS_EXPLORE_ALL_USERS "Pro&cházet složku All Users"
|
||||||
IDS_STARTUP_ERROR "The system cannot start explorer because the registry is corrupted or unavailable."
|
IDS_STARTUP_ERROR "Systém nemohl spustit proces Explorer, protože registry jsou poškozené nebo nedostupné."
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGTABLE DISCARDABLE
|
STRINGTABLE DISCARDABLE
|
||||||
|
|
|
@ -1257,7 +1257,7 @@ HKLM,"SYSTEM\CurrentControlSet\Services\Packet","Type",0x00010001,0x00000001
|
||||||
|
|
||||||
; PCI Bus driver
|
; PCI Bus driver
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Services\Pci","ErrorControl",0x00010001,0x00000001
|
HKLM,"SYSTEM\CurrentControlSet\Services\Pci","ErrorControl",0x00010001,0x00000001
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Services\Pci","Group",0x00000000,"Boot Bus
|
HKLM,"SYSTEM\CurrentControlSet\Services\Pci","Group",0x00000000,"Boot Bus "
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Services\Pci","Tag",0x00010001,0x00000002
|
HKLM,"SYSTEM\CurrentControlSet\Services\Pci","Tag",0x00010001,0x00000002
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Services\Pci\Parameters","1045C621",0x00030003,04,00,00,00,00,00,00,00
|
HKLM,"SYSTEM\CurrentControlSet\Services\Pci\Parameters","1045C621",0x00030003,04,00,00,00,00,00,00,00
|
||||||
HKLM,"SYSTEM\CurrentControlSet\Services\Pci\Parameters","10950640",0x00030003,04,00,00,00,00,00,00,00
|
HKLM,"SYSTEM\CurrentControlSet\Services\Pci\Parameters","10950640",0x00030003,04,00,00,00,00,00,00,00
|
||||||
|
|
|
@ -445,9 +445,12 @@ ScsiPortConvertPhysicalAddressToUlong(
|
||||||
SCSI_PHYSICAL_ADDRESS
|
SCSI_PHYSICAL_ADDRESS
|
||||||
NTAPI
|
NTAPI
|
||||||
ScsiPortConvertUlongToPhysicalAddress(
|
ScsiPortConvertUlongToPhysicalAddress(
|
||||||
IN ULONG UlongAddress)
|
IN ULONG_PTR UlongAddress)
|
||||||
{
|
{
|
||||||
return RtlConvertUlongToLargeInteger(UlongAddress);
|
SCSI_PHYSICAL_ADDRESS Address;
|
||||||
|
|
||||||
|
Address.QuadPart = UlongAddress;
|
||||||
|
return Address;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
149
dll/cpl/console/lang/bg-BG.rc
Normal file
149
dll/cpl/console/lang/bg-BG.rc
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
/* $Id: en-US.rc 49139 2010-10-13 21:23:48Z dreimer $
|
||||||
|
*
|
||||||
|
* PROJECT: ReactOS Console Configuration DLL
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* FILE: dll/cpl/console/lang/en-US.rc
|
||||||
|
* PURPOSE: English resource file
|
||||||
|
* PROGRAMMERS: Johannes Anderwald (johannes.anderwald@student.tugraz.at)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <commctrl.h>
|
||||||
|
|
||||||
|
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
IDD_PROPPAGEOPTIONS DIALOGEX 0, 0, 283, 220
|
||||||
|
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||||
|
CAPTION "Íàñòðîéêè"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
GROUPBOX "Ðàçìåð íà ïîêàçàëåöà", -1, 7, 7, 130, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||||
|
CONTROL "&Ìàëúê", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
|
||||||
|
CONTROL "&Ñðåäåí", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 90, 10
|
||||||
|
CONTROL "&Ãîëÿì", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 60, 90, 10
|
||||||
|
GROUPBOX "Íàñòðîéêè íà åêðàíà", -1, 143, 7, 130, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||||
|
CONTROL "&Ïðîçîðåö", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 152, 20, 70, 10
|
||||||
|
CONTROL "&Öÿë åêðàí", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 152, 40, 70, 10
|
||||||
|
GROUPBOX "Äíåâíèê íà çàïîâåäèòå", -1, 7, 84, 130, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||||
|
LTEXT "Ðàçìåð íà &áóôåðà", -1, 14, 101, 70, 12
|
||||||
|
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 119, 97, 12, 15
|
||||||
|
LTEXT "&Áðîé áóôåðè", -1, 14, 124, 70, 12
|
||||||
|
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 119, 120, 12, 15
|
||||||
|
CHECKBOX "Ïðå&ìàõâàíå íà ñòàðèòå áðîéêè", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 120, 15
|
||||||
|
GROUPBOX "Ïðîìÿíà íà íàñòðîéêèòå", -1, 143, 85, 130, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||||
|
CHECKBOX "Ðåæèì &áúðçà îáðàáîòêà", IDC_CHECK_QUICK_EDIT, 150, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||||
|
CHECKBOX "Ðåæèì &âìúêâàíå", IDC_CHECK_INSERT_MODE, 150, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
|
||||||
|
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||||
|
CAPTION "Øðèôò"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Ïðîçîðå÷åí ïðåãëåä:", -1, 10, 10, 94, 10
|
||||||
|
LTEXT "Ðàçìåð:", -1, 180, 10, 36, 10
|
||||||
|
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74
|
||||||
|
LISTBOX IDC_LBOX_FONTS, 181, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||||
|
LTEXT "&Øðèôò:", -1, 10, 105, 33, 10
|
||||||
|
CHECKBOX "&Ïîëó÷åðè øðèôòîâå", IDC_CHECK_BOLD_FONTS, 38, 105, 85, 10
|
||||||
|
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 40, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||||
|
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50
|
||||||
|
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35
|
||||||
|
LTEXT "Âñåêè çíàê å:", -1, 124, 166, 75, 10
|
||||||
|
LTEXT "screen pixel wide\nscreen pixel high", -1, 136, 180, 101, 20 /* íåÿñíî */
|
||||||
|
LTEXT "", IDC_FONT_SIZE_X, 120, 180, 10, 10
|
||||||
|
LTEXT "", IDC_FONT_SIZE_Y, 120, 188, 10, 10
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_PROPPAGELAYOUT DIALOGEX 0, 0, 273, 230
|
||||||
|
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||||
|
CAPTION "Ïîäðåäáà"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Ïðîçîðå÷åí ïðåãëåä", -1, 8, 6, 105, 10
|
||||||
|
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 8, 16, 115, 70
|
||||||
|
GROUPBOX "Ðàçìåð íà åêðàííèÿ áóôåð", -1, 130, 12, 135, 50
|
||||||
|
LTEXT "&Øèðèíà:", -1, 140, 28, 40, 10
|
||||||
|
LTEXT "&Âèñî÷èíà:", -1, 140, 46, 39, 10
|
||||||
|
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 25, 13, 14
|
||||||
|
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 42, 13, 14
|
||||||
|
GROUPBOX "Ðàçìåð íà ïðîçîðåöà", -1, 130, 65, 135, 47
|
||||||
|
LTEXT "&Ø&èðèíà:", -1, 140, 78, 39, 10
|
||||||
|
LTEXT "&Âè&ñî÷èíà:", -1, 140, 95, 37, 10
|
||||||
|
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 75, 13, 14
|
||||||
|
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 92, 13, 14
|
||||||
|
GROUPBOX "Ïîëîæåíèå íà ïðîçîðåöà", -1, 130, 116, 135, 64
|
||||||
|
LTEXT "Îò&ëÿâî:", -1, 140, 132, 38, 10
|
||||||
|
LTEXT "Îò&ãîðå:", -1, 140, 149, 40, 10
|
||||||
|
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 128, 13, 14
|
||||||
|
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 146, 13, 14
|
||||||
|
CHECKBOX "Óðåäáàòà íà&ìåñòâà ïðîçîðåöà", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 118, 10
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 253, 220
|
||||||
|
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||||
|
CAPTION "Öâåòîâå"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
CONTROL "Åêðàíåí &òåêñò", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 112, 10
|
||||||
|
CONTROL "Åêðàííà ïîä&öâåòêà", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||||
|
CONTROL "Èç&ñêà÷àù òåêñò", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||||
|
CONTROL "Èçñêà÷àùà ïîä&öâåòêà", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||||
|
GROUPBOX "Èçáðàíè öâåòîâè ñòîéíîñòè", -1, 129, 7, 118, 73
|
||||||
|
LTEXT "&×åðâåíî:", -1, 140, 25, 48, 10
|
||||||
|
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 240, 22, 12, 14
|
||||||
|
LTEXT "&Çåëåíî:", -1, 140, 42, 48, 10
|
||||||
|
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 240, 39, 12, 14
|
||||||
|
LTEXT "&Ñèíüî:", -1, 140, 60, 48, 10
|
||||||
|
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | WS_GROUP
|
||||||
|
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 240, 56, 12, 14
|
||||||
|
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 17, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 31, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 45, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 59, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 73, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 101, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 115, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 129, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 143, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 157, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 185, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 199, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 213, 90, 12, 12
|
||||||
|
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 227, 90, 12, 12
|
||||||
|
GROUPBOX "Èçáðàíè åêðàííè öâåòîâå:", -1, 7, 111, 240, 40
|
||||||
|
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 124, 224, 20
|
||||||
|
GROUPBOX "Èçáðàíè èçñêà÷àùè öâåòîâå:", -1, 7, 162, 240, 40
|
||||||
|
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_APPLYOPTIONS DIALOGEX 0, 0, 265, 79
|
||||||
|
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||||
|
CAPTION "Ïðèëàãàíå íà ñâîéñòâàòà"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
CONTROL "Ïðèëàãàíå íà ñâîéñòâàòà ñàìî çà &òåêóùèÿ ïðîçîðåö", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 12, 207, 10
|
||||||
|
CONTROL "Ïðèëàãàíå íà ñâîéñòâàòà çà áúäåùè ïðîçîðöè ñúñ ñúùîòî çàãëàâèå", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 31, 247, 10
|
||||||
|
PUSHBUTTON "Äîáðå", IDOK, 58, 58, 50, 14, WS_VISIBLE
|
||||||
|
PUSHBUTTON "Îòêàç", IDCANCEL, 114, 58, 50, 14, WS_VISIBLE
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_CPLNAME "Êîíçîëà"
|
||||||
|
IDS_CPLDESCRIPTION "Íàñòðîéêà íà êîíçîëàòà."
|
||||||
|
IDS_APPLY_SHORTCUT_ALL "Ïðîìÿíà íà &ïðåïðàòêàòà, çàïóñíàëà òîçè ïðîçîðåö"
|
||||||
|
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||||
|
IDS_RASTERFONTS "Ðåøåòú÷íè øðèôòîâå"
|
||||||
|
END
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue