mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 19:05:52 +00:00
[CONSRV]
- Further compactify console allocation / attach code by putting common code into helper functions. - Now, the default title of a console window is... "ReactOS Console" (and not command prompt since a console window isn't only reserved to command prompts). svn path=/branches/ros-csrss/; revision=58260
This commit is contained in:
parent
03d1c009f0
commit
54293ba008
25 changed files with 152 additions and 151 deletions
|
@ -121,13 +121,13 @@ ConSrvInitConsole(PCONSOLE* NewConsole, int ShowCmd, PCSR_PROCESS ConsoleLeaderP
|
|||
Console->Title.MaximumLength = Console->Title.Length = 0;
|
||||
Console->Title.Buffer = NULL;
|
||||
|
||||
if (LoadStringW(ConSrvDllInstance, IDS_COMMAND_PROMPT, Title, sizeof(Title) / sizeof(Title[0])))
|
||||
if (LoadStringW(ConSrvDllInstance, IDS_CONSOLE_TITLE, Title, sizeof(Title) / sizeof(Title[0])))
|
||||
{
|
||||
RtlCreateUnicodeString(&Console->Title, Title);
|
||||
}
|
||||
else
|
||||
{
|
||||
RtlCreateUnicodeString(&Console->Title, L"Command Prompt");
|
||||
RtlCreateUnicodeString(&Console->Title, L"ReactOS Console");
|
||||
}
|
||||
|
||||
InitializeCriticalSection(&Console->Lock);
|
||||
|
@ -364,10 +364,6 @@ CSR_API(SrvAllocConsole)
|
|||
return STATUS_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/** This comes from ConSrvConnect!! **/
|
||||
DPRINT1("SrvAllocConsole - Checkpoint 1\n");
|
||||
|
||||
/*
|
||||
* We are about to create a new console. However when ConSrvNewProcess
|
||||
* was called, we didn't know that we wanted to create a new console and
|
||||
|
@ -383,36 +379,17 @@ CSR_API(SrvAllocConsole)
|
|||
|
||||
/* Initialize a new Console owned by the Console Leader Process */
|
||||
Status = ConSrvAllocateConsole(ProcessData,
|
||||
&AllocConsoleRequest->InputHandle,
|
||||
&AllocConsoleRequest->OutputHandle,
|
||||
&AllocConsoleRequest->ErrorHandle,
|
||||
AllocConsoleRequest->ShowCmd,
|
||||
ConsoleLeader);
|
||||
&AllocConsoleRequest->InputHandle,
|
||||
&AllocConsoleRequest->OutputHandle,
|
||||
&AllocConsoleRequest->ErrorHandle,
|
||||
AllocConsoleRequest->ShowCmd,
|
||||
ConsoleLeader);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Console allocation failed\n");
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Add a reference count because the process is tied to the console */
|
||||
_InterlockedIncrement(&ProcessData->Console->ReferenceCount);
|
||||
|
||||
/* Insert the process into the processes list of the console */
|
||||
InsertHeadList(&ProcessData->Console->ProcessList, &ProcessData->ConsoleLink);
|
||||
|
||||
/* Duplicate the Event */
|
||||
Status = NtDuplicateObject(NtCurrentProcess(),
|
||||
ProcessData->Console->InputBuffer.ActiveEvent,
|
||||
ProcessData->Process->ProcessHandle,
|
||||
&ProcessData->ConsoleEvent,
|
||||
EVENT_ALL_ACCESS, 0, 0);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtDuplicateObject() failed: %lu\n", Status);
|
||||
ConSrvRemoveConsole(ProcessData);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Return it to the caller */
|
||||
AllocConsoleRequest->Console = ProcessData->Console;
|
||||
|
||||
|
@ -422,7 +399,6 @@ CSR_API(SrvAllocConsole)
|
|||
/* Set the Ctrl Dispatcher */
|
||||
ProcessData->CtrlDispatcher = AllocConsoleRequest->CtrlDispatcher;
|
||||
DPRINT("CONSRV: CtrlDispatcher address: %x\n", ProcessData->CtrlDispatcher);
|
||||
/******************************************************************************/
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
@ -446,6 +422,7 @@ CSR_API(SrvAttachConsole)
|
|||
return STATUS_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
/* Check whether we try to attach to the parent's console */
|
||||
if (ProcessId == ULongToHandle(ATTACH_PARENT_PROCESS))
|
||||
{
|
||||
PROCESS_BASIC_INFORMATION ProcessInfo;
|
||||
|
@ -468,17 +445,20 @@ CSR_API(SrvAttachConsole)
|
|||
DPRINT("Parent process ID = %lu\n", ProcessId);
|
||||
}
|
||||
|
||||
/* Lock the target process via its PID */
|
||||
DPRINT1("Lock process Id %lu\n", ProcessId);
|
||||
/* Lock the source process via its PID */
|
||||
Status = CsrLockProcessByClientId(ProcessId, &SourceProcess);
|
||||
DPRINT1("Lock process Status %lu\n", Status);
|
||||
DPRINT1("Lock process Id %lu - Status %lu\n", ProcessId, Status);
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
DPRINT1("AttachConsole OK\n");
|
||||
|
||||
/******************************************************************************/
|
||||
/** This comes from ConSrvNewProcess!! **/
|
||||
SourceProcessData = ConsoleGetPerProcessData(SourceProcess);
|
||||
|
||||
DPRINT1("SourceProcessData->Console = 0x%p\n", SourceProcessData->Console);
|
||||
if (SourceProcessData->Console == NULL)
|
||||
{
|
||||
Status = STATUS_INVALID_HANDLE;
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
/*
|
||||
* We are about to create a new console. However when ConSrvNewProcess
|
||||
* was called, we didn't know that we wanted to create a new console and
|
||||
|
@ -496,54 +476,15 @@ CSR_API(SrvAttachConsole)
|
|||
* Inherit the console from the parent,
|
||||
* if any, otherwise return an error.
|
||||
*/
|
||||
DPRINT1("SourceProcessData->Console = 0x%p\n", SourceProcessData->Console);
|
||||
if (SourceProcessData->Console == NULL)
|
||||
{
|
||||
Status = STATUS_INVALID_HANDLE;
|
||||
goto Quit;
|
||||
}
|
||||
TargetProcessData->Console = SourceProcessData->Console;
|
||||
|
||||
/// REMARK: This code comes from ConSrvAllocateConsole.
|
||||
/* Initialize the handles table */
|
||||
Status = ConSrvInitHandlesTable(TargetProcessData,
|
||||
&AttachConsoleRequest->InputHandle,
|
||||
&AttachConsoleRequest->OutputHandle,
|
||||
&AttachConsoleRequest->ErrorHandle);
|
||||
Status = ConSrvInheritConsole(TargetProcessData,
|
||||
SourceProcessData->Console,
|
||||
TRUE,
|
||||
&AttachConsoleRequest->InputHandle,
|
||||
&AttachConsoleRequest->OutputHandle,
|
||||
&AttachConsoleRequest->ErrorHandle);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to initialize the handles table\n");
|
||||
|
||||
// ConSrvRemoveConsole(TargetProcessData);
|
||||
TargetProcessData->Console = NULL;
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
/******************************************************************************/
|
||||
/** This comes from ConSrvConnect / SrvAllocConsole!! **/
|
||||
/* Add a reference count because the process is tied to the console */
|
||||
_InterlockedIncrement(&TargetProcessData->Console->ReferenceCount);
|
||||
|
||||
/* Insert the process into the processes list of the console */
|
||||
InsertHeadList(&TargetProcessData->Console->ProcessList, &TargetProcessData->ConsoleLink);
|
||||
|
||||
/** Here, we inherited the console handles from the "source" process,
|
||||
** so no need to reinitialize the handles table. **/
|
||||
|
||||
DPRINT1("SrvAttachConsole - Checkpoint\n");
|
||||
|
||||
/* Duplicate the Event */
|
||||
Status = NtDuplicateObject(NtCurrentProcess(),
|
||||
TargetProcessData->Console->InputBuffer.ActiveEvent,
|
||||
TargetProcessData->Process->ProcessHandle,
|
||||
&TargetProcessData->ConsoleEvent,
|
||||
EVENT_ALL_ACCESS, 0, 0);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtDuplicateObject() failed: %lu\n", Status);
|
||||
ConSrvRemoveConsole(TargetProcessData);
|
||||
DPRINT1("Console inheritance failed\n");
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
|
@ -558,14 +499,10 @@ CSR_API(SrvAttachConsole)
|
|||
DPRINT("CONSRV: CtrlDispatcher address: %x\n", TargetProcessData->CtrlDispatcher);
|
||||
|
||||
Status = STATUS_SUCCESS;
|
||||
/******************************************************************************/
|
||||
|
||||
Quit:
|
||||
DPRINT1("SrvAttachConsole - exiting 1\n");
|
||||
/* Unlock the "source" process */
|
||||
/* Unlock the "source" process and exit */
|
||||
CsrUnlockProcess(SourceProcess);
|
||||
DPRINT1("SrvAttachConsole - exiting 2\n");
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
|
|
@ -183,6 +183,12 @@ NTSTATUS FASTCALL ConSrvAllocateConsole(PCONSOLE_PROCESS_DATA ProcessData,
|
|||
PHANDLE pErrorHandle,
|
||||
int ShowCmd,
|
||||
PCSR_PROCESS CsrProcess);
|
||||
NTSTATUS FASTCALL ConSrvInheritConsole(PCONSOLE_PROCESS_DATA ProcessData,
|
||||
struct _CONSOLE* Console,
|
||||
BOOL CreateNewHandlesTable,
|
||||
PHANDLE pInputHandle,
|
||||
PHANDLE pOutputHandle,
|
||||
PHANDLE pErrorHandle);
|
||||
VOID FASTCALL ConSrvRemoveConsole(PCONSOLE_PROCESS_DATA ProcessData);
|
||||
NTSTATUS FASTCALL ConSrvGetConsole(PCONSOLE_PROCESS_DATA ProcessData,
|
||||
struct _CONSOLE** Console,
|
||||
|
|
|
@ -420,21 +420,91 @@ ConSrvAllocateConsole(PCONSOLE_PROCESS_DATA ProcessData,
|
|||
|
||||
/* Initialize the handles table */
|
||||
Status = ConSrvInitHandlesTable(ProcessData,
|
||||
pInputHandle,
|
||||
pOutputHandle,
|
||||
pErrorHandle);
|
||||
pInputHandle,
|
||||
pOutputHandle,
|
||||
pErrorHandle);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to initialize the handles table\n");
|
||||
|
||||
// ConSrvRemoveConsole(ProcessData);
|
||||
ConSrvDeleteConsole(ProcessData->Console);
|
||||
ProcessData->Console = NULL;
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
return Status;
|
||||
/* Duplicate the Input Event */
|
||||
Status = NtDuplicateObject(NtCurrentProcess(),
|
||||
ProcessData->Console->InputBuffer.ActiveEvent,
|
||||
ProcessData->Process->ProcessHandle,
|
||||
&ProcessData->ConsoleEvent,
|
||||
EVENT_ALL_ACCESS, 0, 0);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtDuplicateObject() failed: %lu\n", Status);
|
||||
ConSrvFreeHandlesTable(ProcessData);
|
||||
ConSrvDeleteConsole(ProcessData->Console);
|
||||
ProcessData->Console = NULL;
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Insert the process into the processes list of the console */
|
||||
InsertHeadList(&ProcessData->Console->ProcessList, &ProcessData->ConsoleLink);
|
||||
|
||||
/* Add a reference count because the process is tied to the console */
|
||||
_InterlockedIncrement(&ProcessData->Console->ReferenceCount);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
FASTCALL
|
||||
ConSrvInheritConsole(PCONSOLE_PROCESS_DATA ProcessData,
|
||||
PCONSOLE Console,
|
||||
BOOL CreateNewHandlesTable,
|
||||
PHANDLE pInputHandle,
|
||||
PHANDLE pOutputHandle,
|
||||
PHANDLE pErrorHandle)
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
|
||||
/* Inherit the console */
|
||||
ProcessData->Console = Console;
|
||||
|
||||
if (CreateNewHandlesTable)
|
||||
{
|
||||
/* Initialize the handles table */
|
||||
Status = ConSrvInitHandlesTable(ProcessData,
|
||||
pInputHandle,
|
||||
pOutputHandle,
|
||||
pErrorHandle);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to initialize the handles table\n");
|
||||
ProcessData->Console = NULL;
|
||||
return Status;
|
||||
}
|
||||
}
|
||||
|
||||
/* Duplicate the Input Event */
|
||||
Status = NtDuplicateObject(NtCurrentProcess(),
|
||||
ProcessData->Console->InputBuffer.ActiveEvent,
|
||||
ProcessData->Process->ProcessHandle,
|
||||
&ProcessData->ConsoleEvent,
|
||||
EVENT_ALL_ACCESS, 0, 0);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtDuplicateObject() failed: %lu\n", Status);
|
||||
ConSrvFreeHandlesTable(ProcessData); // NOTE: Always free the handles table.
|
||||
ProcessData->Console = NULL;
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Insert the process into the processes list of the console */
|
||||
InsertHeadList(&ProcessData->Console->ProcessList, &ProcessData->ConsoleLink);
|
||||
|
||||
/* Add a reference count because the process is tied to the console */
|
||||
_InterlockedIncrement(&ProcessData->Console->ReferenceCount);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -521,7 +591,7 @@ ConSrvNewProcess(PCSR_PROCESS SourceProcess,
|
|||
|
||||
PCONSOLE_PROCESS_DATA SourceProcessData, TargetProcessData;
|
||||
|
||||
DPRINT1("ConSrvNewProcess inside\n");
|
||||
DPRINT1("ConSrvNewProcess\n");
|
||||
DPRINT1("SourceProcess = 0x%p ; TargetProcess = 0x%p\n", SourceProcess, TargetProcess);
|
||||
|
||||
/* An empty target process is invalid */
|
||||
|
@ -565,17 +635,14 @@ ConSrvNewProcess(PCSR_PROCESS SourceProcess,
|
|||
NTSTATUS Status;
|
||||
|
||||
Status = ConSrvInheritHandlesTable(SourceProcessData, TargetProcessData);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return Status;
|
||||
}
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
|
||||
/* Temporary "inherit" the console from the parent */
|
||||
/* Temporary save the parent's console */
|
||||
TargetProcessData->ParentConsole = SourceProcessData->Console;
|
||||
}
|
||||
else
|
||||
{
|
||||
DPRINT1("ConSrvNewProcess - We don't launch a Console process : SourceProcessData->Console = 0x%p ; TargetProcess->Flags = %lu\n", SourceProcessData->Console, TargetProcess->Flags);
|
||||
DPRINT1("ConSrvNewProcess - We don't inherit a handle table : SourceProcessData->Console = 0x%p ; TargetProcess->Flags = %lu\n", SourceProcessData->Console, TargetProcess->Flags);
|
||||
}
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
|
@ -632,11 +699,11 @@ ConSrvConnect(IN PCSR_PROCESS CsrProcess,
|
|||
|
||||
/* Initialize a new Console owned by the Console Leader Process */
|
||||
Status = ConSrvAllocateConsole(ProcessData,
|
||||
&ConnectInfo->InputHandle,
|
||||
&ConnectInfo->OutputHandle,
|
||||
&ConnectInfo->ErrorHandle,
|
||||
ConnectInfo->ShowCmd,
|
||||
CsrProcess);
|
||||
&ConnectInfo->InputHandle,
|
||||
&ConnectInfo->OutputHandle,
|
||||
&ConnectInfo->ErrorHandle,
|
||||
ConnectInfo->ShowCmd,
|
||||
CsrProcess);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Console allocation failed\n");
|
||||
|
@ -648,27 +715,17 @@ ConSrvConnect(IN PCSR_PROCESS CsrProcess,
|
|||
DPRINT1("ConSrvConnect - Reuse current (parent's) console\n");
|
||||
|
||||
/* Reuse our current console */
|
||||
ProcessData->Console = ConnectInfo->Console;
|
||||
}
|
||||
|
||||
/* Add a reference count because the process is tied to the console */
|
||||
_InterlockedIncrement(&ProcessData->Console->ReferenceCount);
|
||||
|
||||
/* Insert the process into the processes list of the console */
|
||||
InsertHeadList(&ProcessData->Console->ProcessList, &ProcessData->ConsoleLink);
|
||||
|
||||
/// TODO: Move this up ?
|
||||
/* Duplicate the Event */
|
||||
Status = NtDuplicateObject(NtCurrentProcess(),
|
||||
ProcessData->Console->InputBuffer.ActiveEvent,
|
||||
ProcessData->Process->ProcessHandle,
|
||||
&ProcessData->ConsoleEvent,
|
||||
EVENT_ALL_ACCESS, 0, 0);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtDuplicateObject() failed: %lu\n", Status);
|
||||
ConSrvRemoveConsole(ProcessData);
|
||||
return Status;
|
||||
Status = ConSrvInheritConsole(ProcessData,
|
||||
ConnectInfo->Console,
|
||||
FALSE,
|
||||
NULL, // &ConnectInfo->InputHandle,
|
||||
NULL, // &ConnectInfo->OutputHandle,
|
||||
NULL); // &ConnectInfo->ErrorHandle);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Console inheritance failed\n");
|
||||
return Status;
|
||||
}
|
||||
}
|
||||
|
||||
/* Return it to the caller */
|
||||
|
@ -694,7 +751,8 @@ ConSrvDisconnect(PCSR_PROCESS Process)
|
|||
* This function is called whenever a new process (GUI or CUI) is destroyed.
|
||||
**************************************************************************/
|
||||
|
||||
DPRINT1("ConSrvDisconnect called\n");
|
||||
DPRINT1("ConSrvDisconnect\n");
|
||||
|
||||
if ( ProcessData->Console != NULL ||
|
||||
ProcessData->HandleTable != NULL )
|
||||
{
|
||||
|
|
|
@ -25,5 +25,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Прелистване нагоре"
|
||||
IDS_SCROLLDOWN "Прелистване надолу"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -24,5 +24,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Posunout nahoru"
|
||||
IDS_SCROLLDOWN "Posunout dolù"
|
||||
|
||||
IDS_COMMAND_PROMPT "Pøíkazový øádek"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -19,5 +19,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Nach oben scrollen"
|
||||
IDS_SCROLLDOWN "Nach unten scrollen"
|
||||
|
||||
IDS_COMMAND_PROMPT "Eingabeaufforderung"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -19,5 +19,5 @@ BEGIN
|
|||
IDS_SCROLLUP "数腴箸 疖睐"
|
||||
IDS_SCROLLDOWN "数腴箸 贶豉"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -19,5 +19,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Scroll up"
|
||||
IDS_SCROLLDOWN "Scroll down"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -24,5 +24,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Desplazar arriba"
|
||||
IDS_SCROLLDOWN "Desplazar abajo"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -21,5 +21,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Défiler en haut"
|
||||
IDS_SCROLLDOWN "Défiler en bas"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -19,5 +19,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Gulung Naik"
|
||||
IDS_SCROLLDOWN "Gulung Turun"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -28,5 +28,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Scorri sù"
|
||||
IDS_SCROLLDOWN "Scorri giù"
|
||||
|
||||
IDS_COMMAND_PROMPT "Prompt dei commandi"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -19,5 +19,5 @@ BEGIN
|
|||
IDS_SCROLLUP "上にスクロール"
|
||||
IDS_SCROLLDOWN "下にスクロール"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -19,5 +19,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Rull opp"
|
||||
IDS_SCROLLDOWN "Rull ned"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -27,5 +27,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Przewiń do góry"
|
||||
IDS_SCROLLDOWN "Przewiń na dół"
|
||||
|
||||
IDS_COMMAND_PROMPT "Wiersz polecenia"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -21,5 +21,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Scroll up"
|
||||
IDS_SCROLLDOWN "Scroll down"
|
||||
|
||||
IDS_COMMAND_PROMPT "Prompt de Comando"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -26,5 +26,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Derulează în sus"
|
||||
IDS_SCROLLDOWN "Derulează în jos"
|
||||
|
||||
IDS_COMMAND_PROMPT "Linie de comandă"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -19,5 +19,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Прокрутить вверх"
|
||||
IDS_SCROLLDOWN "Scroll Down"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -24,5 +24,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Rolovať nahor"
|
||||
IDS_SCROLLDOWN "Rolovať nadol"
|
||||
|
||||
IDS_COMMAND_PROMPT "Príkazový riadok"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -26,5 +26,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Skrolla upp"
|
||||
IDS_SCROLLDOWN "Skrolla ner"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -39,5 +39,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Yukarı yuvarla"
|
||||
IDS_SCROLLDOWN "Aşağı yuvarla"
|
||||
|
||||
IDS_COMMAND_PROMPT "Komut İstemi"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -27,5 +27,5 @@ BEGIN
|
|||
IDS_SCROLLUP "Прокрутити догори"
|
||||
IDS_SCROLLDOWN "Прокрутити донизу"
|
||||
|
||||
IDS_COMMAND_PROMPT "Командний рядок"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -19,5 +19,5 @@ BEGIN
|
|||
IDS_SCROLLUP "向上滚动"
|
||||
IDS_SCROLLDOWN "向下滚动"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -19,5 +19,5 @@ BEGIN
|
|||
IDS_SCROLLUP "向上滾動"
|
||||
IDS_SCROLLDOWN "向下滾動"
|
||||
|
||||
IDS_COMMAND_PROMPT "Command Prompt"
|
||||
IDS_CONSOLE_TITLE "ReactOS Console"
|
||||
END
|
||||
|
|
|
@ -37,6 +37,6 @@
|
|||
#define IDS_SCROLLUP 309
|
||||
#define IDS_SCROLLDOWN 310
|
||||
|
||||
#define IDS_COMMAND_PROMPT 500
|
||||
#define IDS_CONSOLE_TITLE 500
|
||||
|
||||
/* EOF */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue