mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +00:00
[REACTOS]
Merge of the ros-csrss branch created with a three-fold purpose: - Use the new Windows-compatible Client-Server Runtime Subsystem (csrss + csrsrv) written by Alex Ionescu to replace the old hacked one. Also the CSR client part, residing in ntdll, is updated. Some work also done on the dlls side, which communicate with CSR, namely kernel32. - Replace our very old win32csr.dll CSR server by the collection basesrv.dll / winsrv.dll as it is done under Windows. - Since the console subsystem is (for historical purposes on Windows) the only subsystem which exploits all the possibilities of the CSR, I decided to put it in a new CSR dll called 'consrv.dll', even if on Windows it is included together with other APIs inside the winsrv dll (since Windows NT 3.1 release) (I took the name 'consrv' from the dll where it was included in Windows NT 3.1 beta from October 1991). Some work was also done on its internal architecture (the external interface is of course unchanged for compatibility reasons) and a two-layer approach was developed, using the existing idea of console functions + GUI or TUI we already had in win32csr: * the "console server" which dialogs with the console applications, and which maintains a list of all the created consoles. * different "front-ends" corresponding to where you want to output the information (~= console hardware) (Work-In-Progress). Another idea would be to make those front-ends dynamically-loadable (instead of being compiled inside consrv). - I also fixed some parts of the console properties dialog box. More information can be found in http://www.reactos.org/archives/public/ros-dev/2013-April/016121.html CORE-122 CORE-2510 CORE-7002 #resolve #comment Committed in revision r58xxx. svn path=/trunk/; revision=58770
This commit is contained in:
@@ -2,48 +2,3 @@
|
||||
|
||||
#define IDS_HELP 0
|
||||
#define IDS_INVALID_MACRO_DEF 1
|
||||
|
||||
#ifndef RC_INVOKED
|
||||
|
||||
#ifdef UNICODE
|
||||
#define TNAME(x) x##W
|
||||
#else
|
||||
#define TNAME(x) x##A
|
||||
#endif
|
||||
|
||||
/* Missing from include/psdk/wincon.h */
|
||||
#ifndef ENABLE_INSERT_MODE
|
||||
#define ENABLE_INSERT_MODE 0x20
|
||||
#endif
|
||||
#ifndef ENABLE_EXTENDED_FLAGS
|
||||
#define ENABLE_EXTENDED_FLAGS 0x80
|
||||
#endif
|
||||
|
||||
/* Undocumented APIs */
|
||||
#ifndef AddConsoleAlias
|
||||
BOOL WINAPI AddConsoleAliasA(LPSTR, LPSTR, LPSTR);
|
||||
BOOL WINAPI AddConsoleAliasW(LPWSTR, LPWSTR, LPWSTR);
|
||||
#define AddConsoleAlias TNAME(AddConsoleAlias)
|
||||
#endif
|
||||
#ifndef GetConsoleAliases
|
||||
DWORD WINAPI GetConsoleAliasesA(LPSTR, DWORD, LPSTR);
|
||||
DWORD WINAPI GetConsoleAliasesW(LPWSTR, DWORD, LPWSTR);
|
||||
#define GetConsoleAliases TNAME(GetConsoleAliases)
|
||||
#endif
|
||||
#ifndef GetConsoleAliasesLength
|
||||
DWORD WINAPI GetConsoleAliasesLengthA(LPSTR);
|
||||
DWORD WINAPI GetConsoleAliasesLengthW(LPWSTR);
|
||||
#define GetConsoleAliasesLength TNAME(GetConsoleAliasesLength)
|
||||
#endif
|
||||
#ifndef GetConsoleAliasExes
|
||||
DWORD WINAPI GetConsoleAliasExesA(LPSTR, DWORD);
|
||||
DWORD WINAPI GetConsoleAliasExesW(LPWSTR, DWORD);
|
||||
#define GetConsoleAliasExes TNAME(GetConsoleAliasExes)
|
||||
#endif
|
||||
#ifndef GetConsoleAliasExesLength
|
||||
DWORD WINAPI GetConsoleAliasExesLengthA(VOID);
|
||||
DWORD WINAPI GetConsoleAliasExesLengthW(VOID);
|
||||
#define GetConsoleAliasExesLength TNAME(GetConsoleAliasExesLength)
|
||||
#endif
|
||||
|
||||
#endif /* RC_INVOKED */
|
||||
|
||||
@@ -166,7 +166,7 @@ SmpStopCsr(IN PSM_API_MSG SmApiMsg,
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
PSM_API_HANDLER SmpApiDispatch[SmMaxApiNumber] =
|
||||
PSM_API_HANDLER SmpApiDispatch[SmpMaxApiNumber - SmpCreateForeignSessionApi] =
|
||||
{
|
||||
SmpCreateForeignSession,
|
||||
SmpSessionComplete,
|
||||
@@ -401,13 +401,13 @@ SmpApiLoop(IN PVOID Parameter)
|
||||
RequestMsg.ReturnValue = STATUS_PENDING;
|
||||
|
||||
/* Check if the API is valid */
|
||||
if (RequestMsg.ApiNumber >= SmMaxApiNumber)
|
||||
if (RequestMsg.ApiNumber >= SmpMaxApiNumber)
|
||||
{
|
||||
/* It isn't, fail */
|
||||
DPRINT1("Invalid API: %lx\n", RequestMsg.ApiNumber);
|
||||
Status = STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
else if ((RequestMsg.ApiNumber <= SmTerminateForeignSessionApi) &&
|
||||
else if ((RequestMsg.ApiNumber <= SmpTerminateForeignSessionApi) &&
|
||||
!(ClientContext->Subsystem))
|
||||
{
|
||||
/* It's valid, but doesn't have a subsystem with it */
|
||||
|
||||
@@ -3,38 +3,6 @@ Signature="$ReactOS$"
|
||||
|
||||
[AddReg]
|
||||
|
||||
HKCU,"Console","CursorSize",0x00010003,25
|
||||
HKCU,"Console","FaceName",0x00000002,""
|
||||
HKCU,"Console","FontFamily",0x00010003,0
|
||||
HKCU,"Console","FontSize",0x00010003,0
|
||||
HKCU,"Console","FontWeight",0x00010003,0
|
||||
HKCU,"Console","FullScreen",0x00010003,0
|
||||
HKCU,"Console","HistoryBufferSize",0x00010003,50
|
||||
HKCU,"Console","InsertMode",0x00010003,1
|
||||
HKCU,"Console","LoadConIme",0x00010003,1
|
||||
HKCU,"Console","NumberOfHistoryBuffers",0x00010003,4
|
||||
HKCU,"Console","PopupColors",0x00010003,245
|
||||
HKCU,"Console","QuickEdit",0x00010003,0
|
||||
HKCU,"Console","ScreenBufferSize",0x00010003,19660880
|
||||
HKCU,"Console","ScreenColors",0x00010003,7
|
||||
HKCU,"Console","WindowSize",0x00010003,1638480
|
||||
HKCU,"Console","ColorTable00",0x00010003,0
|
||||
HKCU,"Console","ColorTable01",0x00010003,8388608
|
||||
HKCU,"Console","ColorTable02",0x00010003,32768
|
||||
HKCU,"Console","ColorTable03",0x00010003,8421376
|
||||
HKCU,"Console","ColorTable04",0x00010003,128
|
||||
HKCU,"Console","ColorTable05",0x00010003,8388736
|
||||
HKCU,"Console","ColorTable06",0x00010003,32896
|
||||
HKCU,"Console","ColorTable07",0x00010003,12632256
|
||||
HKCU,"Console","ColorTable08",0x00010003,8421504
|
||||
HKCU,"Console","ColorTable09",0x00010003,16711680
|
||||
HKCU,"Console","ColorTable10",0x00010003,65280
|
||||
HKCU,"Console","ColorTable11",0x00010003,16776960
|
||||
HKCU,"Console","ColorTable12",0x00010003,255
|
||||
HKCU,"Console","ColorTable13",0x00010003,16711935
|
||||
HKCU,"Console","ColorTable14",0x00010003,65535
|
||||
HKCU,"Console","ColorTable15",0x00010003,16777215
|
||||
|
||||
HKCU,"Control Panel",,0x00000012
|
||||
|
||||
; Accessibility
|
||||
|
||||
@@ -770,8 +770,7 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layout\DosKeybIDs","0001041F",2,
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layout\DosKeybIDs","00020408",2,"319"
|
||||
|
||||
; Lsa
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Lsa","Authentication Packages",0x00010000, \
|
||||
"msv1_0"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Lsa","Authentication Packages",0x00010000,"msv1_0"
|
||||
|
||||
; Network
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}",,0x00000000,"Network Adapters"
|
||||
@@ -1246,7 +1245,7 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems","Kmode",0x000
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems","Optional",0x00010000,"Posix"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems","Required",0x00010000,"Debug","Windows"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off MaxRequestThreads=16"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=consrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16"
|
||||
|
||||
; WOW Support
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,""
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
|
||||
include_directories(
|
||||
${REACTOS_SOURCE_DIR}/win32ss/user/consrv
|
||||
${REACTOS_SOURCE_DIR}/win32ss/user/consrv/frontends/gui)
|
||||
|
||||
spec2def(console.dll console.spec)
|
||||
|
||||
@@ -20,7 +23,8 @@ add_importlibs(console
|
||||
user32
|
||||
gdi32
|
||||
comctl32
|
||||
kernel32)
|
||||
kernel32
|
||||
ntdll)
|
||||
|
||||
add_pch(console console.h)
|
||||
add_cd_file(TARGET console DESTINATION reactos/system32 FOR all)
|
||||
|
||||
+256
-214
@@ -8,237 +8,279 @@
|
||||
|
||||
#include "console.h"
|
||||
|
||||
static
|
||||
BOOL
|
||||
PaintStaticControls(HWND hwndDlg, PConsoleInfo pConInfo, LPDRAWITEMSTRUCT drawItem)
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
static BOOL
|
||||
PaintStaticControls(HWND hwndDlg,
|
||||
PCONSOLE_PROPS pConInfo,
|
||||
LPDRAWITEMSTRUCT drawItem)
|
||||
{
|
||||
HBRUSH hBrush;
|
||||
DWORD index;
|
||||
HBRUSH hBrush;
|
||||
DWORD index;
|
||||
|
||||
index = drawItem->CtlID - IDC_STATIC_COLOR1;
|
||||
hBrush = CreateSolidBrush(pConInfo->Colors[index]);
|
||||
if (!hBrush)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
index = min(drawItem->CtlID - IDC_STATIC_COLOR1,
|
||||
sizeof(pConInfo->ci.Colors) / sizeof(pConInfo->ci.Colors[0]) - 1);
|
||||
hBrush = CreateSolidBrush(pConInfo->ci.Colors[index]);
|
||||
if (!hBrush)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
FillRect(drawItem->hDC, &drawItem->rcItem, hBrush);
|
||||
FillRect(drawItem->hDC, &drawItem->rcItem, hBrush);
|
||||
DeleteObject((HGDIOBJ)hBrush);
|
||||
if (pConInfo->ActiveStaticControl == index)
|
||||
{
|
||||
DrawFocusRect(drawItem->hDC, &drawItem->rcItem);
|
||||
}
|
||||
return TRUE;
|
||||
if (pConInfo->ActiveStaticControl == index)
|
||||
{
|
||||
DrawFocusRect(drawItem->hDC, &drawItem->rcItem);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
INT_PTR
|
||||
CALLBACK
|
||||
ColorsProc(
|
||||
HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam
|
||||
)
|
||||
INT_PTR CALLBACK
|
||||
ColorsProc(HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
PConsoleInfo pConInfo;
|
||||
LPNMUPDOWN lpnmud;
|
||||
LPPSHNOTIFY lppsn;
|
||||
LPDRAWITEMSTRUCT drawItem;
|
||||
DWORD red = MAXDWORD;
|
||||
DWORD green = MAXDWORD;
|
||||
DWORD blue = MAXDWORD;
|
||||
PCONSOLE_PROPS pConInfo;
|
||||
LPDRAWITEMSTRUCT drawItem;
|
||||
DWORD colorIndex;
|
||||
COLORREF color;
|
||||
|
||||
pConInfo = (PConsoleInfo) GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
pConInfo = (PCONSOLE_PROPS)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
pConInfo = (PConsoleInfo) ((LPPROPSHEETPAGE)lParam)->lParam;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo);
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_RADIO_SCREEN_BACKGROUND), BM_SETCHECK, BST_CHECKED, 0);
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_RED), UDM_SETRANGE, 0, (LPARAM)MAKELONG(255, 0));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_GREEN), UDM_SETRANGE, 0, (LPARAM)MAKELONG(255, 0));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_BLUE), UDM_SETRANGE, 0, (LPARAM)MAKELONG(255, 0));
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->ScreenBackground), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->ScreenBackground), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->ScreenBackground), FALSE);
|
||||
CheckRadioButton(hwndDlg, IDC_RADIO_SCREEN_TEXT, IDC_RADIO_POPUP_BACKGROUND, IDC_RADIO_SCREEN_BACKGROUND);
|
||||
return TRUE;
|
||||
}
|
||||
case WM_DRAWITEM:
|
||||
{
|
||||
drawItem = (LPDRAWITEMSTRUCT)lParam;
|
||||
if (drawItem->CtlID >= IDC_STATIC_COLOR1 && drawItem->CtlID <= IDC_STATIC_COLOR16)
|
||||
{
|
||||
return PaintStaticControls(hwndDlg, pConInfo, drawItem);
|
||||
}
|
||||
else if (drawItem->CtlID == IDC_STATIC_SCREEN_COLOR || drawItem->CtlID == IDC_STATIC_POPUP_COLOR)
|
||||
{
|
||||
PaintText(drawItem, pConInfo);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
lpnmud = (LPNMUPDOWN) lParam;
|
||||
lppsn = (LPPSHNOTIFY) lParam;
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
pConInfo = (PCONSOLE_PROPS)((LPPROPSHEETPAGE)lParam)->lParam;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo);
|
||||
|
||||
if (lppsn->hdr.code == PSN_APPLY)
|
||||
{
|
||||
if (!pConInfo->AppliedConfig)
|
||||
{
|
||||
ApplyConsoleInfo(hwndDlg, pConInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Options have already been applied */
|
||||
SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
|
||||
return TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
/* Set the valid range of the colour indicators */
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_RED), UDM_SETRANGE, 0, (LPARAM)MAKELONG(255, 0));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_GREEN), UDM_SETRANGE, 0, (LPARAM)MAKELONG(255, 0));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_BLUE), UDM_SETRANGE, 0, (LPARAM)MAKELONG(255, 0));
|
||||
|
||||
if (lpnmud->hdr.idFrom == IDC_UPDOWN_COLOR_RED)
|
||||
{
|
||||
red = lpnmud->iPos;
|
||||
}
|
||||
else if (lpnmud->hdr.idFrom == IDC_UPDOWN_COLOR_GREEN)
|
||||
{
|
||||
green = lpnmud->iPos;
|
||||
}
|
||||
else if (lpnmud->hdr.idFrom == IDC_UPDOWN_COLOR_BLUE)
|
||||
{
|
||||
blue = lpnmud->iPos;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
/* Select by default the screen background option */
|
||||
CheckRadioButton(hwndDlg, IDC_RADIO_SCREEN_TEXT, IDC_RADIO_POPUP_BACKGROUND, IDC_RADIO_SCREEN_BACKGROUND);
|
||||
SendMessage(hwndDlg, WM_COMMAND, IDC_RADIO_SCREEN_BACKGROUND, 0);
|
||||
|
||||
if (red == MAXDWORD)
|
||||
{
|
||||
red = SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_RED), UDM_GETPOS, 0, 0);
|
||||
if (HIWORD(red))
|
||||
{
|
||||
// TODO: Handle error
|
||||
break;
|
||||
}
|
||||
red = LOBYTE(red);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (green == MAXDWORD)
|
||||
{
|
||||
green = SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_GREEN), UDM_GETPOS, 0, 0);
|
||||
if (HIWORD(green))
|
||||
{
|
||||
// TODO: Handle error
|
||||
break;
|
||||
}
|
||||
green = LOBYTE(green);
|
||||
}
|
||||
case WM_DRAWITEM:
|
||||
{
|
||||
drawItem = (LPDRAWITEMSTRUCT)lParam;
|
||||
if (drawItem->CtlID >= IDC_STATIC_COLOR1 && drawItem->CtlID <= IDC_STATIC_COLOR16)
|
||||
{
|
||||
return PaintStaticControls(hwndDlg, pConInfo, drawItem);
|
||||
}
|
||||
else if (drawItem->CtlID == IDC_STATIC_SCREEN_COLOR || drawItem->CtlID == IDC_STATIC_POPUP_COLOR)
|
||||
{
|
||||
PaintText(drawItem, pConInfo);
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (blue == MAXDWORD)
|
||||
{
|
||||
blue = SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_BLUE), UDM_GETPOS, 0, 0);
|
||||
if (HIWORD(blue))
|
||||
{
|
||||
// TODO: Handle error
|
||||
break;
|
||||
}
|
||||
blue = LOBYTE(blue);
|
||||
}
|
||||
pConInfo->Colors[pConInfo->ActiveStaticControl] = RGB(red, green, blue);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_RADIO_SCREEN_TEXT:
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->ScreenText), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->ScreenText), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->ScreenText), FALSE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_SCREEN_BACKGROUND:
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->ScreenBackground), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->ScreenBackground), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->ScreenBackground), FALSE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_POPUP_TEXT:
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->PopupText), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->PopupText), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->PopupText), FALSE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_POPUP_BACKGROUND:
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->PopupBackground), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->PopupBackground), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->PopupBackground), FALSE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (HIWORD(wParam) == STN_CLICKED && LOWORD(wParam) >= IDC_STATIC_COLOR1 && LOWORD(wParam) <= IDC_STATIC_COLOR16)
|
||||
{
|
||||
DWORD index = LOWORD(wParam) - IDC_STATIC_COLOR1;
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
switch (((LPNMHDR)lParam)->code)
|
||||
{
|
||||
case PSN_APPLY:
|
||||
{
|
||||
// LPPSHNOTIFY lppsn;
|
||||
if (!pConInfo->AppliedConfig)
|
||||
{
|
||||
return ApplyConsoleInfo(hwndDlg, pConInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Options have already been applied */
|
||||
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (index == pConInfo->ActiveStaticControl)
|
||||
{
|
||||
/* Same static control was re-clicked */
|
||||
break;
|
||||
}
|
||||
case UDN_DELTAPOS:
|
||||
{
|
||||
LPNMUPDOWN lpnmud = (LPNMUPDOWN)lParam;
|
||||
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->Colors[index]), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->Colors[index]), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->Colors[index]), FALSE);
|
||||
/* Get the current color */
|
||||
colorIndex = pConInfo->ActiveStaticControl;
|
||||
color = pConInfo->ci.Colors[colorIndex];
|
||||
|
||||
/* Update global struct */
|
||||
if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_SCREEN_TEXT))
|
||||
{
|
||||
pConInfo->ScreenText = pConInfo->Colors[index];
|
||||
}
|
||||
else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_SCREEN_BACKGROUND))
|
||||
{
|
||||
pConInfo->ScreenBackground = pConInfo->Colors[index];
|
||||
}
|
||||
else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_POPUP_TEXT))
|
||||
{
|
||||
pConInfo->PopupText = pConInfo->Colors[index];
|
||||
}
|
||||
else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_POPUP_BACKGROUND))
|
||||
{
|
||||
pConInfo->PopupBackground = pConInfo->Colors[index];
|
||||
}
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + index), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
pConInfo->ActiveStaticControl = index;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (lpnmud->hdr.idFrom == IDC_UPDOWN_COLOR_RED)
|
||||
{
|
||||
if (lpnmud->iPos < 0) lpnmud->iPos = 0;
|
||||
else if (lpnmud->iPos > 255) lpnmud->iPos = 255;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
color = RGB(lpnmud->iPos, GetGValue(color), GetBValue(color));
|
||||
}
|
||||
else if (lpnmud->hdr.idFrom == IDC_UPDOWN_COLOR_GREEN)
|
||||
{
|
||||
if (lpnmud->iPos < 0) lpnmud->iPos = 0;
|
||||
else if (lpnmud->iPos > 255) lpnmud->iPos = 255;
|
||||
|
||||
return FALSE;
|
||||
color = RGB(GetRValue(color), lpnmud->iPos, GetBValue(color));
|
||||
}
|
||||
else if (lpnmud->hdr.idFrom == IDC_UPDOWN_COLOR_BLUE)
|
||||
{
|
||||
if (lpnmud->iPos < 0) lpnmud->iPos = 0;
|
||||
else if (lpnmud->iPos > 255) lpnmud->iPos = 255;
|
||||
|
||||
color = RGB(GetRValue(color), GetGValue(color), lpnmud->iPos);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
pConInfo->ci.Colors[colorIndex] = color;
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + colorIndex), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_RADIO_SCREEN_TEXT:
|
||||
{
|
||||
/* Get the color of the screen foreground */
|
||||
colorIndex = TextAttribFromAttrib(pConInfo->ci.ScreenAttrib);
|
||||
color = pConInfo->ci.Colors[colorIndex];
|
||||
|
||||
/* Set the values of the colour indicators */
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(color), FALSE);
|
||||
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
pConInfo->ActiveStaticControl = colorIndex;
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
case IDC_RADIO_SCREEN_BACKGROUND:
|
||||
{
|
||||
/* Get the color of the screen background */
|
||||
colorIndex = BkgdAttribFromAttrib(pConInfo->ci.ScreenAttrib);
|
||||
color = pConInfo->ci.Colors[colorIndex];
|
||||
|
||||
/* Set the values of the colour indicators */
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(color), FALSE);
|
||||
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
pConInfo->ActiveStaticControl = colorIndex;
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
case IDC_RADIO_POPUP_TEXT:
|
||||
{
|
||||
/* Get the color of the popup foreground */
|
||||
colorIndex = TextAttribFromAttrib(pConInfo->ci.PopupAttrib);
|
||||
color = pConInfo->ci.Colors[colorIndex];
|
||||
|
||||
/* Set the values of the colour indicators */
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(color), FALSE);
|
||||
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
pConInfo->ActiveStaticControl = colorIndex;
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
case IDC_RADIO_POPUP_BACKGROUND:
|
||||
{
|
||||
/* Get the color of the popup background */
|
||||
colorIndex = BkgdAttribFromAttrib(pConInfo->ci.PopupAttrib);
|
||||
color = pConInfo->ci.Colors[colorIndex];
|
||||
|
||||
/* Set the values of the colour indicators */
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(color), FALSE);
|
||||
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
pConInfo->ActiveStaticControl = colorIndex;
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( HIWORD(wParam) == STN_CLICKED &&
|
||||
IDC_STATIC_COLOR1 <= LOWORD(wParam) && LOWORD(wParam) <= IDC_STATIC_COLOR16 )
|
||||
{
|
||||
colorIndex = LOWORD(wParam) - IDC_STATIC_COLOR1;
|
||||
|
||||
if (colorIndex == pConInfo->ActiveStaticControl)
|
||||
{
|
||||
/* Same static control was re-clicked */
|
||||
break;
|
||||
}
|
||||
|
||||
color = pConInfo->ci.Colors[colorIndex];
|
||||
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(color), FALSE);
|
||||
|
||||
/* Update global struct */
|
||||
if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_SCREEN_TEXT))
|
||||
{
|
||||
pConInfo->ci.ScreenAttrib = MakeAttrib(colorIndex, BkgdAttribFromAttrib(pConInfo->ci.ScreenAttrib));
|
||||
}
|
||||
else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_SCREEN_BACKGROUND))
|
||||
{
|
||||
pConInfo->ci.ScreenAttrib = MakeAttrib(TextAttribFromAttrib(pConInfo->ci.ScreenAttrib), colorIndex);
|
||||
}
|
||||
else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_POPUP_TEXT))
|
||||
{
|
||||
pConInfo->ci.PopupAttrib = MakeAttrib(colorIndex, BkgdAttribFromAttrib(pConInfo->ci.PopupAttrib));
|
||||
}
|
||||
else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_POPUP_BACKGROUND))
|
||||
{
|
||||
pConInfo->ci.PopupAttrib = MakeAttrib(TextAttribFromAttrib(pConInfo->ci.PopupAttrib), colorIndex);
|
||||
}
|
||||
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
pConInfo->ActiveStaticControl = colorIndex;
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+332
-231
@@ -8,9 +8,10 @@
|
||||
|
||||
#include "console.h"
|
||||
|
||||
#define NUM_APPLETS (1)
|
||||
#define WM_SETCONSOLE (WM_USER+10)
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
#define NUM_APPLETS 1
|
||||
|
||||
LONG APIENTRY InitApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam);
|
||||
INT_PTR CALLBACK OptionsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
@@ -23,286 +24,386 @@ HINSTANCE hApplet = 0;
|
||||
/* Applets */
|
||||
APPLET Applets[NUM_APPLETS] =
|
||||
{
|
||||
{IDC_CPLICON, IDS_CPLNAME, IDS_CPLDESCRIPTION, InitApplet}
|
||||
{IDC_CPLICON, IDS_CPLNAME, IDS_CPLDESCRIPTION, InitApplet}
|
||||
};
|
||||
|
||||
static COLORREF s_Colors[] =
|
||||
/*
|
||||
* Default 16-color palette for foreground and background
|
||||
* (corresponding flags in comments).
|
||||
*/
|
||||
const COLORREF s_Colors[16] =
|
||||
{
|
||||
RGB(0, 0, 0),
|
||||
RGB(0, 0, 128),
|
||||
RGB(0, 128, 0),
|
||||
RGB(0, 128, 128),
|
||||
RGB(128, 0, 0),
|
||||
RGB(128, 0, 128),
|
||||
RGB(128, 128, 0),
|
||||
RGB(192, 192, 192),
|
||||
RGB(128, 128, 128),
|
||||
RGB(0, 0, 255),
|
||||
RGB(0, 255, 0),
|
||||
RGB(0, 255, 255),
|
||||
RGB(255, 0, 0),
|
||||
RGB(255, 0, 255),
|
||||
RGB(255, 255, 0),
|
||||
RGB(255, 255, 255)
|
||||
};
|
||||
RGB(0, 0, 0), // (Black)
|
||||
RGB(0, 0, 128), // BLUE
|
||||
RGB(0, 128, 0), // GREEN
|
||||
RGB(0, 128, 128), // BLUE | GREEN
|
||||
RGB(128, 0, 0), // RED
|
||||
RGB(128, 0, 128), // BLUE | RED
|
||||
RGB(128, 128, 0), // GREEN | RED
|
||||
RGB(192, 192, 192), // BLUE | GREEN | RED
|
||||
|
||||
static void
|
||||
InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, LPARAM lParam)
|
||||
RGB(128, 128, 128), // (Grey) INTENSITY
|
||||
RGB(0, 0, 255), // BLUE | INTENSITY
|
||||
RGB(0, 255, 0), // GREEN | INTENSITY
|
||||
RGB(0, 255, 255), // BLUE | GREEN | INTENSITY
|
||||
RGB(255, 0, 0), // RED | INTENSITY
|
||||
RGB(255, 0, 255), // BLUE | RED | INTENSITY
|
||||
RGB(255, 255, 0), // GREEN | RED | INTENSITY
|
||||
RGB(255, 255, 255) // BLUE | GREEN | RED | INTENSITY
|
||||
};
|
||||
/* Default attributes */
|
||||
#define DEFAULT_SCREEN_ATTRIB (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED)
|
||||
#define DEFAULT_POPUP_ATTRIB (FOREGROUND_BLUE | FOREGROUND_RED | \
|
||||
BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_INTENSITY)
|
||||
/* Cursor size */
|
||||
#define CSR_DEFAULT_CURSOR_SIZE 25
|
||||
|
||||
static VOID
|
||||
InitPropSheetPage(PROPSHEETPAGE *psp,
|
||||
WORD idDlg,
|
||||
DLGPROC DlgProc,
|
||||
LPARAM lParam)
|
||||
{
|
||||
ZeroMemory(psp, sizeof(PROPSHEETPAGE));
|
||||
psp->dwSize = sizeof(PROPSHEETPAGE);
|
||||
psp->dwFlags = PSP_DEFAULT;
|
||||
psp->hInstance = hApplet;
|
||||
psp->pszTemplate = MAKEINTRESOURCE(idDlg);
|
||||
psp->pfnDlgProc = DlgProc;
|
||||
psp->lParam = lParam;
|
||||
ZeroMemory(psp, sizeof(PROPSHEETPAGE));
|
||||
psp->dwSize = sizeof(PROPSHEETPAGE);
|
||||
psp->dwFlags = PSP_DEFAULT;
|
||||
psp->hInstance = hApplet;
|
||||
psp->pszTemplate = MAKEINTRESOURCE(idDlg);
|
||||
psp->pfnDlgProc = DlgProc;
|
||||
psp->lParam = lParam;
|
||||
}
|
||||
|
||||
PConsoleInfo
|
||||
PCONSOLE_PROPS
|
||||
AllocConsoleInfo()
|
||||
{
|
||||
PConsoleInfo pConInfo;
|
||||
|
||||
pConInfo = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ConsoleInfo));
|
||||
|
||||
return pConInfo;
|
||||
/* Adapted for holding GUI terminal information */
|
||||
return HeapAlloc(GetProcessHeap(),
|
||||
HEAP_ZERO_MEMORY,
|
||||
sizeof(CONSOLE_PROPS) + sizeof(GUI_CONSOLE_INFO));
|
||||
}
|
||||
|
||||
void
|
||||
InitConsoleDefaults(PConsoleInfo pConInfo)
|
||||
VOID
|
||||
InitConsoleDefaults(PCONSOLE_PROPS pConInfo)
|
||||
{
|
||||
/* Initialize struct */
|
||||
pConInfo->InsertMode = TRUE;
|
||||
pConInfo->HistoryBufferSize = 50;
|
||||
pConInfo->NumberOfHistoryBuffers = 5;
|
||||
pConInfo->ScreenText = RGB(192, 192, 192);
|
||||
pConInfo->ScreenBackground = RGB(0, 0, 0);
|
||||
pConInfo->PopupText = RGB(128, 0, 128);
|
||||
pConInfo->PopupBackground = RGB(255, 255, 255);
|
||||
pConInfo->WindowSize = (DWORD)MAKELONG(80, 25);
|
||||
pConInfo->WindowPosition = UINT_MAX;
|
||||
pConInfo->ScreenBuffer = MAKELONG(80, 300);
|
||||
pConInfo->UseRasterFonts = TRUE;
|
||||
pConInfo->FontSize = (DWORD)MAKELONG(8, 12);
|
||||
pConInfo->FontWeight = FW_NORMAL;
|
||||
memcpy(pConInfo->Colors, s_Colors, sizeof(s_Colors));
|
||||
}
|
||||
PGUI_CONSOLE_INFO GuiInfo = NULL;
|
||||
|
||||
/* FIXME: Get also the defaults from the registry */
|
||||
|
||||
/* Initialize the default properties */
|
||||
pConInfo->ci.HistoryBufferSize = 50;
|
||||
pConInfo->ci.NumberOfHistoryBuffers = 4;
|
||||
pConInfo->ci.HistoryNoDup = FALSE;
|
||||
pConInfo->ci.FullScreen = FALSE;
|
||||
pConInfo->ci.QuickEdit = FALSE;
|
||||
pConInfo->ci.InsertMode = TRUE;
|
||||
// pConInfo->ci.InputBufferSize;
|
||||
pConInfo->ci.ScreenBufferSize.X = 80;
|
||||
pConInfo->ci.ScreenBufferSize.Y = 300;
|
||||
pConInfo->ci.ConsoleSize.X = 80;
|
||||
pConInfo->ci.ConsoleSize.Y = 25;
|
||||
pConInfo->ci.CursorBlinkOn = TRUE;
|
||||
pConInfo->ci.ForceCursorOff = FALSE;
|
||||
pConInfo->ci.CursorSize = CSR_DEFAULT_CURSOR_SIZE;
|
||||
pConInfo->ci.ScreenAttrib = DEFAULT_SCREEN_ATTRIB;
|
||||
pConInfo->ci.PopupAttrib = DEFAULT_POPUP_ATTRIB;
|
||||
pConInfo->ci.CodePage = 0;
|
||||
pConInfo->ci.ConsoleTitle[0] = L'\0';
|
||||
|
||||
/* Adapted for holding GUI terminal information */
|
||||
pConInfo->TerminalInfo.Size = sizeof(GUI_CONSOLE_INFO);
|
||||
GuiInfo = pConInfo->TerminalInfo.TermInfo = (PGUI_CONSOLE_INFO)(pConInfo + 1);
|
||||
wcsncpy(GuiInfo->FaceName, L"Fixedsys", LF_FACESIZE); // HACK: !!
|
||||
// GuiInfo->FaceName[0] = L'\0';
|
||||
GuiInfo->FontFamily = FF_DONTCARE;
|
||||
GuiInfo->FontSize = 0;
|
||||
GuiInfo->FontWeight = FW_DONTCARE;
|
||||
GuiInfo->UseRasterFonts = TRUE;
|
||||
|
||||
GuiInfo->AutoPosition = TRUE;
|
||||
GuiInfo->WindowOrigin.x = 0;
|
||||
GuiInfo->WindowOrigin.y = 0;
|
||||
|
||||
memcpy(pConInfo->ci.Colors, s_Colors, sizeof(s_Colors));
|
||||
}
|
||||
|
||||
INT_PTR
|
||||
CALLBACK
|
||||
ApplyProc(
|
||||
HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam
|
||||
)
|
||||
ApplyProc(HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
HWND hDlgCtrl;
|
||||
HWND hDlgCtrl;
|
||||
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_APPLY_CURRENT);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, BST_CHECKED, 0);
|
||||
return TRUE;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
if (LOWORD(wParam) == IDOK)
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_APPLY_CURRENT);
|
||||
if ( SendMessage(hDlgCtrl, BM_GETCHECK, 0, 0) == BST_CHECKED )
|
||||
EndDialog(hwndDlg, IDC_RADIO_APPLY_CURRENT);
|
||||
else
|
||||
EndDialog(hwndDlg, IDC_RADIO_APPLY_ALL);
|
||||
}
|
||||
else if (LOWORD(wParam) == IDCANCEL)
|
||||
{
|
||||
EndDialog(hwndDlg, IDCANCEL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_APPLY_CURRENT);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, BST_CHECKED, 0);
|
||||
return TRUE;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
if (LOWORD(wParam) == IDOK)
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_APPLY_CURRENT);
|
||||
if (SendMessage(hDlgCtrl, BM_GETCHECK, 0, 0) == BST_CHECKED)
|
||||
EndDialog(hwndDlg, IDC_RADIO_APPLY_CURRENT);
|
||||
else
|
||||
EndDialog(hwndDlg, IDC_RADIO_APPLY_ALL);
|
||||
}
|
||||
else if (LOWORD(wParam) == IDCANCEL)
|
||||
{
|
||||
EndDialog(hwndDlg, IDCANCEL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
ApplyConsoleInfo(HWND hwndDlg, PConsoleInfo pConInfo)
|
||||
BOOL
|
||||
ApplyConsoleInfo(HWND hwndDlg,
|
||||
PCONSOLE_PROPS pConInfo)
|
||||
{
|
||||
INT_PTR res = 0;
|
||||
BOOL SetParams = FALSE;
|
||||
BOOL SaveParams = FALSE;
|
||||
|
||||
res = DialogBox(hApplet, MAKEINTRESOURCE(IDD_APPLYOPTIONS), hwndDlg, ApplyProc);
|
||||
/*
|
||||
* If we are setting the default parameters, just save them,
|
||||
* otherwise display the save-confirmation dialog.
|
||||
*/
|
||||
if (pConInfo->ShowDefaultParams)
|
||||
{
|
||||
SetParams = TRUE;
|
||||
SaveParams = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
INT_PTR res = DialogBox(hApplet, MAKEINTRESOURCE(IDD_APPLYOPTIONS), hwndDlg, ApplyProc);
|
||||
|
||||
if (res == IDCANCEL)
|
||||
{
|
||||
/* Don't destroy when user presses cancel */
|
||||
SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_INVALID_NOCHANGEPAGE);
|
||||
}
|
||||
else if ( res == IDC_RADIO_APPLY_ALL )
|
||||
{
|
||||
pConInfo->AppliedConfig = TRUE;
|
||||
SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
|
||||
SendMessage(pConInfo->hConsoleWindow, PM_APPLY_CONSOLE_INFO, (WPARAM)pConInfo, (LPARAM)TRUE);
|
||||
}
|
||||
else if ( res == IDC_RADIO_APPLY_CURRENT )
|
||||
{
|
||||
pConInfo->AppliedConfig = TRUE;
|
||||
SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
|
||||
SendMessage(pConInfo->hConsoleWindow, PM_APPLY_CONSOLE_INFO, (WPARAM)pConInfo, (LPARAM)TRUE);
|
||||
}
|
||||
SetParams = (res != IDCANCEL);
|
||||
SaveParams = (res == IDC_RADIO_APPLY_ALL);
|
||||
|
||||
if (SetParams == FALSE)
|
||||
{
|
||||
/* Don't destroy when user presses cancel */
|
||||
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, PSNRET_INVALID_NOCHANGEPAGE);
|
||||
// return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (SetParams)
|
||||
{
|
||||
HANDLE hSection;
|
||||
PCONSOLE_PROPS pSharedInfo;
|
||||
|
||||
/*
|
||||
* Create a memory section to share with the server, and map it.
|
||||
*/
|
||||
/* Holds data for console.dll + console info + terminal-specific info */
|
||||
hSection = CreateFileMapping(INVALID_HANDLE_VALUE,
|
||||
NULL,
|
||||
PAGE_READWRITE,
|
||||
0,
|
||||
sizeof(CONSOLE_PROPS) + sizeof(GUI_CONSOLE_INFO),
|
||||
NULL);
|
||||
if (!hSection)
|
||||
{
|
||||
DPRINT1("Error when creating file mapping, error = %d\n", GetLastError());
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pSharedInfo = MapViewOfFile(hSection, FILE_MAP_ALL_ACCESS, 0, 0, 0);
|
||||
if (!pSharedInfo)
|
||||
{
|
||||
DPRINT1("Error when mapping view of file, error = %d\n", GetLastError());
|
||||
CloseHandle(hSection);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* We are applying the chosen configuration */
|
||||
pConInfo->AppliedConfig = TRUE;
|
||||
|
||||
/*
|
||||
* Copy the console information into the section and
|
||||
* offsetize the address of terminal-specific information.
|
||||
* Do not perform the offsetization in pConInfo as it is
|
||||
* likely to be reused later on. Instead, do it in pSharedInfo
|
||||
* after having copied all the data.
|
||||
*/
|
||||
RtlCopyMemory(pSharedInfo, pConInfo, sizeof(CONSOLE_PROPS) + sizeof(GUI_CONSOLE_INFO));
|
||||
pSharedInfo->TerminalInfo.TermInfo = (PVOID)((ULONG_PTR)pConInfo->TerminalInfo.TermInfo - (ULONG_PTR)pConInfo);
|
||||
|
||||
/* Unmap it */
|
||||
UnmapViewOfFile(pSharedInfo);
|
||||
|
||||
/* Signal to the console server that it can apply the new configuration */
|
||||
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
|
||||
SendMessage(pConInfo->hConsoleWindow,
|
||||
PM_APPLY_CONSOLE_INFO,
|
||||
(WPARAM)hSection,
|
||||
(LPARAM)SaveParams);
|
||||
|
||||
/* Close the section and return */
|
||||
CloseHandle(hSection);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* First Applet */
|
||||
LONG APIENTRY
|
||||
InitApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
|
||||
InitApplet(HWND hWnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
PROPSHEETPAGE psp[4];
|
||||
PROPSHEETHEADER psh;
|
||||
INT i=0;
|
||||
PConsoleInfo pConInfo;
|
||||
WCHAR szTitle[100];
|
||||
PConsoleInfo pSharedInfo = (PConsoleInfo)wParam;
|
||||
HANDLE hSection = (HANDLE)wParam;
|
||||
BOOL GuiTermInfo = FALSE;
|
||||
PCONSOLE_PROPS pSharedInfo;
|
||||
PCONSOLE_PROPS pConInfo;
|
||||
WCHAR szTitle[MAX_PATH + 1];
|
||||
PROPSHEETPAGE psp[4];
|
||||
PROPSHEETHEADER psh;
|
||||
INT i = 0;
|
||||
|
||||
UNREFERENCED_PARAMETER(uMsg);
|
||||
UNREFERENCED_PARAMETER(uMsg);
|
||||
|
||||
/*
|
||||
* console.dll shares information with win32csr with wParam, lParam
|
||||
*
|
||||
* wParam is a pointer to a ConsoleInfo struct
|
||||
* lParam is a boolean parameter which specifies whether defaults should be shown
|
||||
*/
|
||||
/*
|
||||
* CONSOLE.DLL shares information with CONSRV with wParam:
|
||||
* wParam is a handle to a shared section holding a CONSOLE_PROPS struct.
|
||||
*
|
||||
* NOTE: lParam is not used.
|
||||
*/
|
||||
|
||||
pConInfo = AllocConsoleInfo();
|
||||
if (!pConInfo)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* Allocate a local buffer to hold console information */
|
||||
pConInfo = AllocConsoleInfo();
|
||||
if (!pConInfo) return 0;
|
||||
|
||||
if (lParam)
|
||||
{
|
||||
/* Use defaults */
|
||||
InitConsoleDefaults(pConInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IsBadReadPtr((const void *)pSharedInfo, sizeof(ConsoleInfo)))
|
||||
{
|
||||
/* Use defaults */
|
||||
InitConsoleDefaults(pConInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
pConInfo->InsertMode = pSharedInfo->InsertMode;
|
||||
pConInfo->HistoryBufferSize = pSharedInfo->HistoryBufferSize;
|
||||
pConInfo->NumberOfHistoryBuffers = pSharedInfo->NumberOfHistoryBuffers;
|
||||
pConInfo->ScreenText = pSharedInfo->ScreenText;
|
||||
pConInfo->ScreenBackground = pSharedInfo->ScreenBackground;
|
||||
pConInfo->PopupText = pSharedInfo->PopupText;
|
||||
pConInfo->PopupBackground = pSharedInfo->PopupBackground;
|
||||
pConInfo->WindowSize = pSharedInfo->WindowSize;
|
||||
pConInfo->WindowPosition = pSharedInfo->WindowPosition;
|
||||
pConInfo->ScreenBuffer = pSharedInfo->ScreenBuffer;
|
||||
pConInfo->UseRasterFonts = pSharedInfo->UseRasterFonts;
|
||||
pConInfo->FontSize = pSharedInfo->FontSize;
|
||||
pConInfo->FontWeight = pSharedInfo->FontWeight;
|
||||
memcpy(pConInfo->Colors, pSharedInfo->Colors, sizeof(s_Colors));
|
||||
}
|
||||
}
|
||||
/* Map the shared section */
|
||||
pSharedInfo = MapViewOfFile(hSection, FILE_MAP_READ, 0, 0, 0);
|
||||
if (pSharedInfo == NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, pConInfo);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* console window -> is notified on a property change event */
|
||||
pConInfo->hConsoleWindow = hwnd;
|
||||
/* Find the console window and whether we must use default parameters */
|
||||
pConInfo->hConsoleWindow = pSharedInfo->hConsoleWindow;
|
||||
pConInfo->ShowDefaultParams = pSharedInfo->ShowDefaultParams;
|
||||
|
||||
ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
|
||||
psh.dwSize = sizeof(PROPSHEETHEADER);
|
||||
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW;
|
||||
if(_tcslen(pConInfo->szProcessName))
|
||||
{
|
||||
psh.dwFlags |= PSH_PROPTITLE;
|
||||
psh.pszCaption = pConInfo->szProcessName;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!GetConsoleTitleW(szTitle, sizeof(szTitle)/sizeof(WCHAR)))
|
||||
{
|
||||
_tcscpy(szTitle, _T("cmd.exe"));
|
||||
}
|
||||
szTitle[(sizeof(szTitle)/sizeof(WCHAR))-1] = _T('\0');
|
||||
psh.pszCaption = szTitle;
|
||||
}
|
||||
/* Check that we are going to modify GUI terminal information */
|
||||
GuiTermInfo = ( pSharedInfo->TerminalInfo.Size == sizeof(GUI_CONSOLE_INFO) &&
|
||||
pSharedInfo->TerminalInfo.TermInfo != 0 );
|
||||
|
||||
psh.hwndParent = hwnd;
|
||||
psh.hInstance = hApplet;
|
||||
psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDC_CPLICON));
|
||||
psh.nPages = 4;
|
||||
psh.nStartPage = 0;
|
||||
psh.ppsp = psp;
|
||||
if (pConInfo->ShowDefaultParams || !GuiTermInfo)
|
||||
{
|
||||
/* Use defaults */
|
||||
InitConsoleDefaults(pConInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Copy the shared data into our allocated buffer, and
|
||||
* de-offsetize the address of terminal-specific information.
|
||||
*/
|
||||
RtlCopyMemory(pConInfo, pSharedInfo, sizeof(CONSOLE_PROPS) + sizeof(GUI_CONSOLE_INFO));
|
||||
pConInfo->TerminalInfo.TermInfo = (PVOID)((ULONG_PTR)pConInfo + (ULONG_PTR)pConInfo->TerminalInfo.TermInfo);
|
||||
}
|
||||
|
||||
InitPropSheetPage(&psp[i++], IDD_PROPPAGEOPTIONS, (DLGPROC) OptionsProc, (LPARAM)pConInfo);
|
||||
InitPropSheetPage(&psp[i++], IDD_PROPPAGEFONT, (DLGPROC) FontProc, (LPARAM)pConInfo);
|
||||
InitPropSheetPage(&psp[i++], IDD_PROPPAGELAYOUT, (DLGPROC) LayoutProc, (LPARAM)pConInfo);
|
||||
InitPropSheetPage(&psp[i++], IDD_PROPPAGECOLORS, (DLGPROC) ColorsProc, (LPARAM)pConInfo);
|
||||
/* Close the section */
|
||||
UnmapViewOfFile(pSharedInfo);
|
||||
CloseHandle(hSection);
|
||||
|
||||
return (PropertySheet(&psh) != -1);
|
||||
/* Initialize the property sheet structure */
|
||||
ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
|
||||
psh.dwSize = sizeof(PROPSHEETHEADER);
|
||||
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | /* PSH_USEHICON */ PSH_USEICONID | PSH_NOAPPLYNOW;
|
||||
|
||||
if (pConInfo->ci.ConsoleTitle[0] != L'\0')
|
||||
{
|
||||
wcsncpy(szTitle, L"\"", sizeof(szTitle) / sizeof(szTitle[0]));
|
||||
wcsncat(szTitle, pConInfo->ci.ConsoleTitle, sizeof(szTitle) / sizeof(szTitle[0]));
|
||||
wcsncat(szTitle, L"\"", sizeof(szTitle) / sizeof(szTitle[0]));
|
||||
}
|
||||
else
|
||||
{
|
||||
wcscpy(szTitle, L"ReactOS Console");
|
||||
}
|
||||
psh.pszCaption = szTitle;
|
||||
|
||||
psh.hwndParent = pConInfo->hConsoleWindow;
|
||||
psh.hInstance = hApplet;
|
||||
// psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDC_CPLICON));
|
||||
psh.pszIcon = MAKEINTRESOURCE(IDC_CPLICON);
|
||||
psh.nPages = 4;
|
||||
psh.nStartPage = 0;
|
||||
psh.ppsp = psp;
|
||||
|
||||
InitPropSheetPage(&psp[i++], IDD_PROPPAGEOPTIONS, (DLGPROC) OptionsProc, (LPARAM)pConInfo);
|
||||
InitPropSheetPage(&psp[i++], IDD_PROPPAGEFONT, (DLGPROC) FontProc, (LPARAM)pConInfo);
|
||||
InitPropSheetPage(&psp[i++], IDD_PROPPAGELAYOUT, (DLGPROC) LayoutProc, (LPARAM)pConInfo);
|
||||
InitPropSheetPage(&psp[i++], IDD_PROPPAGECOLORS, (DLGPROC) ColorsProc, (LPARAM)pConInfo);
|
||||
|
||||
return (PropertySheet(&psh) != -1);
|
||||
}
|
||||
|
||||
/* Control Panel Callback */
|
||||
LONG CALLBACK
|
||||
CPlApplet(
|
||||
HWND hwndCPl,
|
||||
UINT uMsg,
|
||||
LPARAM lParam1,
|
||||
LPARAM lParam2)
|
||||
CPlApplet(HWND hwndCPl,
|
||||
UINT uMsg,
|
||||
LPARAM lParam1,
|
||||
LPARAM lParam2)
|
||||
{
|
||||
switch(uMsg)
|
||||
{
|
||||
case CPL_INIT:
|
||||
switch (uMsg)
|
||||
{
|
||||
return TRUE;
|
||||
case CPL_INIT:
|
||||
return TRUE;
|
||||
|
||||
case CPL_EXIT:
|
||||
// TODO: Free allocated memory
|
||||
break;
|
||||
|
||||
case CPL_GETCOUNT:
|
||||
return NUM_APPLETS;
|
||||
|
||||
case CPL_INQUIRE:
|
||||
{
|
||||
CPLINFO *CPlInfo = (CPLINFO*)lParam2;
|
||||
CPlInfo->idIcon = Applets[0].idIcon;
|
||||
CPlInfo->idName = Applets[0].idName;
|
||||
CPlInfo->idInfo = Applets[0].idDescription;
|
||||
break;
|
||||
}
|
||||
|
||||
case CPL_DBLCLK:
|
||||
InitApplet(hwndCPl, uMsg, lParam1, lParam2);
|
||||
break;
|
||||
}
|
||||
case CPL_GETCOUNT:
|
||||
{
|
||||
return NUM_APPLETS;
|
||||
}
|
||||
case CPL_INQUIRE:
|
||||
{
|
||||
CPLINFO *CPlInfo = (CPLINFO*)lParam2;
|
||||
CPlInfo->idIcon = Applets[0].idIcon;
|
||||
CPlInfo->idName = Applets[0].idName;
|
||||
CPlInfo->idInfo = Applets[0].idDescription;
|
||||
break;
|
||||
}
|
||||
case CPL_DBLCLK:
|
||||
{
|
||||
InitApplet(hwndCPl, uMsg, lParam1, lParam2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
INT
|
||||
WINAPI
|
||||
DllMain(
|
||||
HINSTANCE hinstDLL,
|
||||
DWORD dwReason,
|
||||
LPVOID lpvReserved)
|
||||
DllMain(HINSTANCE hinstDLL,
|
||||
DWORD dwReason,
|
||||
LPVOID lpvReserved)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(lpvReserved);
|
||||
UNREFERENCED_PARAMETER(lpvReserved);
|
||||
|
||||
switch(dwReason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
case DLL_THREAD_ATTACH:
|
||||
hApplet = hinstDLL;
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
switch (dwReason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
case DLL_THREAD_ATTACH:
|
||||
hApplet = hinstDLL;
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
#define CONSOLE_H__
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <stdarg.h>
|
||||
#include <limits.h> // just for UINT_MAX in layout.c
|
||||
#include <tchar.h>
|
||||
|
||||
#include <windef.h>
|
||||
#include <winbase.h>
|
||||
#include <wingdi.h>
|
||||
@@ -10,51 +12,23 @@
|
||||
#include <wincon.h>
|
||||
#include <commctrl.h>
|
||||
#include <cpl.h>
|
||||
#include <tchar.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
/* Shared header with the GUI Terminal Front-End from consrv.dll */
|
||||
#include "consolecpl.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int idIcon;
|
||||
int idName;
|
||||
int idDescription;
|
||||
APPLET_PROC AppletProc;
|
||||
int idIcon;
|
||||
int idName;
|
||||
int idDescription;
|
||||
APPLET_PROC AppletProc;
|
||||
} APPLET, *PAPPLET;
|
||||
|
||||
typedef struct TAGConsoleInfo
|
||||
{
|
||||
HWND hConsoleWindow;
|
||||
WCHAR szProcessName[MAX_PATH];
|
||||
BOOLEAN AppliedConfig;
|
||||
DWORD UseRasterFonts;
|
||||
DWORD FontSize;
|
||||
DWORD FontWeight;
|
||||
FONTSIGNATURE FontSignature;
|
||||
DWORD CursorSize;
|
||||
DWORD NumberOfHistoryBuffers;
|
||||
DWORD HistoryBufferSize;
|
||||
DWORD HistoryNoDup;
|
||||
DWORD FullScreen;
|
||||
DWORD QuickEdit;
|
||||
DWORD InsertMode;
|
||||
DWORD ScreenBuffer;
|
||||
DWORD WindowSize;
|
||||
DWORD WindowPosition;
|
||||
DWORD ActiveStaticControl;
|
||||
COLORREF ScreenText;
|
||||
COLORREF ScreenBackground;
|
||||
COLORREF PopupText;
|
||||
COLORREF PopupBackground;
|
||||
COLORREF Colors[16];
|
||||
} ConsoleInfo, *PConsoleInfo;
|
||||
|
||||
void ApplyConsoleInfo(HWND hwndDlg, PConsoleInfo pConInfo);
|
||||
void PaintConsole(LPDRAWITEMSTRUCT drawItem, PConsoleInfo pConInfo);
|
||||
void PaintText(LPDRAWITEMSTRUCT drawItem, PConsoleInfo pConInfo);
|
||||
|
||||
#define PM_APPLY_CONSOLE_INFO (WM_APP + 100)
|
||||
BOOL ApplyConsoleInfo(HWND hwndDlg, PCONSOLE_PROPS pConInfo);
|
||||
VOID PaintConsole(LPDRAWITEMSTRUCT drawItem, PCONSOLE_PROPS pConInfo);
|
||||
VOID PaintText(LPDRAWITEMSTRUCT drawItem, PCONSOLE_PROPS pConInfo);
|
||||
|
||||
// Globals
|
||||
extern HINSTANCE hApplet;
|
||||
|
||||
@@ -17,4 +17,6 @@
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "console.dll\0"
|
||||
#include <reactos/version.rc>
|
||||
|
||||
IDC_CPLICON ICON DISCARDABLE "res/terminal.ico"
|
||||
|
||||
#include "rsrc.rc"
|
||||
|
||||
@@ -6,51 +6,50 @@
|
||||
* PROGRAMMERS: Johannes Anderwald ([email protected])
|
||||
*/
|
||||
|
||||
|
||||
#include "console.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
INT_PTR
|
||||
CALLBACK
|
||||
FontProc(
|
||||
HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam
|
||||
)
|
||||
FontProc(HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
LPDRAWITEMSTRUCT drawItem;
|
||||
PConsoleInfo pConInfo = (PConsoleInfo)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
LPDRAWITEMSTRUCT drawItem;
|
||||
PCONSOLE_PROPS pConInfo = (PCONSOLE_PROPS)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
|
||||
UNREFERENCED_PARAMETER(hwndDlg);
|
||||
UNREFERENCED_PARAMETER(wParam);
|
||||
UNREFERENCED_PARAMETER(hwndDlg);
|
||||
UNREFERENCED_PARAMETER(wParam);
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
pConInfo = (PCONSOLE_PROPS)((LPPROPSHEETPAGE)lParam)->lParam;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo);
|
||||
return TRUE;
|
||||
}
|
||||
case WM_DRAWITEM:
|
||||
{
|
||||
drawItem = (LPDRAWITEMSTRUCT)lParam;
|
||||
if (drawItem->CtlID == IDC_STATIC_FONT_WINDOW_PREVIEW)
|
||||
{
|
||||
PaintConsole(drawItem, pConInfo);
|
||||
}
|
||||
else if (drawItem->CtlID == IDC_STATIC_SELECT_FONT_PREVIEW)
|
||||
{
|
||||
PaintText(drawItem, pConInfo);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
pConInfo = (PConsoleInfo) ((LPPROPSHEETPAGE)lParam)->lParam;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo);
|
||||
return TRUE;
|
||||
}
|
||||
case WM_DRAWITEM:
|
||||
{
|
||||
drawItem = (LPDRAWITEMSTRUCT)lParam;
|
||||
if (drawItem->CtlID == IDC_STATIC_FONT_WINDOW_PREVIEW)
|
||||
{
|
||||
PaintConsole(drawItem, pConInfo);
|
||||
}
|
||||
else if (drawItem->CtlID == IDC_STATIC_SELECT_FONT_PREVIEW)
|
||||
{
|
||||
PaintText(drawItem, pConInfo);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -12,99 +12,99 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_PROPPAGEOPTIONS DIALOGEX 0, 0, 283, 220
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
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
|
||||
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, 85, 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 | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 97, 12, 15
|
||||
LTEXT "&Брой буфери", -1, 14, 124, 70, 12
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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 "Øðèôò"
|
||||
CAPTION "Шрифт"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Ïðîçîðå÷åí ïðåãëåä:", -1, 10, 10, 94, 10
|
||||
LTEXT "Ðàçìåð:", -1, 180, 10, 36, 10
|
||||
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
|
||||
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 "Всеки знак е:", -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 "Ïîäðåäáà"
|
||||
CAPTION "Подредба"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Ïðîçîðå÷åí ïðåãëåä", -1, 8, 6, 105, 10
|
||||
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
|
||||
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 | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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 | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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 | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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 "Öâåòîâå"
|
||||
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_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 "Selected Color Components", -1, 129, 7, 118, 73
|
||||
LTEXT "&Червено:", -1, 140, 25, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 22, 12, 14
|
||||
LTEXT "&Зелено:", -1, 140, 42, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 39, 12, 14
|
||||
LTEXT "&Синьо:", -1, 140, 60, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
@@ -121,28 +121,27 @@ BEGIN
|
||||
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
|
||||
GROUPBOX "Preview (Screen)", -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
|
||||
GROUPBOX "Preview (Popup)", -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 "Ïðèëàãàíå íà ñâîéñòâàòà"
|
||||
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
|
||||
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 "Ðåøåòú÷íè øðèôòîâå"
|
||||
IDS_CPLNAME "Конзола"
|
||||
IDS_CPLDESCRIPTION "Настройка на конзолата."
|
||||
IDS_APPLY_SHORTCUT_ALL "Промяна на &препратката, запуснала този прозорец"
|
||||
IDS_RASTERFONTS "Решетъчни шрифтове"
|
||||
END
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/* FILE: dll/cpl/console/lang/cs-CZ.rc
|
||||
/*
|
||||
* FILE: dll/cpl/console/lang/cs-CZ.rc
|
||||
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
||||
* UPDATED: 2011-03-31
|
||||
*/
|
||||
@@ -9,45 +10,45 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||
|
||||
IDD_PROPPAGEOPTIONS DIALOGEX 0, 0, 253, 220
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Možnosti"
|
||||
CAPTION "Možnosti"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Velikost kurzoru", -1, 7, 7, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Malá", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
|
||||
CONTROL "&Støední", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 90, 10
|
||||
CONTROL "&Velká", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 60, 90, 10
|
||||
GROUPBOX "Možnosti zobrazení", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Malá", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
|
||||
CONTROL "&Střední", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 90, 10
|
||||
CONTROL "&Velká", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 60, 90, 10
|
||||
GROUPBOX "Možnosti zobrazení", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Okno", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "&Celá obrazovka", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "Historie pøíkazù", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "Velikost v&yrovnávací pamìti:", -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 "&Poèet vyrovnávacích pamìtí:", -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 "&Zahodit staré duplikáty", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "Možnosti úprav", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "Režim &rychlých úprav", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "Režim v&kládání", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CONTROL "&Celá obrazovka", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "Historie příkazů", -1, 7, 85, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "Velikost v&yrovnávací paměti:", -1, 14, 101, 70, 12
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 97, 12, 15
|
||||
LTEXT "&Počet vyrovnávacích pamětí:", -1, 14, 124, 70, 12
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "&Zahodit staré duplikáty", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "Možnosti úprav", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "Režim &rychlých úprav", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "Režim v&kládání", IDC_CHECK_INSERT_MODE, 140, 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 "Písmo"
|
||||
CAPTION "Písmo"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Náhled okna:", -1, 10, 10, 94, 10
|
||||
LTEXT "Náhled okna:", -1, 10, 10, 94, 10
|
||||
LTEXT "Velikost:", -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 "&Písmo:", -1, 10, 105, 33, 10
|
||||
CHECKBOX "&Tuèná písma", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10
|
||||
LTEXT "&Písmo:", -1, 10, 105, 33, 10
|
||||
CHECKBOX "&Tučná písma", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 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 "Každý znak je:", -1, 124, 166, 75, 10
|
||||
LTEXT "obrazovkových pixelù široký\nobrazovkových pixelù vysokù", -1, 136, 180, 101, 20
|
||||
LTEXT "Každý znak je:", -1, 124, 166, 75, 10
|
||||
LTEXT "obrazovkových pixelů široký\nobrazovkových pixelů vysoků", -1, 136, 180, 101, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 120, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 120, 188, 10, 10
|
||||
END
|
||||
@@ -57,30 +58,30 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Vzhled"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Náhled okna:", -1, 8, 6, 95, 10
|
||||
LTEXT "Náhled okna:", -1, 8, 6, 95, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 8, 16, 115, 70
|
||||
GROUPBOX "Velikost bufferu zobrazení", -1, 130, 12, 115, 50
|
||||
LTEXT "&Šíøka:", -1, 140, 28, 40, 10
|
||||
LTEXT "&Výška:", -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 "Velikost bufferu zobrazení", -1, 130, 12, 115, 50
|
||||
LTEXT "&Šířka:", -1, 140, 28, 40, 10
|
||||
LTEXT "&Výška:", -1, 140, 46, 39, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "Velikost okna", -1, 130, 65, 115, 47
|
||||
LTEXT "Š&íøka:", -1, 140, 78, 39, 10
|
||||
LTEXT "V&ýška:", -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 "Umístìní okna", -1, 130, 116, 115, 64
|
||||
LTEXT "Š&ířka:", -1, 140, 78, 39, 10
|
||||
LTEXT "V&ýška:", -1, 140, 95, 37, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "Umístění okna", -1, 130, 116, 115, 64
|
||||
LTEXT "&Zleva:", -1, 140, 132, 38, 10
|
||||
LTEXT "&Shora:", -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 "&Okno je umístìno systémem", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "&Okno je umístěno systémem", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 253, 220
|
||||
@@ -88,20 +89,20 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Barvy"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Text zobrazení", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 112, 10
|
||||
CONTROL "Pozadí zo&brazení", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||
CONTROL "Text &výbìru", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||
CONTROL "Pozadí vý&bìru", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "Zvolené barevné hodnoty", -1, 129, 7, 118, 73
|
||||
LTEXT "Èe&rvená:", -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 "Zele&ná:", -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 "&Modrá:", -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 "&Text zobrazení", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 112, 10
|
||||
CONTROL "Pozadí zo&brazení", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||
CONTROL "Text &výběru", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||
CONTROL "Pozadí vý&běru", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "Selected Color Components", -1, 129, 7, 118, 73
|
||||
LTEXT "Če&rvená:", -1, 140, 25, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 22, 12, 14
|
||||
LTEXT "Zele&ná:", -1, 140, 42, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 39, 12, 14
|
||||
LTEXT "&Modrá:", -1, 140, 60, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
@@ -118,19 +119,19 @@ BEGIN
|
||||
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 "Zvolené barvy zobrazení", -1, 7, 111, 240, 40
|
||||
GROUPBOX "Preview (Screen)", -1, 7, 111, 240, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 124, 224, 20
|
||||
GROUPBOX "Zvolené barvy výbìru", -1, 7, 162, 240, 40
|
||||
GROUPBOX "Preview (Popup)", -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, 220, 79
|
||||
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Použít vlastnosti"
|
||||
CAPTION "Použít vlastnosti"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Použít vlastnosti jen pro toto okno", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 12, 207, 10
|
||||
CONTROL "&Uložit vlastnosti pro každé další budoucí okno s tímto názvem", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 31, 207, 10
|
||||
CONTROL "&Použít vlastnosti jen pro toto okno", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 12, 207, 10
|
||||
CONTROL "&Uložit vlastnosti pro každé další budoucí okno s tímto názvem", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 31, 207, 10
|
||||
PUSHBUTTON "OK", IDOK, 58, 58, 50, 14, WS_VISIBLE
|
||||
PUSHBUTTON "Storno", IDCANCEL, 114, 58, 50, 14, WS_VISIBLE
|
||||
END
|
||||
@@ -139,7 +140,6 @@ STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CPLNAME "Konzole"
|
||||
IDS_CPLDESCRIPTION "Nastavit vlastnosti konzole."
|
||||
IDS_APPLY_SHORTCUT_ALL "Zmìnit zá&stupce, který spustil toto okno"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Rastrová písma"
|
||||
IDS_APPLY_SHORTCUT_ALL "Změnit zá&stupce, který spustil toto okno"
|
||||
IDS_RASTERFONTS "Rastrová písma"
|
||||
END
|
||||
|
||||
@@ -15,26 +15,24 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Optionen"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Cursorgröße", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Klein", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Mittel", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Groß", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Anzeigeeinstellungen", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Fenster", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "V&ollbild", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Befehlsspeicher:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Puffergröße", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 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, 115, 100, 12, 12
|
||||
LTEXT "P&ufferanzahl:", -1, 25, 120, 80, 15
|
||||
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, 115, 120, 12, 12
|
||||
CHECKBOX "&Alte Duplikate löschen", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
|
||||
|
||||
GROUPBOX "Bearbeitungsoptionen", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&QuickEdit-Modus", IDC_CHECK_QUICK_EDIT, 150, 100, 70, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "&Einfügemodus", IDC_CHECK_INSERT_MODE, 150, 120, 70, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
GROUPBOX "Cursorgröße", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Klein", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Mittel", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Groß", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Anzeigeeinstellungen", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Fenster", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "V&ollbild", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Befehlsspeicher:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Puffergröße", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 100, 12, 12
|
||||
LTEXT "P&ufferanzahl:", -1, 25, 120, 80, 15
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 120, 12, 12
|
||||
CHECKBOX "&Alte Duplikate löschen", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
GROUPBOX "Bearbeitungsoptionen", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&QuickEdit-Modus", IDC_CHECK_QUICK_EDIT, 150, 100, 70, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "&Einfügemodus", IDC_CHECK_INSERT_MODE, 150, 120, 70, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
|
||||
@@ -42,19 +40,19 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Schrift"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Fenstervorschau", -1, 10, 7, 65, 10
|
||||
LTEXT "Größe", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Schrift", -1, 10, 105, 35, 10
|
||||
CHECKBOX "&Fette Schriften", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Jedes Zeichen ist:", -1, 130, 165, 75, 10
|
||||
LTEXT "Bildschirmpixeö breit\nBildschirmpixel hoch", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
LTEXT "Fenstervorschau", -1, 10, 7, 65, 10
|
||||
LTEXT "Größe", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Schrift", -1, 10, 105, 35, 10
|
||||
CHECKBOX "&Fette Schriften", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Jedes Zeichen ist:", -1, 130, 165, 75, 10
|
||||
LTEXT "Bildschirmpixeö breit\nBildschirmpixel hoch", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGELAYOUT DIALOGEX 0, 0, 250, 220
|
||||
@@ -62,30 +60,30 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Layout"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Fenstervorschau", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Fensterpuffergröße", -1, 130, 15, 115, 40
|
||||
LTEXT "&Breite:", -1, 135, 30, 25, 10
|
||||
LTEXT "&Höhe:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Fenstergröße", -1, 130, 60, 115, 40
|
||||
LTEXT "B&reite:", -1, 135, 70, 25, 10
|
||||
LTEXT "H&öhe:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Fensterposition", -1, 130, 105, 115, 55
|
||||
LTEXT "&Links:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Oben:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, 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, 185, 30, 30, 10
|
||||
CHECKBOX "&Automatisch", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
LTEXT "Fenstervorschau", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Fensterpuffergröße", -1, 130, 15, 115, 40
|
||||
LTEXT "&Breite:", -1, 135, 30, 25, 10
|
||||
LTEXT "&Höhe:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Fenstergröße", -1, 130, 60, 115, 40
|
||||
LTEXT "B&reite:", -1, 135, 70, 25, 10
|
||||
LTEXT "H&öhe:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Fensterposition", -1, 130, 105, 115, 55
|
||||
LTEXT "&Links:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Oben:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
CHECKBOX "&Automatisch", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 250, 220
|
||||
@@ -93,58 +91,57 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Farben"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Fenster&text", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "Fenster&hintergrund", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "&Popuptext", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "Pop&uphintergrund", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Ausgewählte Farbwerte", -1, 120, 15, 90, 45
|
||||
LTEXT "&Rot:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Grün:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Blau:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Ausgewählte Fensterfarben", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Ausgewählte Popupfarben", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
CONTROL "Fenster&text", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "Fenster&hintergrund", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "&Popuptext", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "Pop&uphintergrund", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Selected Color Components", -1, 120, 15, 90, 45
|
||||
LTEXT "&Rot:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Grün:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Blau:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Fenstervorschau", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Popupvorschau", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
END
|
||||
|
||||
IDD_APPLYOPTIONS DIALOGEX 0, 0, 220, 100
|
||||
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Eigenschaften übernehmen"
|
||||
CAPTION "Eigenschaften übernehmen"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Eigenschaften gelten nur für aktuelles Fenster", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 185, 10
|
||||
CONTROL "&Eigenschaften gelten für alle Fenster mit gleichem Titel", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "OK", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Abbrechen", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
CONTROL "&Eigenschaften gelten nur für aktuelles Fenster", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 185, 10
|
||||
CONTROL "&Eigenschaften gelten für alle Fenster mit gleichem Titel", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "OK", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Abbrechen", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CPLNAME "Konsole"
|
||||
IDS_CPLDESCRIPTION "Konfiguriert die Konsoleneigenschaften."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modifiziere die &Verknüpfung, die das Fenster startete"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Rasterschriften"
|
||||
IDS_CPLNAME "Konsole"
|
||||
IDS_CPLDESCRIPTION "Konfiguriert die Konsoleneigenschaften."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modifiziere die &Verknüpfung, die das Fenster startete"
|
||||
IDS_RASTERFONTS "Rasterschriften"
|
||||
END
|
||||
|
||||
@@ -22,13 +22,13 @@ BEGIN
|
||||
GROUPBOX "Display Options", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Window", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "F&ull Screen", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "Command History", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
GROUPBOX "Command History", -1, 7, 85, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Buffer Size:", -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
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 97, 12, 15
|
||||
LTEXT "&Number of Buffers:", -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
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "&Discard Old Duplicates", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "Edit Options", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&QuickEdit Mode", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
@@ -65,24 +65,24 @@ BEGIN
|
||||
GROUPBOX "Screen Buffer Size", -1, 130, 12, 115, 50
|
||||
LTEXT "&Width:", -1, 140, 28, 40, 10
|
||||
LTEXT "&Height:", -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
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "Window Size", -1, 130, 65, 115, 47
|
||||
LTEXT "&W&idth:", -1, 140, 78, 39, 10
|
||||
LTEXT "&H&eight:", -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
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "Window Position", -1, 130, 116, 115, 64
|
||||
LTEXT "&Left:", -1, 140, 132, 38, 10
|
||||
LTEXT "&Top:", -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
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "Let system &position window", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
END
|
||||
|
||||
@@ -91,40 +91,40 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Colors"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Screen &Text", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 112, 10
|
||||
CONTROL "Screen &Background", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||
CONTROL "&Popup Text", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||
CONTROL "Pop&up Background", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "Selected Color Values", -1, 129, 7, 118, 73
|
||||
LTEXT "&Red:", -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 "&Green:", -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 "&Blue:", -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 "Selected Screen Colors", -1, 7, 111, 240, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 124, 224, 20
|
||||
GROUPBOX "Selected Popup Colors", -1, 7, 162, 240, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
|
||||
CONTROL "Screen &Text", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 90, 10
|
||||
CONTROL "Screen &Background", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 24, 90, 10
|
||||
CONTROL "&Popup Text", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 36, 90, 10
|
||||
CONTROL "Pop&up Background", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 90, 10
|
||||
GROUPBOX "Selected Color Components", -1, 105, 6, 140, 60
|
||||
LTEXT "&Red:", -1, 135, 18, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 175, 16, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 210, 16, 10, 14
|
||||
LTEXT "&Green:", -1, 135, 34, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 175, 32, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 210, 32, 10, 14
|
||||
LTEXT "&Blue:", -1, 135, 50, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 175, 48, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 210, 48, 10, 14
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 23, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 36, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 49, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 62, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 88, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 101, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 114, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 127, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 140, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 153, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 166, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 179, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 192, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 205, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 218, 80, 12, 12
|
||||
GROUPBOX "Preview (Screen)", -1, 8, 100, 237, 55
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 13, 110, 227, 40
|
||||
GROUPBOX "Preview (Popup)", -1, 8, 160, 237, 55
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 13, 170, 227, 40
|
||||
END
|
||||
|
||||
IDD_APPLYOPTIONS DIALOGEX 0, 0, 220, 79
|
||||
@@ -143,6 +143,5 @@ BEGIN
|
||||
IDS_CPLNAME "Console"
|
||||
IDS_CPLDESCRIPTION "Configures console properties."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modify &shortcut that started this window"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Raster Fonts"
|
||||
END
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
|
||||
/*
|
||||
*Spanish Language resource file
|
||||
* Spanish Language resource file
|
||||
* Javier Remacha 2007-12-01
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <commctrl.h>
|
||||
|
||||
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||
@@ -15,26 +12,24 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Opciones"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Tamaño del Cursor", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Pequeño", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Mediano", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Grande", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Mostrar Opciones", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Ventana", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "&Pantalla Completa", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Historial de Comandos:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "Tamaño del &Búfer", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 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, 115, 100, 12, 12
|
||||
LTEXT "&Númbero de Búfers:", -1, 25, 120, 80, 15
|
||||
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, 115, 120, 12, 12
|
||||
CHECKBOX "&Descartar Viejos Duplicados", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
|
||||
|
||||
GROUPBOX "Editar Opciones", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "Modo &Edición rápida", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "Modo &Insertar", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
GROUPBOX "Tamaño del Cursor", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Pequeño", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Mediano", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Grande", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Mostrar Opciones", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Ventana", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "&Pantalla Completa", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Historial de Comandos:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "Tamaño del &Búfer", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 100, 12, 12
|
||||
LTEXT "&Númbero de Búfers:", -1, 25, 120, 80, 15
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 120, 12, 12
|
||||
CHECKBOX "&Descartar Viejos Duplicados", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
GROUPBOX "Editar Opciones", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "Modo &Edición rápida", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "Modo &Insertar", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
|
||||
@@ -42,50 +37,50 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Fuente"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Ventana de Previsualización", -1, 10, 7, 65, 10
|
||||
LTEXT "Tamaño", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Fuente", -1, 10, 105, 35, 10
|
||||
CHECKBOX "&Negrita", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Cada caracter es:", -1, 130, 165, 75, 10
|
||||
LTEXT "anchura del pixel\naltura del pixel", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
LTEXT "Ventana de Previsualización", -1, 10, 7, 65, 10
|
||||
LTEXT "Tamaño", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Fuente", -1, 10, 105, 35, 10
|
||||
CHECKBOX "&Negrita", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Cada caracter es:", -1, 130, 165, 75, 10
|
||||
LTEXT "anchura del pixel\naltura del pixel", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGELAYOUT DIALOGEX 0, 0, 250, 220
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Disposición"
|
||||
CAPTION "Disposición"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Ventana de Previsualización", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Tamaño del Búfer de Pantalla", -1, 130, 15, 115, 40
|
||||
LTEXT "&Anchura:", -1, 135, 30, 25, 10
|
||||
LTEXT "A<ura:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Tamaño de la Ventana", -1, 130, 60, 115, 40
|
||||
LTEXT "&A&nchura:", -1, 135, 70, 25, 10
|
||||
LTEXT "A&l&tura:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Posición de la Ventana", -1, 130, 105, 115, 55
|
||||
LTEXT "&Izquierda:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Arriba:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, 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, 185, 30, 30, 10
|
||||
CHECKBOX "Deje la &posición de ventana del sistema", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
LTEXT "Ventana de Previsualización", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Tamaño del Búfer de Pantalla", -1, 130, 15, 115, 40
|
||||
LTEXT "&Anchura:", -1, 135, 30, 25, 10
|
||||
LTEXT "A<ura:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Tamaño de la Ventana", -1, 130, 60, 115, 40
|
||||
LTEXT "&A&nchura:", -1, 135, 70, 25, 10
|
||||
LTEXT "A&l&tura:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Posición de la Ventana", -1, 130, 105, 115, 55
|
||||
LTEXT "&Izquierda:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Arriba:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
CHECKBOX "Deje la &posición de ventana del sistema", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 250, 220
|
||||
@@ -93,40 +88,40 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Colores"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Texto Pantalla", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "&Fondo Pantalla", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "Texto &Emergente", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "Fondo E&mergente", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Valores de Color Seleccionados", -1, 120, 15, 90, 45
|
||||
LTEXT "&Rojo:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Verde:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Azul:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Colores de Pantalla Seleccionados", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Colores Emergentes Seleccionados", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
CONTROL "&Texto Pantalla", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "&Fondo Pantalla", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "Texto &Emergente", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "Fondo E&mergente", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Componentes de Color Seleccionados", -1, 120, 15, 90, 45
|
||||
LTEXT "&Rojo:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Verde:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Azul:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Previsualización (Pantalla)", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Previsualización (Emergente)", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
END
|
||||
|
||||
IDD_APPLYOPTIONS DIALOGEX 0, 0, 220, 100
|
||||
@@ -134,17 +129,16 @@ STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Aplicar Propiedades"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Aplicar propiedades sólo a la ventana actual", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 150, 10
|
||||
CONTROL "&Guardar propiedades para futuras ventanas con el mismo título", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "Aceptar", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
CONTROL "&Aplicar propiedades sólo a la ventana actual", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 150, 10
|
||||
CONTROL "&Guardar propiedades para futuras ventanas con el mismo título", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "Aceptar", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CPLNAME "Consola"
|
||||
IDS_CPLDESCRIPTION "Configurar propiedades de la consola."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modificar &atajo que comienza esta ventana"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Fuentes Raster"
|
||||
IDS_CPLNAME "Consola"
|
||||
IDS_CPLDESCRIPTION "Configurar propiedades de la consola."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modificar &atajo que comienza esta ventana"
|
||||
IDS_RASTERFONTS "Fuentes Raster"
|
||||
END
|
||||
|
||||
@@ -22,14 +22,14 @@ BEGIN
|
||||
GROUPBOX "Options d'affichage", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Fenêtre", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "P&lein écran", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "Historique des commandes", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
GROUPBOX "Historique des commandes", -1, 7, 85, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "Taille du &buffer :", -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
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 97, 12, 15
|
||||
LTEXT "&Nombre de buffers :", -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 "&Se débarrasser des vielles copies", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "&Supprimer les doublons", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "Options d'édition", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "M&ode d'édition rapide", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "Mode &insertion", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
@@ -65,25 +65,25 @@ BEGIN
|
||||
GROUPBOX "Taille du buffer de l'écran", -1, 130, 12, 115, 50
|
||||
LTEXT "&Largeur :", -1, 140, 28, 40, 10
|
||||
LTEXT "&Hauteur :", -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
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "Taille de la fenêtre", -1, 130, 65, 115, 47
|
||||
LTEXT "&L&argeur :", -1, 140, 78, 39, 10
|
||||
LTEXT "&H&auteur :", -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
|
||||
LTEXT "L&argeur :", -1, 140, 78, 39, 10
|
||||
LTEXT "Ha&uteur :", -1, 140, 95, 37, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "Position de la Fenêtre", -1, 130, 116, 115, 64
|
||||
LTEXT "&Gauche :", -1, 140, 132, 38, 10
|
||||
LTEXT "&En haut :", -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 "Laisser le système &positionner la fenêtre", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "&Positionnée par le système", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 253, 220
|
||||
@@ -91,40 +91,40 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Couleurs"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Texte à l'écran", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 112, 10
|
||||
CONTROL "Fond de l'&écran", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||
CONTROL "Texte du &popup", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||
CONTROL "Fond du Pop&up", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "Valeurs de couleur séléctionnées", -1, 129, 7, 118, 73
|
||||
LTEXT "&Rouge :", -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 "&Vert :", -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 "&Bleu :", -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 "Couleurs de l'écran sélectionneés", -1, 7, 111, 240, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 124, 224, 20
|
||||
GROUPBOX "Couleurs du popup sélectionneés", -1, 7, 162, 240, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
|
||||
CONTROL "&Texte (Écran)", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 90, 10
|
||||
CONTROL "Arr&ière-plan (Écran)", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 24, 90, 10
|
||||
CONTROL "T&exte (Popup)", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 36, 90, 10
|
||||
CONTROL "Arrière-pla&n (Popup)", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 90, 10
|
||||
GROUPBOX "Composantes de la couleur sélectionnée", -1, 105, 6, 140, 60
|
||||
LTEXT "&Rouge :", -1, 135, 18, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 175, 16, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 210, 16, 10, 14
|
||||
LTEXT "&Vert :", -1, 135, 34, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 175, 32, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 210, 32, 10, 14
|
||||
LTEXT "&Bleu :", -1, 135, 50, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 175, 48, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 210, 48, 10, 14
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 23, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 36, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 49, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 62, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 88, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 101, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 114, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 127, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 140, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 153, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 166, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 179, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 192, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 205, 80, 12, 12
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 218, 80, 12, 12
|
||||
GROUPBOX "Aperçu (Écran)", -1, 8, 100, 237, 55
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 13, 110, 227, 40
|
||||
GROUPBOX "Aperçu (Popup)", -1, 8, 160, 237, 55
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 13, 170, 227, 40
|
||||
END
|
||||
|
||||
IDD_APPLYOPTIONS DIALOGEX 0, 0, 220, 79
|
||||
@@ -143,6 +143,5 @@ BEGIN
|
||||
IDS_CPLNAME "Console"
|
||||
IDS_CPLDESCRIPTION "Configurer les propriétés de la console."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modify &shortcut that started this window"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Polices Raster"
|
||||
END
|
||||
|
||||
@@ -23,13 +23,13 @@ BEGIN
|
||||
GROUPBOX "אפשרויות תצוגה", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "חלון", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "מסך מלא", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "היסטוריית פקודות:", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
GROUPBOX "היסטוריית פקודות:", -1, 7, 85, 120, 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
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "&Discard Old Duplicates", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "אפשרויות עריכה", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&QuickEdit Mode", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
@@ -66,24 +66,24 @@ BEGIN
|
||||
GROUPBOX "גודל מתווך המסך", -1, 130, 12, 115, 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
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "גודל חלון", -1, 130, 65, 115, 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
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "מיקום החלון", -1, 130, 116, 115, 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
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "תן למערכת למקם את החלון.", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
END
|
||||
|
||||
@@ -92,20 +92,20 @@ 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
|
||||
CONTROL "Screen &Text", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 112, 10
|
||||
CONTROL "Screen &Background", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||
CONTROL "&Popup Text", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||
CONTROL "Pop&up Background", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "Selected Color Components", -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
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
@@ -122,9 +122,9 @@ BEGIN
|
||||
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
|
||||
GROUPBOX "Preview (Screen)", -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
|
||||
GROUPBOX "Preview (Popup)", -1, 7, 162, 240, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
|
||||
END
|
||||
|
||||
@@ -144,6 +144,5 @@ BEGIN
|
||||
IDS_CPLNAME "שורת הפקודה"
|
||||
IDS_CPLDESCRIPTION "Configures console properties."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modify &shortcut that started this window"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "גופני מפת סיביות"
|
||||
END
|
||||
|
||||
@@ -15,26 +15,24 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Opsi"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Ukuran kursor", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Kecil", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Medium", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Besar", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Opsi Tampilan", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Jendela", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "Layar Pen&uh", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Histori Perintah:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "Ukuran Bu&fer", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 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, 115, 100, 12, 12
|
||||
LTEXT "Ju&mlah Bufer:", -1, 25, 120, 80, 15
|
||||
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, 115, 120, 12, 12
|
||||
CHECKBOX "Abaikan &Duplikasi Lama", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
|
||||
|
||||
GROUPBOX "Opsi Edit", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "Mode Edit&Cepat", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "Mode S&isip", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
GROUPBOX "Ukuran kursor", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Kecil", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Medium", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Besar", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Opsi Tampilan", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Jendela", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "Layar Pen&uh", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Histori Perintah:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "Ukuran Bu&fer", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 100, 12, 12
|
||||
LTEXT "Ju&mlah Bufer:", -1, 25, 120, 80, 15
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 120, 12, 12
|
||||
CHECKBOX "Abaikan &Duplikasi Lama", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
GROUPBOX "Opsi Edit", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "Mode Edit&Cepat", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "Mode S&isip", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
|
||||
@@ -42,19 +40,19 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Font"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Tinjauan Jendela", -1, 10, 7, 65, 10
|
||||
LTEXT "Ukuran", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Font", -1, 10, 105, 35, 10
|
||||
CHECKBOX "Font &tebal", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Setiap karakter adalah:", -1, 130, 165, 75, 10
|
||||
LTEXT "lebar pixel layar\ntinggi pixel layar", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
LTEXT "Tinjauan Jendela", -1, 10, 7, 65, 10
|
||||
LTEXT "Ukuran", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Font", -1, 10, 105, 35, 10
|
||||
CHECKBOX "Font &tebal", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Setiap karakter adalah:", -1, 130, 165, 75, 10
|
||||
LTEXT "lebar pixel layar\ntinggi pixel layar", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGELAYOUT DIALOGEX 0, 0, 250, 220
|
||||
@@ -62,30 +60,30 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Tata Letak"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Tinjauan Jendela", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Ukuran Bufer Layar", -1, 130, 15, 115, 40
|
||||
LTEXT "&Panjang:", -1, 135, 30, 25, 10
|
||||
LTEXT "&Tinggi:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Ukuran Jendela", -1, 130, 60, 115, 40
|
||||
LTEXT "P&anjang:", -1, 135, 70, 25, 10
|
||||
LTEXT "T&inggi:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Posisi Jendela", -1, 130, 105, 115, 55
|
||||
LTEXT "&Kiri:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Atas:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, 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, 185, 30, 30, 10
|
||||
CHECKBOX "Biarkan jendela &posisi sistem", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
LTEXT "Tinjauan Jendela", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Ukuran Bufer Layar", -1, 130, 15, 115, 40
|
||||
LTEXT "&Panjang:", -1, 135, 30, 25, 10
|
||||
LTEXT "&Tinggi:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Ukuran Jendela", -1, 130, 60, 115, 40
|
||||
LTEXT "P&anjang:", -1, 135, 70, 25, 10
|
||||
LTEXT "T&inggi:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Posisi Jendela", -1, 130, 105, 115, 55
|
||||
LTEXT "&Kiri:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Atas:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
CHECKBOX "Biarkan jendela &posisi sistem", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 250, 220
|
||||
@@ -93,40 +91,40 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Warna"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Teks Layar", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "Latar &Belakang Layar", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "Teks &Popup", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "Latar Belakang Pop&up", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Nilai Warna Dipilih", -1, 120, 15, 90, 45
|
||||
LTEXT "&Merah:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Hijau:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Biru:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Warna Layar Dipilih", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Warna Popup Dipilih", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
CONTROL "Screen &Text", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "Screen &Background", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "&Popup Text", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "Pop&up Background", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Selected Color Components", -1, 120, 15, 90, 45
|
||||
LTEXT "&Merah:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Hijau:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Biru:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Preview (Screen)", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Preview (Popup)", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
END
|
||||
|
||||
IDD_APPLYOPTIONS DIALOGEX 0, 0, 220, 100
|
||||
@@ -134,17 +132,16 @@ STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Terapkan Properti"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Ter&apkan Properti hanya ke jendela saat ini", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 150, 10
|
||||
CONTROL "&Simpan Properti untuk jendela nanti dengan judul sama", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "OK", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Batal", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
CONTROL "Ter&apkan Properti hanya ke jendela saat ini", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 150, 10
|
||||
CONTROL "&Simpan Properti untuk jendela nanti dengan judul sama", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "OK", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Batal", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CPLNAME "Konsol"
|
||||
IDS_CPLDESCRIPTION "Konfigurasi properti konsol."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modifikasi &jalan pintas yang memulai jendela ini"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Font Raster"
|
||||
IDS_CPLNAME "Konsol"
|
||||
IDS_CPLDESCRIPTION "Konfigurasi properti konsol."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modifikasi &jalan pintas yang memulai jendela ini"
|
||||
IDS_RASTERFONTS "Font Raster"
|
||||
END
|
||||
|
||||
@@ -15,26 +15,24 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Opzioni"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Dimensione del cursore", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Piccolo", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Medio", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Largo", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Opzioni dello schermo", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Finestra", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "&Tutto lo schermo", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Storia dei comandi:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Dimensione della memoria di appoggio", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 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, 115, 100, 12, 12
|
||||
LTEXT "&Numerosità:", -1, 25, 120, 80, 15
|
||||
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, 115, 120, 12, 12
|
||||
CHECKBOX "&Rimuovere i vecchi duplicati", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
|
||||
|
||||
GROUPBOX "Opzioni di modifica", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "Modalità &Modifica rapida", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "Modalità &Inserimento", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
GROUPBOX "Dimensione del cursore", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Piccolo", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Medio", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Largo", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Opzioni dello schermo", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Finestra", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "&Tutto lo schermo", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Storia dei comandi:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Dimensione della memoria di appoggio", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 100, 12, 12
|
||||
LTEXT "&Numerosità:", -1, 25, 120, 80, 15
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 120, 12, 12
|
||||
CHECKBOX "&Rimuovere i vecchi duplicati", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
GROUPBOX "Opzioni di modifica", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "Modalità &Modifica rapida", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "Modalità &Inserimento", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
|
||||
@@ -42,19 +40,19 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Font"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Anteprima", -1, 10, 7, 65, 10
|
||||
LTEXT "Dimansione", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Font", -1, 10, 105, 35, 10
|
||||
CHECKBOX "&Grassetto fonts", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Ogni carattere è:", -1, 130, 165, 75, 10
|
||||
LTEXT "larghezza in pixel\naltezza in pixel", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
LTEXT "Anteprima", -1, 10, 7, 65, 10
|
||||
LTEXT "Dimansione", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Font", -1, 10, 105, 35, 10
|
||||
CHECKBOX "&Grassetto fonts", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Ogni carattere è:", -1, 130, 165, 75, 10
|
||||
LTEXT "larghezza in pixel\naltezza in pixel", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGELAYOUT DIALOGEX 0, 0, 250, 220
|
||||
@@ -62,30 +60,30 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Layout"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Anteprima", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Dimensione del buffer dello schermo", -1, 130, 15, 115, 40
|
||||
LTEXT "&Larghezza:", -1, 135, 30, 25, 10
|
||||
LTEXT "&Altezza:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Dimensione della finestra", -1, 130, 60, 115, 40
|
||||
LTEXT "&L&arghezza:", -1, 135, 70, 25, 10
|
||||
LTEXT "&A<ezza:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Posizione della finestra", -1, 130, 105, 115, 55
|
||||
LTEXT "&Sinistra:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Alto:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, 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, 185, 30, 30, 10
|
||||
CHECKBOX "Posizionare la finestra automaticamente", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
LTEXT "Anteprima", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Dimensione del buffer dello schermo", -1, 130, 15, 115, 40
|
||||
LTEXT "&Larghezza:", -1, 135, 30, 25, 10
|
||||
LTEXT "&Altezza:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Dimensione della finestra", -1, 130, 60, 115, 40
|
||||
LTEXT "&L&arghezza:", -1, 135, 70, 25, 10
|
||||
LTEXT "&A<ezza:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Posizione della finestra", -1, 130, 105, 115, 55
|
||||
LTEXT "&Sinistra:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Alto:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
CHECKBOX "Posizionare la finestra automaticamente", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 250, 220
|
||||
@@ -93,58 +91,57 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Colori"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Text", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "&Sfondo", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "&Testo Popup", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "Sfondo Popup", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Valori dei colori", -1, 120, 15, 90, 45
|
||||
LTEXT "&Rosso:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Verde:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Blu:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Colori selezionati", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Colori selezionati Popup", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
CONTROL "&Testo Schermo", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "&Sfondo Schermo", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "T&esto Popup", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "S&fondo Popup", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Componenti dei colori", -1, 120, 15, 90, 45
|
||||
LTEXT "&Rosso:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Verde:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Blu:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Anteprima (Schermo)", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Anteprima (Popup)", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
END
|
||||
|
||||
IDD_APPLYOPTIONS DIALOGEX 0, 0, 220, 100
|
||||
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Applicazione delle proprietà"
|
||||
CAPTION "Applicazione delle proprietà"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Applicare alla sola finestra attuale", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 150, 10
|
||||
CONTROL "&Applicare a tutte le finestre con lo stesso titolo", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "OK", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Annulla", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
CONTROL "&Applicare alla sola finestra attuale", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 150, 10
|
||||
CONTROL "&Applicare a tutte le finestre con lo stesso titolo", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "OK", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Annulla", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CPLNAME "Console"
|
||||
IDS_CPLDESCRIPTION "Configura le proprietà della console."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modifica il collegamento che ha attivato questa finestra"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Raster Fonts"
|
||||
IDS_CPLNAME "Console"
|
||||
IDS_CPLDESCRIPTION "Configura le proprietà della console."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modifica il collegamento che ha attivato questa finestra"
|
||||
IDS_RASTERFONTS "Raster Fonts"
|
||||
END
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* PROJECT: ReactOS Console Configuration DLL
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: dll/win32/console/lang/en-US.rc
|
||||
* PURPOSE: English resource file
|
||||
* PURPOSE: Norwegian resource file
|
||||
* PROGRAMMERS: Johannes Anderwald ([email protected])
|
||||
*/
|
||||
|
||||
@@ -15,20 +15,20 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Valg"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Markørstørrelse", -1, 7, 7, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Små", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
|
||||
GROUPBOX "Markørstørrelse", -1, 7, 7, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Små", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
|
||||
CONTROL "&Middels", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 90, 10
|
||||
CONTROL "&Store", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 60, 90, 10
|
||||
GROUPBOX "Skjerminnstillinger", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Vindu", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "F&ull skjerm", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "Kommando historie", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Bufferstørrelse:", -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
|
||||
GROUPBOX "Kommando historie", -1, 7, 85, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Bufferstørrelse:", -1, 14, 101, 70, 12
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 97, 12, 15
|
||||
LTEXT "&Antall buffere:", -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
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "&Fjern gamle duplikater", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "Rediger valg", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&Hurtigredigeringsmodus", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
@@ -40,8 +40,8 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Skrift"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Vindu forhåndsvisning:", -1, 10, 10, 94, 10
|
||||
LTEXT "Størrelse:", -1, 180, 10, 36, 10
|
||||
LTEXT "Vindu forhåndsvisning:", -1, 10, 10, 94, 10
|
||||
LTEXT "Størrelse:", -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 "&Skrift:", -1, 10, 105, 33, 10
|
||||
@@ -50,7 +50,7 @@ BEGIN
|
||||
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 "Hver tegn er:", -1, 124, 166, 75, 10
|
||||
LTEXT "Skjerm piksel bred\nskjerm piksel høy", -1, 136, 180, 101, 20
|
||||
LTEXT "Skjerm piksel bred\nskjerm piksel høy", -1, 136, 180, 101, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 120, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 120, 188, 10, 10
|
||||
END
|
||||
@@ -60,29 +60,29 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Oppsett"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Vindu forhåndsvisning:", -1, 8, 6, 95, 10
|
||||
LTEXT "Vindu forhåndsvisning:", -1, 8, 6, 95, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 8, 16, 115, 70
|
||||
GROUPBOX "Størrelse på skjermbuffer", -1, 130, 12, 115, 50
|
||||
GROUPBOX "Størrelse på skjermbuffer", -1, 130, 12, 115, 50
|
||||
LTEXT "&Bredde:", -1, 140, 28, 40, 10
|
||||
LTEXT "&Høyde:", -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 "Vindu størrelse", -1, 130, 65, 115, 47
|
||||
LTEXT "&Høyde:", -1, 140, 46, 39, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "Vindu størrelse", -1, 130, 65, 115, 47
|
||||
LTEXT "&B&redde:", -1, 140, 78, 39, 10
|
||||
LTEXT "&H&øyde:", -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
|
||||
LTEXT "&H&øyde:", -1, 140, 95, 37, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "Vindusplassering", -1, 130, 116, 115, 64
|
||||
LTEXT "&Venstre:", -1, 140, 132, 38, 10
|
||||
LTEXT "&Topp:", -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
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "Automatisk &vindusplassering", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
END
|
||||
|
||||
@@ -95,16 +95,16 @@ BEGIN
|
||||
CONTROL "Skjerm &bakgrunn", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||
CONTROL "&Hurtigmenytekst", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||
CONTROL "Hurtig&menybakgrunn", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "Valgte fargeverdier", -1, 129, 7, 118, 73
|
||||
LTEXT "&Rød:", -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 "&Grønn:", -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 "&Blå:", -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
|
||||
GROUPBOX "Selected Color Components", -1, 129, 7, 118, 73
|
||||
LTEXT "&Rød:", -1, 140, 25, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 22, 12, 14
|
||||
LTEXT "&Grønn:", -1, 140, 42, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 39, 12, 14
|
||||
LTEXT "&Blå:", -1, 140, 60, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
@@ -121,9 +121,9 @@ BEGIN
|
||||
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 "Valgte skjermfarger", -1, 7, 111, 240, 40
|
||||
GROUPBOX "Preview (Screen)", -1, 7, 111, 240, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 124, 224, 20
|
||||
GROUPBOX "Valgte hurtigmenyfarger", -1, 7, 162, 240, 40
|
||||
GROUPBOX "Preview (Popup)", -1, 7, 162, 240, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
|
||||
END
|
||||
|
||||
@@ -132,7 +132,7 @@ STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Godta innstillinger"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Godta innstillinger for bare nåværende vindu", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 12, 207, 10
|
||||
CONTROL "&Godta innstillinger for bare nåværende vindu", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 12, 207, 10
|
||||
CONTROL "&Godta innstillinger for fremtidlige vinduer med samme navn", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 31, 207, 10
|
||||
PUSHBUTTON "OK", IDOK, 58, 58, 50, 14, WS_VISIBLE
|
||||
PUSHBUTTON "Avbryt", IDCANCEL, 114, 58, 50, 14, WS_VISIBLE
|
||||
@@ -143,6 +143,5 @@ BEGIN
|
||||
IDS_CPLNAME "Konsoll"
|
||||
IDS_CPLDESCRIPTION "Konfigurere Konsoll innstillinger."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modify &shortcut that started this window"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Raster Fonts"
|
||||
END
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
* https://sourceforge.net/projects/reactospl
|
||||
* UTF-8 conversion by Caemyr (May, 2011)
|
||||
*/
|
||||
|
||||
#include <commctrl.h>
|
||||
|
||||
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||
@@ -13,26 +14,24 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Opcje"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Rozmiar kursora", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Mały", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Średni", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Duży", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Pokaż opcje", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Okno", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "&Pełny ekran", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Historia poleceń:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Rozmiar bufora", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 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, 115, 100, 12, 12
|
||||
LTEXT "&Numery buforów:", -1, 25, 120, 80, 15
|
||||
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, 115, 120, 12, 12
|
||||
CHECKBOX "O&drzuć stare duplikaty", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
|
||||
|
||||
GROUPBOX "Edytuj opcje", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&Tryb szybkiej edycji", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "&Wstaw tryb", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
GROUPBOX "Rozmiar kursora", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Mały", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10
|
||||
CONTROL "&Średni", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10
|
||||
CONTROL "&Duży", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10
|
||||
GROUPBOX "Pokaż opcje", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Okno", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10
|
||||
CONTROL "&Pełny ekran", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10
|
||||
GROUPBOX "Historia poleceń:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Rozmiar bufora", -1, 25, 100, 60, 15
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 100, 12, 12
|
||||
LTEXT "&Numery buforów:", -1, 25, 120, 80, 15
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 115, 120, 12, 12
|
||||
CHECKBOX "O&drzuć stare duplikaty", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
|
||||
GROUPBOX "Edytuj opcje", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&Tryb szybkiej edycji", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "&Wstaw tryb", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
|
||||
@@ -40,19 +39,19 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Czcionka"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Okno podglądu", -1, 10, 7, 65, 10
|
||||
LTEXT "Rozmiar", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Czcionka", -1, 10, 105, 35, 10
|
||||
CHECKBOX "&Pogrubiona czcionka", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Pogrubiona czcionka:", -1, 130, 165, 75, 10
|
||||
LTEXT "szerokość ekranu w pikselach/nwysokość ekranu w pikselach", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
LTEXT "Okno podglądu", -1, 10, 7, 65, 10
|
||||
LTEXT "Rozmiar", -1, 130, 10, 30, 10
|
||||
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70
|
||||
LISTBOX IDC_LBOX_FONTS, 130, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
LTEXT "&Czcionka", -1, 10, 105, 35, 10
|
||||
CHECKBOX "&Pogrubiona czcionka", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10
|
||||
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 50, LBS_DISABLENOSCROLL | WS_VSCROLL
|
||||
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50
|
||||
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35
|
||||
LTEXT "Pogrubiona czcionka:", -1, 130, 165, 75, 10
|
||||
LTEXT "szerokość ekranu w pikselach/nwysokość ekranu w pikselach", -1, 140, 180, 65, 20
|
||||
LTEXT "", IDC_FONT_SIZE_X, 125, 180, 10, 10
|
||||
LTEXT "", IDC_FONT_SIZE_Y, 125, 188, 10, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGELAYOUT DIALOGEX 0, 0, 250, 220
|
||||
@@ -60,30 +59,30 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Układ"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Okno podglądu", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Rozmiar bufora ekranu", -1, 130, 15, 115, 40
|
||||
LTEXT "&Szerokość:", -1, 135, 30, 25, 10
|
||||
LTEXT "&Wysokość:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Rozmiar okna", -1, 130, 60, 115, 40
|
||||
LTEXT "&Szerokość:", -1, 135, 70, 25, 10
|
||||
LTEXT "&Wysokość:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, 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, 185, 30, 30, 10
|
||||
GROUPBOX "Pozycja okna", -1, 130, 105, 115, 55
|
||||
LTEXT "&Lewo:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Góra:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, 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, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, 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, 185, 30, 30, 10
|
||||
CHECKBOX "Wybór pozycji okna przez system", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
LTEXT "Okno podglądu", -1, 10, 7, 65, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 115, 70
|
||||
GROUPBOX "Rozmiar bufora ekranu", -1, 130, 15, 115, 40
|
||||
LTEXT "&Szerokość:", -1, 135, 30, 25, 10
|
||||
LTEXT "&Wysokość:", -1, 135, 40, 25, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Rozmiar okna", -1, 130, 60, 115, 40
|
||||
LTEXT "&Szerokość:", -1, 135, 70, 25, 10
|
||||
LTEXT "&Wysokość:", -1, 135, 80, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
GROUPBOX "Pozycja okna", -1, 130, 105, 115, 55
|
||||
LTEXT "&Lewo:", -1, 135, 120, 25, 10
|
||||
LTEXT "&Góra:", -1, 135, 130, 25, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 165, 120, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 165, 130, 35, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 185, 30, 30, 10
|
||||
CHECKBOX "Wybór pozycji okna przez system", IDC_CHECK_SYSTEM_POS_WINDOW, 135, 145, 100, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 250, 220
|
||||
@@ -91,40 +90,40 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Kolory"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Ekran &tekst", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "Ekran &tło", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "&Popup tekst", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "Pop&up tło", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Wybrane wartości koloru", -1, 120, 15, 90, 45
|
||||
LTEXT "&Czerowny:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Zielony:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Niebieski:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Wybrane kolory ekranu", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Wybrane kolory Popup", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
CONTROL "Ekran &tekst", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 15, 90, 10
|
||||
CONTROL "Ekran &tło", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 25, 90, 10
|
||||
CONTROL "&Popup tekst", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 35, 90, 10
|
||||
CONTROL "Pop&up tło", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 45, 90, 10
|
||||
GROUPBOX "Selected Color Components", -1, 120, 15, 90, 45
|
||||
LTEXT "&Czerowny:", -1, 125, 25, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 25, 30, 10
|
||||
LTEXT "&Zielony:", -1, 125, 35, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 35, 30, 10
|
||||
LTEXT "&Niebieski:", -1, 125, 45, 30, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 165, 45, 30, 10
|
||||
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10
|
||||
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10
|
||||
GROUPBOX "Preview (Screen)", -1, 10, 110, 200, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20
|
||||
GROUPBOX "Preview (Popup)", -1, 10, 155, 200, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20
|
||||
END
|
||||
|
||||
IDD_APPLYOPTIONS DIALOGEX 0, 0, 220, 100
|
||||
@@ -132,17 +131,16 @@ STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Zastosuj właściwości"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "&Zastosuj właściwości tylko do aktualnego okna", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 150, 10
|
||||
CONTROL "Z&apisz właściwości na przyszłe okna z tym sam tytułem", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "OK", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Anuluj", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
CONTROL "&Zastosuj właściwości tylko do aktualnego okna", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 150, 10
|
||||
CONTROL "Z&apisz właściwości na przyszłe okna z tym sam tytułem", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10
|
||||
PUSHBUTTON "OK", IDOK, 25, 80, 40, 15, WS_VISIBLE
|
||||
PUSHBUTTON "Anuluj", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CPLNAME "Konsola"
|
||||
IDS_CPLDESCRIPTION "Konfiguruje właściwości konsoli."
|
||||
IDS_APPLY_SHORTCUT_ALL "Zmodyfikuj skrót, który wywołał to okno"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Czcionki rastrowe"
|
||||
IDS_CPLNAME "Konsola"
|
||||
IDS_CPLDESCRIPTION "Konfiguruje właściwości konsoli."
|
||||
IDS_APPLY_SHORTCUT_ALL "Zmodyfikuj skrót, który wywołał to okno"
|
||||
IDS_RASTERFONTS "Czcionki rastrowe"
|
||||
END
|
||||
|
||||
@@ -23,13 +23,13 @@ BEGIN
|
||||
GROUPBOX "Mod de afișare", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "În fe&reastră", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "Pe &tot ecranul", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "Istoric pentru comenzi", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
GROUPBOX "Istoric pentru comenzi", -1, 7, 85, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "N&umăr de înregistrări:", -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
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 97, 12, 15
|
||||
LTEXT "Nu&măr de registre:", -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
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "Înlătură dublicatele &vechi", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "Opțiuni de editare", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "Mod E&ditareRapidă", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
@@ -66,24 +66,24 @@ BEGIN
|
||||
GROUPBOX "Dimensiunea textului", -1, 130, 12, 115, 50
|
||||
LTEXT "&Coloane:", -1, 140, 28, 40, 10
|
||||
LTEXT "&Rânduri:", -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
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "Dimensiunea ferestrei", -1, 130, 65, 115, 47
|
||||
LTEXT "C&oloane:", -1, 140, 78, 39, 10
|
||||
LTEXT "Rân&duri:", -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
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "Poziția fereastrei", -1, 130, 116, 115, 64
|
||||
LTEXT "&Stânga:", -1, 140, 132, 38, 10
|
||||
LTEXT "S&us:", -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
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "&Amplasare automată", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
END
|
||||
|
||||
@@ -98,14 +98,14 @@ BEGIN
|
||||
CONTROL "Fun&dal ferestre intempestive", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "Paleta culorii selectate:", -1, 129, 7, 118, 73
|
||||
LTEXT "&Roșu:", -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
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 22, 12, 14
|
||||
LTEXT "&Verde:", -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
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 39, 12, 14
|
||||
LTEXT "&Albastru:", -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
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
@@ -122,9 +122,9 @@ BEGIN
|
||||
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 "Previzionarea culorilor alese pentru ecran", -1, 7, 111, 240, 40
|
||||
GROUPBOX "Previzionare (ecran)", -1, 7, 111, 240, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 124, 224, 20
|
||||
GROUPBOX "Previzionarea culorilor alese pentru ferestre intempestive", -1, 7, 162, 240, 40
|
||||
GROUPBOX "Previzionare (ferestre intempestive)", -1, 7, 162, 240, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
|
||||
END
|
||||
|
||||
@@ -144,6 +144,5 @@ BEGIN
|
||||
IDS_CPLNAME "Linie de comandă"
|
||||
IDS_CPLDESCRIPTION "Configurarea proprietăților pentru programe linie de comandă."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modifică &scurtătura care a pornit aplicația"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Fonturi rastre"
|
||||
END
|
||||
|
||||
@@ -16,13 +16,13 @@ BEGIN
|
||||
GROUPBOX "Экран", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Окно", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "&Полный экран", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "История команд", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
GROUPBOX "История команд", -1, 7, 85, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Размер буфера:", -1, 14, 101, 60, 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
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 97, 12, 15
|
||||
LTEXT "&Число буферов:", -1, 14, 124, 60, 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
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "&Убирать старые экземляры", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "Редактирование", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&Быстрое редактирование", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
@@ -59,24 +59,24 @@ BEGIN
|
||||
GROUPBOX "Размер буфера экрана", -1, 130, 12, 115, 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
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "Размер окна", -1, 130, 65, 115, 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
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "Положение окна", -1, 130, 116, 115, 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
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "&Системная позиция окна", IDC_CHECK_SYSTEM_POS_WINDOW, 140, 165, 100, 10
|
||||
END
|
||||
|
||||
@@ -89,16 +89,16 @@ BEGIN
|
||||
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
|
||||
GROUPBOX "Selected Color Components", -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
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
@@ -115,9 +115,9 @@ BEGIN
|
||||
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
|
||||
GROUPBOX "Preview (Screen)", -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
|
||||
GROUPBOX "Preview (Popup)", -1, 7, 162, 240, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
|
||||
END
|
||||
|
||||
@@ -137,6 +137,5 @@ BEGIN
|
||||
IDS_CPLNAME "Командная строка"
|
||||
IDS_CPLDESCRIPTION "Настройка командной строки."
|
||||
IDS_APPLY_SHORTCUT_ALL "&Изменить ярлык, которым было запущено это окно"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-07 5:00\nSYSTEM32 <DIR> 10-01-07 5:00"
|
||||
IDS_RASTERFONTS "Растровые шрифты"
|
||||
END
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* TRANSLATOR: Mário Kaèmár /Mario Kacmar/ aka Kario ([email protected])
|
||||
/* TRANSLATOR: Mário Kačmár /Mario Kacmar/ aka Kario ([email protected])
|
||||
* DATE OF TR.: 16-06-2008
|
||||
*/
|
||||
|
||||
@@ -8,44 +8,44 @@ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
|
||||
IDD_PROPPAGEOPTIONS DIALOGEX 0, 0, 253, 220
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Možnosti"
|
||||
CAPTION "Možnosti"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Ve¾kos� kurzora", -1, 7, 7, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Malý", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
|
||||
CONTROL "&Stredný", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 90, 10
|
||||
CONTROL "&Ve¾ký", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 60, 90, 10
|
||||
GROUPBOX "Veľkosť kurzora", -1, 7, 7, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Malý", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
|
||||
CONTROL "&Stredný", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 90, 10
|
||||
CONTROL "&Veľký", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 60, 90, 10
|
||||
GROUPBOX "Display Options", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "&Window", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "F&ull Screen", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "História príkazov", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
GROUPBOX "História príkazov", -1, 7, 85, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "&Buffer Size:", -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
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 97, 12, 15
|
||||
LTEXT "&Number of Buffers:", -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
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "&Discard Old Duplicates", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "Možnosti úprav", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
GROUPBOX "Možnosti úprav", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&QuickEdit Mode", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "&Insert Mode", IDC_CHECK_INSERT_MODE, 140, 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 "Písmo"
|
||||
CAPTION "Písmo"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Ukážka okna:", -1, 10, 10, 94, 10
|
||||
LTEXT "Ve¾kos�:", -1, 180, 10, 36, 10
|
||||
LTEXT "Ukážka okna:", -1, 10, 10, 94, 10
|
||||
LTEXT "Veľkosť:", -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 "&Písmo:", -1, 10, 105, 33, 10
|
||||
CHECKBOX "&Tuèné písma", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10
|
||||
LTEXT "&Písmo:", -1, 10, 105, 33, 10
|
||||
CHECKBOX "&Tučné písma", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 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 "Každý znak je:", -1, 124, 166, 75, 10
|
||||
LTEXT "Každý znak je:", -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
|
||||
@@ -56,29 +56,29 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Layout"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Ukážka okna:", -1, 8, 6, 95, 10
|
||||
LTEXT "Ukážka okna:", -1, 8, 6, 95, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 8, 16, 115, 70
|
||||
GROUPBOX "Screen Buffer Size", -1, 130, 12, 115, 50
|
||||
LTEXT "&Width:", -1, 140, 28, 40, 10
|
||||
LTEXT "&Height:", -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
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "Window Size", -1, 130, 65, 115, 47
|
||||
LTEXT "&W&idth:", -1, 140, 78, 39, 10
|
||||
LTEXT "&H&eight:", -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
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "Window Position", -1, 130, 116, 115, 64
|
||||
LTEXT "&Left:", -1, 140, 132, 38, 10
|
||||
LTEXT "&Top:", -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
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "Let system &position window", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
END
|
||||
|
||||
@@ -91,16 +91,16 @@ BEGIN
|
||||
CONTROL "Screen &Background", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||
CONTROL "&Popup Text", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||
CONTROL "Pop&up Background", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "Selected Color Values", -1, 129, 7, 118, 73
|
||||
GROUPBOX "Selected Color Components", -1, 129, 7, 118, 73
|
||||
LTEXT "&Red:", -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
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 22, 12, 14
|
||||
LTEXT "&Green:", -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
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 39, 12, 14
|
||||
LTEXT "&Blue:", -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
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
@@ -117,9 +117,9 @@ BEGIN
|
||||
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 "Selected Screen Colors", -1, 7, 111, 240, 40
|
||||
GROUPBOX "Preview (Screen)", -1, 7, 111, 240, 40
|
||||
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 124, 224, 20
|
||||
GROUPBOX "Selected Popup Colors", -1, 7, 162, 240, 40
|
||||
GROUPBOX "Preview (Popup)", -1, 7, 162, 240, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
|
||||
END
|
||||
|
||||
@@ -131,7 +131,7 @@ BEGIN
|
||||
CONTROL "&Apply Properties to current window only", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 12, 207, 10
|
||||
CONTROL "&Save Properties for future windows with same title", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 31, 207, 10
|
||||
PUSHBUTTON "OK", IDOK, 58, 58, 50, 14, WS_VISIBLE
|
||||
PUSHBUTTON "Zruši�", IDCANCEL, 114, 58, 50, 14, WS_VISIBLE
|
||||
PUSHBUTTON "Zrušiť", IDCANCEL, 114, 58, 50, 14, WS_VISIBLE
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
@@ -139,6 +139,5 @@ BEGIN
|
||||
IDS_CPLNAME "Konzola"
|
||||
IDS_CPLDESCRIPTION "Nastavuje vlastnosti Konzoly."
|
||||
IDS_APPLY_SHORTCUT_ALL "Modify &shortcut that started this window"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Rasterové písma"
|
||||
IDS_RASTERFONTS "Rasterové písma"
|
||||
END
|
||||
|
||||
@@ -23,13 +23,13 @@ BEGIN
|
||||
GROUPBOX "Параметри відображення", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "В&ікно", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "&На весь екран", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "Журнал команд", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
GROUPBOX "Журнал команд", -1, 7, 85, 120, 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
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "В&ідкидати повторення", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "Параметри редагування", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "&Швидке редагування", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
@@ -66,24 +66,24 @@ BEGIN
|
||||
GROUPBOX "Розмір буфера екрана", -1, 130, 12, 115, 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
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "Розмір вікна", -1, 130, 65, 115, 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
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "Позиція вікна", -1, 130, 116, 115, 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
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "&Автоматичний вибір", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
END
|
||||
|
||||
@@ -96,16 +96,16 @@ BEGIN
|
||||
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
|
||||
GROUPBOX "Selected Color Components", -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
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
@@ -122,9 +122,9 @@ BEGIN
|
||||
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
|
||||
GROUPBOX "Preview (Screen)", -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
|
||||
GROUPBOX "Preview (Popup)", -1, 7, 162, 240, 40
|
||||
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
|
||||
END
|
||||
|
||||
@@ -144,6 +144,5 @@ 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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
*Simplified Chinese resource for console (dll/cpl/console/lang/zh-CN.rc)
|
||||
* Simplified Chinese resource for console (dll/cpl/console/lang/zh-CN.rc)
|
||||
*
|
||||
* TRANSLATOR: Jingjing Fu (jingjingf AT 188.com)
|
||||
* CREATED: 2009-04-26
|
||||
@@ -11,99 +11,99 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
|
||||
|
||||
IDD_PROPPAGEOPTIONS DIALOGEX 0, 0, 253, 220
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "选项"
|
||||
CAPTION "选项"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "光标大小", -1, 7, 7, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "小(&S)", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
|
||||
CONTROL "中(&M)", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 90, 10
|
||||
CONTROL "大(&L)", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 60, 90, 10
|
||||
GROUPBOX "显示选项", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "窗口(&W)", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "全屏显示(&F)", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "命令记录", -1, 7, 84, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "缓冲区大小(&B):", -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 "缓冲区数量(&N):", -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 "丢弃旧的副本(&D)", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "编辑选项", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "快速编辑模式(&Q)", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "插入模式(&I)", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
GROUPBOX "光标大小", -1, 7, 7, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "小(&S)", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
|
||||
CONTROL "中(&M)", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 90, 10
|
||||
CONTROL "大(&L)", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 60, 90, 10
|
||||
GROUPBOX "显示选项", -1, 133, 7, 112, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CONTROL "窗口(&W)", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 20, 70, 10
|
||||
CONTROL "全屏显示(&F)", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 40, 70, 10
|
||||
GROUPBOX "命令记录", -1, 7, 85, 120, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
LTEXT "缓冲区大小(&B):", -1, 14, 101, 70, 12
|
||||
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 97, 12, 15
|
||||
LTEXT "缓冲区数量(&N):", -1, 14, 124, 70, 12
|
||||
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 119, 120, 12, 15
|
||||
CHECKBOX "丢弃旧的副本(&D)", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 110, 15
|
||||
GROUPBOX "编辑选项", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
|
||||
CHECKBOX "快速编辑模式(&Q)", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
CHECKBOX "插入模式(&I)", IDC_CHECK_INSERT_MODE, 140, 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 "字体"
|
||||
CAPTION "字体"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "窗口预览:", -1, 10, 10, 94, 10
|
||||
LTEXT "大小:", -1, 180, 10, 36, 10
|
||||
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 "&字体(&F):", -1, 10, 105, 33, 10
|
||||
CHECKBOX "粗体(&B)", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10
|
||||
LTEXT "&字体(&F):", -1, 10, 105, 33, 10
|
||||
CHECKBOX "粗体(&B)", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 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 "屏幕像素宽\n屏幕像素高", -1, 136, 180, 101, 20
|
||||
LTEXT "每个字符为:", -1, 124, 166, 75, 10
|
||||
LTEXT "屏幕像素宽\n屏幕像素高", -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, 253, 220
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "布局"
|
||||
CAPTION "布局"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "窗口预览:", -1, 8, 6, 95, 10
|
||||
LTEXT "窗口预览:", -1, 8, 6, 95, 10
|
||||
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 8, 16, 115, 70
|
||||
GROUPBOX "屏幕缓冲区大小", -1, 130, 12, 115, 50
|
||||
LTEXT "宽(&W):", -1, 140, 28, 40, 10
|
||||
LTEXT "高(&H):", -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, 115, 47
|
||||
LTEXT "宽(&I)", -1, 140, 78, 39, 10
|
||||
LTEXT "高(&E)", -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, 115, 64
|
||||
LTEXT "左(&L):", -1, 140, 132, 38, 10
|
||||
LTEXT "上(&T):", -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 "由系统定位窗口(&P)", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
GROUPBOX "屏幕缓冲区大小", -1, 130, 12, 115, 50
|
||||
LTEXT "宽(&W):", -1, 140, 28, 40, 10
|
||||
LTEXT "高(&H):", -1, 140, 46, 39, 10
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 25, 13, 14
|
||||
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 42, 13, 14
|
||||
GROUPBOX "窗口大小", -1, 130, 65, 115, 47
|
||||
LTEXT "宽(&I)", -1, 140, 78, 39, 10
|
||||
LTEXT "高(&E)", -1, 140, 95, 37, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 75, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 92, 13, 14
|
||||
GROUPBOX "窗口位置", -1, 130, 116, 115, 64
|
||||
LTEXT "左(&L):", -1, 140, 132, 38, 10
|
||||
LTEXT "上(&T):", -1, 140, 149, 40, 10
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 128, 13, 14
|
||||
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 238, 146, 13, 14
|
||||
CHECKBOX "由系统定位窗口(&P)", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 104, 10
|
||||
END
|
||||
|
||||
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 253, 220
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "颜色"
|
||||
CAPTION "颜色"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "屏幕文字(&T)", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 112, 10
|
||||
CONTROL "屏幕背景(&B)", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||
CONTROL "弹出窗口文字(&P)", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||
CONTROL "弹出窗口背景(&U)", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "选定的颜色值", -1, 129, 7, 118, 73
|
||||
LTEXT "红(&R):", -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 "绿(&G):", -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 "蓝(&B):", -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 "屏幕文字(&T)", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 112, 10
|
||||
CONTROL "屏幕背景(&B)", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
|
||||
CONTROL "弹出窗口文字(&P)", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
|
||||
CONTROL "弹出窗口背景(&U)", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
|
||||
GROUPBOX "Selected Color Components", -1, 129, 7, 118, 73
|
||||
LTEXT "红(&R):", -1, 140, 25, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 22, 12, 14
|
||||
LTEXT "绿(&G):", -1, 140, 42, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 240, 39, 12, 14
|
||||
LTEXT "蓝(&B):", -1, 140, 60, 48, 10
|
||||
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | ES_NUMBER | WS_GROUP
|
||||
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | 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
|
||||
@@ -120,28 +120,27 @@ BEGIN
|
||||
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
|
||||
GROUPBOX "Preview (Screen)", -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
|
||||
GROUPBOX "Preview (Popup)", -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, 220, 79
|
||||
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||
CAPTION "应用属性"
|
||||
CAPTION "应用属性"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "属性仅对当前窗口生效(&A)", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 12, 207, 10
|
||||
CONTROL "保存属性,供以后具有相同标题的窗口使用(&S)", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 31, 207, 10
|
||||
PUSHBUTTON "确定", IDOK, 58, 58, 50, 14, WS_VISIBLE
|
||||
PUSHBUTTON "取消", IDCANCEL, 114, 58, 50, 14, WS_VISIBLE
|
||||
CONTROL "属性仅对当前窗口生效(&A)", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 12, 207, 10
|
||||
CONTROL "保存属性,供以后具有相同标题的窗口使用(&S)", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 31, 207, 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 "修改启动此窗口的快捷方式(&S)"
|
||||
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
|
||||
IDS_RASTERFONTS "Raster 字体"
|
||||
IDS_CPLNAME "控制台"
|
||||
IDS_CPLDESCRIPTION "配置控制台属性。"
|
||||
IDS_APPLY_SHORTCUT_ALL "修改启动此窗口的快捷方式(&S)"
|
||||
IDS_RASTERFONTS "Raster 字体"
|
||||
END
|
||||
|
||||
+327
-310
@@ -8,367 +8,384 @@
|
||||
|
||||
#include "console.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
void PaintConsole(LPDRAWITEMSTRUCT drawItem, PConsoleInfo pConInfo)
|
||||
const TCHAR szPreviewText[] =
|
||||
_T("C:\\ReactOS> dir \n") \
|
||||
_T("SYSTEM <DIR> 13-04-15 5:00a\n") \
|
||||
_T("SYSTEM32 <DIR> 13-04-15 5:00a\n") \
|
||||
_T("readme txt 1739 13-04-15 5:00a\n") \
|
||||
_T("explorer exe 3329536 13-04-15 5:00a\n") \
|
||||
_T("vgafonts cab 18736 13-04-15 5:00a\n") \
|
||||
_T("setuplog txt 313 13-04-15 5:00a\n") \
|
||||
_T("win ini 7005 13-04-15 5:00a\n");
|
||||
|
||||
|
||||
VOID
|
||||
PaintConsole(LPDRAWITEMSTRUCT drawItem,
|
||||
PCONSOLE_PROPS pConInfo)
|
||||
{
|
||||
HBRUSH hBrush;
|
||||
RECT cRect, fRect;
|
||||
DWORD startx, starty;
|
||||
DWORD endx, endy;
|
||||
DWORD sizex, sizey;
|
||||
PGUI_CONSOLE_INFO GuiInfo = pConInfo->TerminalInfo.TermInfo;
|
||||
HBRUSH hBrush;
|
||||
RECT cRect, fRect;
|
||||
DWORD startx, starty;
|
||||
DWORD endx, endy;
|
||||
DWORD sizex, sizey;
|
||||
|
||||
FillRect(drawItem->hDC, &drawItem->rcItem, GetSysColorBrush(COLOR_BACKGROUND));
|
||||
FillRect(drawItem->hDC, &drawItem->rcItem, GetSysColorBrush(COLOR_BACKGROUND));
|
||||
|
||||
sizex = drawItem->rcItem.right - drawItem->rcItem.left;
|
||||
sizey = drawItem->rcItem.bottom - drawItem->rcItem.top;
|
||||
sizex = drawItem->rcItem.right - drawItem->rcItem.left;
|
||||
sizey = drawItem->rcItem.bottom - drawItem->rcItem.top;
|
||||
|
||||
if (pConInfo->WindowPosition == UINT_MAX)
|
||||
{
|
||||
startx = sizex / 3;
|
||||
starty = sizey / 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO:
|
||||
// Calculate pos correctly when console centered
|
||||
startx = sizex / 3;
|
||||
starty = sizey / 3;
|
||||
}
|
||||
if ( GuiInfo->WindowOrigin.x == MAXDWORD &&
|
||||
GuiInfo->WindowOrigin.y == MAXDWORD )
|
||||
{
|
||||
startx = sizex / 3;
|
||||
starty = sizey / 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO:
|
||||
// Calculate pos correctly when console centered
|
||||
startx = sizex / 3;
|
||||
starty = sizey / 3;
|
||||
}
|
||||
|
||||
// TODO:
|
||||
// Strech console when bold fonts are selected
|
||||
endx = drawItem->rcItem.right - startx + 15;
|
||||
endy = starty + sizey / 3;
|
||||
// TODO:
|
||||
// Strech console when bold fonts are selected
|
||||
endx = drawItem->rcItem.right - startx + 15;
|
||||
endy = starty + sizey / 3;
|
||||
|
||||
/* Draw console size */
|
||||
SetRect(&cRect, startx, starty, endx, endy);
|
||||
FillRect(drawItem->hDC, &cRect, GetSysColorBrush(COLOR_WINDOWFRAME));
|
||||
/* Draw console size */
|
||||
SetRect(&cRect, startx, starty, endx, endy);
|
||||
FillRect(drawItem->hDC, &cRect, GetSysColorBrush(COLOR_WINDOWFRAME));
|
||||
|
||||
/* Draw console border */
|
||||
SetRect(&fRect, startx + 1, starty + 1, cRect.right - 1, cRect.bottom - 1);
|
||||
FrameRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVEBORDER));
|
||||
/* Draw console border */
|
||||
SetRect(&fRect, startx + 1, starty + 1, cRect.right - 1, cRect.bottom - 1);
|
||||
FrameRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVEBORDER));
|
||||
|
||||
/* Draw left box */
|
||||
SetRect(&fRect, startx + 3, starty + 3, startx + 5, starty + 5);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVEBORDER));
|
||||
/* Draw left box */
|
||||
SetRect(&fRect, startx + 3, starty + 3, startx + 5, starty + 5);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVEBORDER));
|
||||
|
||||
/* Draw window title */
|
||||
SetRect(&fRect, startx + 7, starty + 3, cRect.right - 9, starty + 5);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVECAPTION));
|
||||
/* Draw window title */
|
||||
SetRect(&fRect, startx + 7, starty + 3, cRect.right - 9, starty + 5);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVECAPTION));
|
||||
|
||||
/* Draw first right box */
|
||||
SetRect(&fRect, fRect.right + 1, starty + 3, fRect.right + 3, starty + 5);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVEBORDER));
|
||||
/* Draw first right box */
|
||||
SetRect(&fRect, fRect.right + 1, starty + 3, fRect.right + 3, starty + 5);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVEBORDER));
|
||||
|
||||
/* Draw second right box */
|
||||
SetRect(&fRect, fRect.right + 1, starty + 3, fRect.right + 3, starty + 5);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVEBORDER));
|
||||
/* Draw second right box */
|
||||
SetRect(&fRect, fRect.right + 1, starty + 3, fRect.right + 3, starty + 5);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_ACTIVEBORDER));
|
||||
|
||||
/* Draw scrollbar */
|
||||
SetRect(&fRect, cRect.right - 5, fRect.bottom + 1, cRect.right - 3, cRect.bottom - 3);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_SCROLLBAR));
|
||||
/* Draw scrollbar */
|
||||
SetRect(&fRect, cRect.right - 5, fRect.bottom + 1, cRect.right - 3, cRect.bottom - 3);
|
||||
FillRect(drawItem->hDC, &fRect, GetSysColorBrush(COLOR_SCROLLBAR));
|
||||
|
||||
/* Draw console background */
|
||||
hBrush = CreateSolidBrush(pConInfo->ScreenBackground);
|
||||
SetRect(&fRect, startx + 3, starty + 6, cRect.right - 6, cRect.bottom - 3);
|
||||
FillRect(drawItem->hDC, &fRect, hBrush);
|
||||
DeleteObject((HGDIOBJ)hBrush);
|
||||
/* Draw console background */
|
||||
hBrush = CreateSolidBrush(pConInfo->ci.Colors[BkgdAttribFromAttrib(pConInfo->ci.ScreenAttrib)]);
|
||||
SetRect(&fRect, startx + 3, starty + 6, cRect.right - 6, cRect.bottom - 3);
|
||||
FillRect(drawItem->hDC, &fRect, hBrush);
|
||||
DeleteObject((HGDIOBJ)hBrush);
|
||||
}
|
||||
|
||||
void PaintText(LPDRAWITEMSTRUCT drawItem, PConsoleInfo pConInfo)
|
||||
VOID PaintText(LPDRAWITEMSTRUCT drawItem,
|
||||
PCONSOLE_PROPS pConInfo)
|
||||
{
|
||||
COLORREF pbkColor, ptColor;
|
||||
COLORREF nbkColor, ntColor;
|
||||
HBRUSH hBrush = NULL;
|
||||
TCHAR szText[1024];
|
||||
COLORREF pbkColor, ptColor;
|
||||
COLORREF nbkColor, ntColor;
|
||||
HBRUSH hBrush = NULL;
|
||||
|
||||
ZeroMemory(szText, sizeof(szText));
|
||||
LoadString(hApplet, IDS_SCREEN_TEXT, szText, sizeof(szText) / sizeof(TCHAR));
|
||||
if (drawItem->CtlID == IDC_STATIC_SCREEN_COLOR)
|
||||
{
|
||||
nbkColor = pConInfo->ci.Colors[BkgdAttribFromAttrib(pConInfo->ci.ScreenAttrib)];
|
||||
hBrush = CreateSolidBrush(nbkColor);
|
||||
ntColor = pConInfo->ci.Colors[TextAttribFromAttrib(pConInfo->ci.ScreenAttrib)];
|
||||
}
|
||||
else if (drawItem->CtlID == IDC_STATIC_POPUP_COLOR)
|
||||
{
|
||||
nbkColor = pConInfo->ci.Colors[BkgdAttribFromAttrib(pConInfo->ci.PopupAttrib)];
|
||||
hBrush = CreateSolidBrush(nbkColor);
|
||||
ntColor = pConInfo->ci.Colors[TextAttribFromAttrib(pConInfo->ci.PopupAttrib)];
|
||||
}
|
||||
|
||||
if (drawItem->CtlID == IDC_STATIC_SCREEN_COLOR)
|
||||
{
|
||||
nbkColor = pConInfo->ScreenBackground;
|
||||
hBrush = CreateSolidBrush(nbkColor);
|
||||
ntColor = pConInfo->ScreenText;
|
||||
}
|
||||
else if (drawItem->CtlID == IDC_STATIC_POPUP_COLOR)
|
||||
{
|
||||
nbkColor = pConInfo->PopupBackground;
|
||||
hBrush = CreateSolidBrush(nbkColor);
|
||||
ntColor = pConInfo->PopupText;
|
||||
}
|
||||
if (!hBrush)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!hBrush)
|
||||
{
|
||||
return;
|
||||
}
|
||||
FillRect(drawItem->hDC, &drawItem->rcItem, hBrush);
|
||||
|
||||
FillRect(drawItem->hDC, &drawItem->rcItem, hBrush);
|
||||
if (ntColor == nbkColor)
|
||||
{
|
||||
/* Text has same color -> invisible */
|
||||
return;
|
||||
}
|
||||
|
||||
ptColor = SetTextColor(drawItem->hDC, ntColor);
|
||||
pbkColor = SetBkColor(drawItem->hDC, nbkColor);
|
||||
DrawText(drawItem->hDC, szText, _tcslen(szText), &drawItem->rcItem, 0);
|
||||
SetTextColor(drawItem->hDC, ptColor);
|
||||
SetBkColor(drawItem->hDC, pbkColor);
|
||||
DeleteObject((HGDIOBJ)hBrush);
|
||||
ptColor = SetTextColor(drawItem->hDC, ntColor);
|
||||
pbkColor = SetBkColor(drawItem->hDC, nbkColor);
|
||||
DrawText(drawItem->hDC, szPreviewText, _tcslen(szPreviewText), &drawItem->rcItem, 0);
|
||||
SetTextColor(drawItem->hDC, ptColor);
|
||||
SetBkColor(drawItem->hDC, pbkColor);
|
||||
DeleteObject((HGDIOBJ)hBrush);
|
||||
}
|
||||
|
||||
|
||||
INT_PTR
|
||||
CALLBACK
|
||||
LayoutProc(
|
||||
HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam
|
||||
)
|
||||
LayoutProc(HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
LPNMUPDOWN lpnmud;
|
||||
LPPSHNOTIFY lppsn;
|
||||
PConsoleInfo pConInfo = (PConsoleInfo)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
LPNMUPDOWN lpnmud;
|
||||
LPPSHNOTIFY lppsn;
|
||||
PCONSOLE_PROPS pConInfo = (PCONSOLE_PROPS)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
PGUI_CONSOLE_INFO GuiInfo = (pConInfo ? pConInfo->TerminalInfo.TermInfo : NULL);
|
||||
|
||||
UNREFERENCED_PARAMETER(hwndDlg);
|
||||
UNREFERENCED_PARAMETER(wParam);
|
||||
UNREFERENCED_PARAMETER(hwndDlg);
|
||||
UNREFERENCED_PARAMETER(wParam);
|
||||
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
DWORD xres, yres;
|
||||
HDC hDC;
|
||||
pConInfo = (PConsoleInfo) ((LPPROPSHEETPAGE)lParam)->lParam;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, HIWORD(pConInfo->ScreenBuffer), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, LOWORD(pConInfo->ScreenBuffer), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, HIWORD(pConInfo->WindowSize), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, LOWORD(pConInfo->WindowSize), FALSE);
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_SCREEN_BUFFER_HEIGHT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_SCREEN_BUFFER_WIDTH), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_SIZE_HEIGHT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_SIZE_WIDTH), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
DWORD xres, yres;
|
||||
HDC hDC;
|
||||
pConInfo = (PCONSOLE_PROPS)((LPPROPSHEETPAGE)lParam)->lParam;
|
||||
GuiInfo = pConInfo->TerminalInfo.TermInfo;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo);
|
||||
|
||||
hDC = GetDC(NULL);
|
||||
xres = GetDeviceCaps(hDC, HORZRES);
|
||||
yres = GetDeviceCaps(hDC, VERTRES);
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(xres, 0));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), UDM_SETRANGE, 0, (LPARAM)MAKELONG(yres, 0));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_SCREEN_BUFFER_HEIGHT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_SCREEN_BUFFER_WIDTH), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_SIZE_HEIGHT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_SIZE_WIDTH), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
|
||||
|
||||
if (pConInfo->WindowPosition != MAXDWORD)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, LOWORD(pConInfo->WindowPosition), FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, HIWORD(pConInfo->WindowPosition), FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
// FIXME: Calculate window pos from xres, yres
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, 88, FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, 88, FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_TOP), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), FALSE);
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_SYSTEM_POS_WINDOW), BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
}
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, pConInfo->ci.ScreenBufferSize.Y, FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, pConInfo->ci.ScreenBufferSize.X, FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, pConInfo->ci.ConsoleSize.Y, FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, pConInfo->ci.ConsoleSize.X, FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
case WM_DRAWITEM:
|
||||
{
|
||||
PaintConsole((LPDRAWITEMSTRUCT)lParam, pConInfo);
|
||||
return TRUE;
|
||||
}
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
lpnmud = (LPNMUPDOWN) lParam;
|
||||
lppsn = (LPPSHNOTIFY) lParam;
|
||||
hDC = GetDC(NULL);
|
||||
xres = GetDeviceCaps(hDC, HORZRES);
|
||||
yres = GetDeviceCaps(hDC, VERTRES);
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(xres, 0));
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), UDM_SETRANGE, 0, (LPARAM)MAKELONG(yres, 0));
|
||||
|
||||
if (lppsn->hdr.code == UDN_DELTAPOS)
|
||||
{
|
||||
DWORD wheight, wwidth;
|
||||
DWORD sheight, swidth;
|
||||
DWORD left, top;
|
||||
if ( GuiInfo->WindowOrigin.x != MAXDWORD &&
|
||||
GuiInfo->WindowOrigin.y != MAXDWORD )
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, GuiInfo->WindowOrigin.x, FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, GuiInfo->WindowOrigin.y, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
// FIXME: Calculate window pos from xres, yres
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, 88, FALSE);
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, 88, FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_TOP), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), FALSE);
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_SYSTEM_POS_WINDOW), BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
}
|
||||
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_WIDTH)
|
||||
{
|
||||
wwidth = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
wwidth = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, NULL, FALSE);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
case WM_DRAWITEM:
|
||||
{
|
||||
PaintConsole((LPDRAWITEMSTRUCT)lParam, pConInfo);
|
||||
return TRUE;
|
||||
}
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
lpnmud = (LPNMUPDOWN) lParam;
|
||||
lppsn = (LPPSHNOTIFY) lParam;
|
||||
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_HEIGHT)
|
||||
{
|
||||
wheight = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
wheight = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, NULL, FALSE);
|
||||
}
|
||||
if (lppsn->hdr.code == UDN_DELTAPOS)
|
||||
{
|
||||
DWORD wheight, wwidth;
|
||||
DWORD sheight, swidth;
|
||||
DWORD left, top;
|
||||
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_WIDTH)
|
||||
{
|
||||
swidth = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
swidth = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, NULL, FALSE);
|
||||
}
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_WIDTH)
|
||||
{
|
||||
wwidth = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
wwidth = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, NULL, FALSE);
|
||||
}
|
||||
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_HEIGHT)
|
||||
{
|
||||
sheight = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
sheight = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, NULL, FALSE);
|
||||
}
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_HEIGHT)
|
||||
{
|
||||
wheight = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
wheight = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, NULL, FALSE);
|
||||
}
|
||||
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_POS_LEFT)
|
||||
{
|
||||
left = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
left = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, NULL, FALSE);
|
||||
}
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_WIDTH)
|
||||
{
|
||||
swidth = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
swidth = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, NULL, FALSE);
|
||||
}
|
||||
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_POS_TOP)
|
||||
{
|
||||
top = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
top = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, NULL, FALSE);
|
||||
}
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_HEIGHT)
|
||||
{
|
||||
sheight = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
sheight = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, NULL, FALSE);
|
||||
}
|
||||
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_WIDTH || lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_HEIGHT)
|
||||
{
|
||||
/* Automatically adjust screen buffer size when window size enlarges */
|
||||
if (wwidth >= swidth)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, wwidth, TRUE);
|
||||
swidth = wwidth;
|
||||
}
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_POS_LEFT)
|
||||
{
|
||||
left = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
left = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, NULL, FALSE);
|
||||
}
|
||||
|
||||
if (wheight >= sheight)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, wheight, TRUE);
|
||||
sheight = wheight;
|
||||
}
|
||||
}
|
||||
swidth = max(swidth, 1);
|
||||
sheight = max(sheight, 1);
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_POS_TOP)
|
||||
{
|
||||
top = lpnmud->iPos + lpnmud->iDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
top = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, NULL, FALSE);
|
||||
}
|
||||
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_WIDTH || lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_HEIGHT)
|
||||
{
|
||||
/* Automatically adjust window size when screen buffer decreases */
|
||||
if (wwidth > swidth)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, swidth, TRUE);
|
||||
wwidth = swidth;
|
||||
}
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_WIDTH || lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_HEIGHT)
|
||||
{
|
||||
/* Automatically adjust screen buffer size when window size enlarges */
|
||||
if (wwidth >= swidth)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, wwidth, TRUE);
|
||||
swidth = wwidth;
|
||||
}
|
||||
|
||||
if (wheight > sheight)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, sheight, TRUE);
|
||||
wheight = sheight;
|
||||
}
|
||||
}
|
||||
if (wheight >= sheight)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, wheight, TRUE);
|
||||
sheight = wheight;
|
||||
}
|
||||
}
|
||||
swidth = max(swidth, 1);
|
||||
sheight = max(sheight, 1);
|
||||
|
||||
pConInfo->ScreenBuffer = MAKELONG(swidth, sheight);
|
||||
pConInfo->WindowSize = MAKELONG(wwidth, wheight);
|
||||
pConInfo->WindowPosition = MAKELONG(left, top);
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_EDIT_SCREEN_BUFFER_WIDTH:
|
||||
case IDC_EDIT_SCREEN_BUFFER_HEIGHT:
|
||||
case IDC_EDIT_WINDOW_SIZE_WIDTH:
|
||||
case IDC_UPDOWN_WINDOW_SIZE_HEIGHT:
|
||||
case IDC_EDIT_WINDOW_POS_LEFT:
|
||||
case IDC_EDIT_WINDOW_POS_TOP:
|
||||
{
|
||||
if (HIWORD(wParam) == EN_KILLFOCUS)
|
||||
{
|
||||
DWORD wheight, wwidth;
|
||||
DWORD sheight, swidth;
|
||||
DWORD left, top;
|
||||
if (lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_WIDTH || lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_HEIGHT)
|
||||
{
|
||||
/* Automatically adjust window size when screen buffer decreases */
|
||||
if (wwidth > swidth)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, swidth, TRUE);
|
||||
wwidth = swidth;
|
||||
}
|
||||
|
||||
wwidth = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, NULL, FALSE);
|
||||
wheight = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, NULL, FALSE);
|
||||
swidth = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, NULL, FALSE);
|
||||
sheight = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, NULL, FALSE);
|
||||
left = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, NULL, FALSE);
|
||||
top = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, NULL, FALSE);
|
||||
if (wheight > sheight)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, sheight, TRUE);
|
||||
wheight = sheight;
|
||||
}
|
||||
}
|
||||
|
||||
swidth = max(swidth, 1);
|
||||
sheight = max(sheight, 1);
|
||||
pConInfo->ci.ScreenBufferSize.X = swidth;
|
||||
pConInfo->ci.ScreenBufferSize.Y = sheight;
|
||||
pConInfo->ci.ConsoleSize.X = wwidth;
|
||||
pConInfo->ci.ConsoleSize.Y = wheight;
|
||||
GuiInfo->WindowOrigin.x = left;
|
||||
GuiInfo->WindowOrigin.y = top;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_EDIT_SCREEN_BUFFER_WIDTH:
|
||||
case IDC_EDIT_SCREEN_BUFFER_HEIGHT:
|
||||
case IDC_EDIT_WINDOW_SIZE_WIDTH:
|
||||
case IDC_UPDOWN_WINDOW_SIZE_HEIGHT:
|
||||
case IDC_EDIT_WINDOW_POS_LEFT:
|
||||
case IDC_EDIT_WINDOW_POS_TOP:
|
||||
{
|
||||
if (HIWORD(wParam) == EN_KILLFOCUS)
|
||||
{
|
||||
DWORD wheight, wwidth;
|
||||
DWORD sheight, swidth;
|
||||
DWORD left, top;
|
||||
|
||||
/* Automatically adjust window size when screen buffer decreases */
|
||||
if (wwidth > swidth)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, swidth, TRUE);
|
||||
wwidth = swidth;
|
||||
}
|
||||
wwidth = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, NULL, FALSE);
|
||||
wheight = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, NULL, FALSE);
|
||||
swidth = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, NULL, FALSE);
|
||||
sheight = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, NULL, FALSE);
|
||||
left = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, NULL, FALSE);
|
||||
top = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, NULL, FALSE);
|
||||
|
||||
if (wheight > sheight)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, sheight, TRUE);
|
||||
wheight = sheight;
|
||||
}
|
||||
swidth = max(swidth, 1);
|
||||
sheight = max(sheight, 1);
|
||||
|
||||
/* Automatically adjust window size when screen buffer decreases */
|
||||
if (wwidth > swidth)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, swidth, TRUE);
|
||||
wwidth = swidth;
|
||||
}
|
||||
|
||||
pConInfo->ScreenBuffer = MAKELONG(swidth, sheight);
|
||||
pConInfo->WindowSize = MAKELONG(wwidth, wheight);
|
||||
pConInfo->WindowPosition = MAKELONG(left, top);
|
||||
if (wheight > sheight)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, sheight, TRUE);
|
||||
wheight = sheight;
|
||||
}
|
||||
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
pConInfo->ci.ScreenBufferSize.X = swidth;
|
||||
pConInfo->ci.ScreenBufferSize.Y = sheight;
|
||||
pConInfo->ci.ConsoleSize.X = wwidth;
|
||||
pConInfo->ci.ConsoleSize.Y = wheight;
|
||||
GuiInfo->WindowOrigin.x = left;
|
||||
GuiInfo->WindowOrigin.y = top;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case IDC_CHECK_SYSTEM_POS_WINDOW:
|
||||
{
|
||||
LONG res = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0);
|
||||
if (res == BST_CHECKED)
|
||||
{
|
||||
ULONG left, top;
|
||||
case IDC_CHECK_SYSTEM_POS_WINDOW:
|
||||
{
|
||||
LONG res = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0);
|
||||
if (res == BST_CHECKED)
|
||||
{
|
||||
ULONG left, top;
|
||||
|
||||
left = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, NULL, FALSE);
|
||||
top = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, NULL, FALSE);
|
||||
pConInfo->WindowPosition = MAKELONG(left, top);
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT), TRUE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_TOP), TRUE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), TRUE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), TRUE);
|
||||
}
|
||||
else if (res == BST_UNCHECKED)
|
||||
{
|
||||
pConInfo->WindowPosition = UINT_MAX;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_TOP), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
left = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, NULL, FALSE);
|
||||
top = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, NULL, FALSE);
|
||||
GuiInfo->WindowOrigin.x = left;
|
||||
GuiInfo->WindowOrigin.y = top;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT), TRUE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_TOP), TRUE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), TRUE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), TRUE);
|
||||
}
|
||||
else if (res == BST_UNCHECKED)
|
||||
{
|
||||
GuiInfo->WindowOrigin.x = UINT_MAX;
|
||||
GuiInfo->WindowOrigin.y = UINT_MAX;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_TOP), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+217
-223
@@ -8,257 +8,251 @@
|
||||
|
||||
#include "console.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
static
|
||||
void
|
||||
UpdateDialogElements(HWND hwndDlg, PConsoleInfo pConInfo);
|
||||
UpdateDialogElements(HWND hwndDlg, PCONSOLE_PROPS pConInfo);
|
||||
|
||||
INT_PTR
|
||||
CALLBACK
|
||||
OptionsProc(
|
||||
HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam
|
||||
)
|
||||
OptionsProc(HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
PConsoleInfo pConInfo;
|
||||
LRESULT lResult;
|
||||
HWND hDlgCtrl;
|
||||
PCONSOLE_PROPS pConInfo;
|
||||
LRESULT lResult;
|
||||
HWND hDlgCtrl;
|
||||
LPPSHNOTIFY lppsn;
|
||||
|
||||
pConInfo = (PConsoleInfo) GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
pConInfo = (PCONSOLE_PROPS)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
pConInfo = (PConsoleInfo) ((LPPROPSHEETPAGE)lParam)->lParam;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo);
|
||||
UpdateDialogElements(hwndDlg, pConInfo);
|
||||
return TRUE;
|
||||
}
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
if (!pConInfo)
|
||||
{
|
||||
break;
|
||||
}
|
||||
lppsn = (LPPSHNOTIFY) lParam;
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
pConInfo = (PCONSOLE_PROPS)((LPPROPSHEETPAGE)lParam)->lParam;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo);
|
||||
UpdateDialogElements(hwndDlg, pConInfo);
|
||||
return TRUE;
|
||||
}
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
if (!pConInfo) break;
|
||||
|
||||
lppsn = (LPPSHNOTIFY) lParam;
|
||||
if (lppsn->hdr.code == UDN_DELTAPOS)
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_BUFFER_SIZE);
|
||||
pConInfo->HistoryBufferSize = LOWORD(SendMessage(hDlgCtrl, UDM_GETPOS, 0, 0));
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_BUFFER_SIZE);
|
||||
pConInfo->ci.HistoryBufferSize = LOWORD(SendMessage(hDlgCtrl, UDM_GETPOS, 0, 0));
|
||||
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_NUM_BUFFER);
|
||||
pConInfo->NumberOfHistoryBuffers = LOWORD(SendMessage(hDlgCtrl, UDM_GETPOS, 0, 0));
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
}
|
||||
else if (lppsn->hdr.code == PSN_APPLY)
|
||||
{
|
||||
if (!pConInfo->AppliedConfig)
|
||||
{
|
||||
ApplyConsoleInfo(hwndDlg, pConInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Options have already been applied */
|
||||
SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
|
||||
return TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
if (!pConInfo)
|
||||
{
|
||||
break;
|
||||
}
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_RADIO_SMALL_CURSOR:
|
||||
{
|
||||
pConInfo->CursorSize = 0x0;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_MEDIUM_CURSOR:
|
||||
{
|
||||
pConInfo->CursorSize = 0x32;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_LARGE_CURSOR:
|
||||
{
|
||||
pConInfo->CursorSize = 0x64;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_DISPLAY_WINDOW:
|
||||
{
|
||||
pConInfo->FullScreen = FALSE;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_DISPLAY_FULL:
|
||||
{
|
||||
pConInfo->FullScreen = TRUE;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_CHECK_QUICK_EDIT:
|
||||
{
|
||||
lResult = SendMessage((HWND)lParam, BM_GETCHECK, (WPARAM)0, (LPARAM)0);
|
||||
if (lResult == BST_CHECKED)
|
||||
{
|
||||
pConInfo->QuickEdit = FALSE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
|
||||
}
|
||||
else if (lResult == BST_UNCHECKED)
|
||||
{
|
||||
pConInfo->QuickEdit = TRUE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
|
||||
}
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_CHECK_INSERT_MODE:
|
||||
{
|
||||
lResult = SendMessage((HWND)lParam, BM_GETCHECK, (WPARAM)0, (LPARAM)0);
|
||||
if (lResult == BST_CHECKED)
|
||||
{
|
||||
pConInfo->InsertMode = FALSE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
|
||||
}
|
||||
else if (lResult == BST_UNCHECKED)
|
||||
{
|
||||
pConInfo->InsertMode = TRUE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
|
||||
}
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_CHECK_DISCARD_DUPLICATES:
|
||||
{
|
||||
lResult = SendMessage((HWND)lParam, BM_GETCHECK, (WPARAM)0, (LPARAM)0);
|
||||
if (lResult == BST_CHECKED)
|
||||
{
|
||||
pConInfo->HistoryNoDup = FALSE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
|
||||
}
|
||||
else if (lResult == BST_UNCHECKED)
|
||||
{
|
||||
pConInfo->HistoryNoDup = TRUE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
|
||||
}
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_NUM_BUFFER);
|
||||
pConInfo->ci.NumberOfHistoryBuffers = LOWORD(SendMessage(hDlgCtrl, UDM_GETPOS, 0, 0));
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
}
|
||||
else if (lppsn->hdr.code == PSN_APPLY)
|
||||
{
|
||||
if (!pConInfo->AppliedConfig)
|
||||
{
|
||||
return ApplyConsoleInfo(hwndDlg, pConInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Options have already been applied */
|
||||
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
if (!pConInfo) break;
|
||||
|
||||
return FALSE;
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_RADIO_SMALL_CURSOR:
|
||||
{
|
||||
pConInfo->ci.CursorSize = 25;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_MEDIUM_CURSOR:
|
||||
{
|
||||
pConInfo->ci.CursorSize = 50;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_LARGE_CURSOR:
|
||||
{
|
||||
pConInfo->ci.CursorSize = 100;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_DISPLAY_WINDOW:
|
||||
{
|
||||
pConInfo->ci.FullScreen = FALSE;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_RADIO_DISPLAY_FULL:
|
||||
{
|
||||
pConInfo->ci.FullScreen = TRUE;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_CHECK_QUICK_EDIT:
|
||||
{
|
||||
lResult = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0);
|
||||
if (lResult == BST_CHECKED)
|
||||
{
|
||||
pConInfo->ci.QuickEdit = FALSE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
else if (lResult == BST_UNCHECKED)
|
||||
{
|
||||
pConInfo->ci.QuickEdit = TRUE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
}
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_CHECK_INSERT_MODE:
|
||||
{
|
||||
lResult = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0);
|
||||
if (lResult == BST_CHECKED)
|
||||
{
|
||||
pConInfo->ci.InsertMode = FALSE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
else if (lResult == BST_UNCHECKED)
|
||||
{
|
||||
pConInfo->ci.InsertMode = TRUE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
}
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
case IDC_CHECK_DISCARD_DUPLICATES:
|
||||
{
|
||||
lResult = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0);
|
||||
if (lResult == BST_CHECKED)
|
||||
{
|
||||
pConInfo->ci.HistoryNoDup = FALSE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
else if (lResult == BST_UNCHECKED)
|
||||
{
|
||||
pConInfo->ci.HistoryNoDup = TRUE;
|
||||
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
}
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
UpdateDialogElements(HWND hwndDlg, PConsoleInfo pConInfo)
|
||||
UpdateDialogElements(HWND hwndDlg, PCONSOLE_PROPS pConInfo)
|
||||
{
|
||||
HWND hDlgCtrl;
|
||||
TCHAR szBuffer[MAX_PATH];
|
||||
HWND hDlgCtrl;
|
||||
TCHAR szBuffer[MAX_PATH];
|
||||
|
||||
/* Update cursor size */
|
||||
if ( pConInfo->CursorSize == 0)
|
||||
{
|
||||
/* Small cursor */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
/* Update cursor size */
|
||||
if (pConInfo->ci.CursorSize <= 25)
|
||||
{
|
||||
/* Small cursor */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
else if ( pConInfo->CursorSize == 0x32 )
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
else if (pConInfo->ci.CursorSize <= 50)
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
else if ( pConInfo->CursorSize == 0x64 )
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
else /* if (pConInfo->ci.CursorSize <= 100) */
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
|
||||
/* Update num buffers */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_NUM_BUFFER);
|
||||
SendMessage(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG((short)999, (short)1));
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_NUM_BUFFER);
|
||||
_stprintf(szBuffer, _T("%d"), pConInfo->NumberOfHistoryBuffers);
|
||||
SendMessage(hDlgCtrl, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||
/* Update num buffers */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_NUM_BUFFER);
|
||||
SendMessage(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG((short)999, (short)1));
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_NUM_BUFFER);
|
||||
_stprintf(szBuffer, _T("%d"), pConInfo->ci.NumberOfHistoryBuffers);
|
||||
SendMessage(hDlgCtrl, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||
|
||||
/* Update buffer size */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_BUFFER_SIZE);
|
||||
SendMessage(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG((short)999, (short)1));
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_BUFFER_SIZE);
|
||||
_stprintf(szBuffer, _T("%d"), pConInfo->HistoryBufferSize);
|
||||
SendMessage(hDlgCtrl, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||
/* Update buffer size */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_BUFFER_SIZE);
|
||||
SendMessage(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG((short)999, (short)1));
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_BUFFER_SIZE);
|
||||
_stprintf(szBuffer, _T("%d"), pConInfo->ci.HistoryBufferSize);
|
||||
SendMessage(hDlgCtrl, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||
|
||||
/* Update discard duplicates */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_DISCARD_DUPLICATES);
|
||||
if (pConInfo->ci.HistoryNoDup)
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
else
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
|
||||
/* Update full/window screen */
|
||||
if (pConInfo->ci.FullScreen)
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_FULL);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
|
||||
/* Update discard duplicates */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_DISCARD_DUPLICATES);
|
||||
if ( pConInfo->HistoryNoDup )
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
else
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_WINDOW);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_WINDOW);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
|
||||
/* Update full/window screen */
|
||||
if ( pConInfo->FullScreen )
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_FULL);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_FULL);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_WINDOW);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_WINDOW);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
/* Update quick edit */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_QUICK_EDIT);
|
||||
if (pConInfo->ci.QuickEdit)
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
else
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_FULL);
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
|
||||
/* Update quick edit */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_QUICK_EDIT);
|
||||
if ( pConInfo->QuickEdit )
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
else
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
|
||||
/* Update insert mode */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_INSERT_MODE);
|
||||
if ( pConInfo->InsertMode )
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
else
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
/* Update insert mode */
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_INSERT_MODE);
|
||||
if (pConInfo->ci.InsertMode)
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||
else
|
||||
SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 231 KiB After Width: | Height: | Size: 231 KiB |
@@ -1,36 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#define IDC_CPLICON 40
|
||||
#define IDS_CPLNAME 41
|
||||
#define IDS_CPLDESCRIPTION 42
|
||||
#define IDC_CPLICON 40
|
||||
#define IDS_CPLNAME 41
|
||||
#define IDS_CPLDESCRIPTION 42
|
||||
#define IDS_APPLY_SHORTCUT_ALL 43
|
||||
|
||||
#define IDD_PROPPAGEOPTIONS 100
|
||||
#define IDD_PROPPAGEFONT 101
|
||||
#define IDD_PROPPAGELAYOUT 102
|
||||
#define IDD_PROPPAGECOLORS 103
|
||||
#define IDD_APPLYOPTIONS 104
|
||||
#define IDD_PROPPAGEOPTIONS 100
|
||||
#define IDD_PROPPAGEFONT 101
|
||||
#define IDD_PROPPAGELAYOUT 102
|
||||
#define IDD_PROPPAGECOLORS 103
|
||||
#define IDD_APPLYOPTIONS 104
|
||||
|
||||
// Options dialog
|
||||
#define IDC_CHECK_QUICK_EDIT 200
|
||||
#define IDC_CHECK_INSERT_MODE 201
|
||||
#define IDC_CHECK_DISCARD_DUPLICATES 202
|
||||
#define IDC_EDIT_BUFFER_SIZE 203
|
||||
#define IDC_UPDOWN_BUFFER_SIZE 204
|
||||
#define IDC_EDIT_NUM_BUFFER 205
|
||||
#define IDC_UPDOWN_NUM_BUFFER 206
|
||||
#define IDC_RADIO_SMALL_CURSOR 207
|
||||
#define IDC_RADIO_MEDIUM_CURSOR 208
|
||||
#define IDC_RADIO_LARGE_CURSOR 209
|
||||
#define IDC_RADIO_DISPLAY_WINDOW 210
|
||||
#define IDC_RADIO_DISPLAY_FULL 211
|
||||
#define IDC_CHECK_QUICK_EDIT 200
|
||||
#define IDC_CHECK_INSERT_MODE 201
|
||||
#define IDC_CHECK_DISCARD_DUPLICATES 202
|
||||
#define IDC_EDIT_BUFFER_SIZE 203
|
||||
#define IDC_UPDOWN_BUFFER_SIZE 204
|
||||
#define IDC_EDIT_NUM_BUFFER 205
|
||||
#define IDC_UPDOWN_NUM_BUFFER 206
|
||||
#define IDC_RADIO_SMALL_CURSOR 207
|
||||
#define IDC_RADIO_MEDIUM_CURSOR 208
|
||||
#define IDC_RADIO_LARGE_CURSOR 209
|
||||
#define IDC_RADIO_DISPLAY_WINDOW 210
|
||||
#define IDC_RADIO_DISPLAY_FULL 211
|
||||
|
||||
// Apply dialog
|
||||
#define IDC_RADIO_APPLY_ALL 300
|
||||
#define IDC_RADIO_APPLY_CURRENT 301
|
||||
#define IDC_RADIO_APPLY_ALL 300
|
||||
#define IDC_RADIO_APPLY_CURRENT 301
|
||||
|
||||
// Font dialog
|
||||
#define IDC_CHECK_BOLD_FONTS 400
|
||||
#define IDC_CHECK_BOLD_FONTS 400
|
||||
#define IDC_STATIC_SELECT_FONT_PREVIEW 401
|
||||
#define IDC_FONT_SIZE_X 402
|
||||
#define IDC_FONT_SIZE_Y 403
|
||||
@@ -40,20 +40,20 @@
|
||||
#define IDC_GROUPBOX_FONT_NAME 407
|
||||
|
||||
// Layout dialog
|
||||
#define IDC_UPDOWN_SCREEN_BUFFER_WIDTH 500
|
||||
#define IDC_EDIT_SCREEN_BUFFER_WIDTH 501
|
||||
#define IDC_EDIT_SCREEN_BUFFER_HEIGHT 502
|
||||
#define IDC_UPDOWN_SCREEN_BUFFER_HEIGHT 503
|
||||
#define IDC_EDIT_WINDOW_SIZE_WIDTH 504
|
||||
#define IDC_UPDOWN_WINDOW_SIZE_WIDTH 505
|
||||
#define IDC_EDIT_WINDOW_SIZE_HEIGHT 506
|
||||
#define IDC_UPDOWN_WINDOW_SIZE_HEIGHT 507
|
||||
#define IDC_EDIT_WINDOW_POS_LEFT 508
|
||||
#define IDC_UPDOWN_WINDOW_POS_LEFT 509
|
||||
#define IDC_EDIT_WINDOW_POS_TOP 510
|
||||
#define IDC_UPDOWN_WINDOW_POS_TOP 511
|
||||
#define IDC_CHECK_SYSTEM_POS_WINDOW 512
|
||||
#define IDC_STATIC_LAYOUT_WINDOW_PREVIEW 513
|
||||
#define IDC_UPDOWN_SCREEN_BUFFER_WIDTH 500
|
||||
#define IDC_EDIT_SCREEN_BUFFER_WIDTH 501
|
||||
#define IDC_EDIT_SCREEN_BUFFER_HEIGHT 502
|
||||
#define IDC_UPDOWN_SCREEN_BUFFER_HEIGHT 503
|
||||
#define IDC_EDIT_WINDOW_SIZE_WIDTH 504
|
||||
#define IDC_UPDOWN_WINDOW_SIZE_WIDTH 505
|
||||
#define IDC_EDIT_WINDOW_SIZE_HEIGHT 506
|
||||
#define IDC_UPDOWN_WINDOW_SIZE_HEIGHT 507
|
||||
#define IDC_EDIT_WINDOW_POS_LEFT 508
|
||||
#define IDC_UPDOWN_WINDOW_POS_LEFT 509
|
||||
#define IDC_EDIT_WINDOW_POS_TOP 510
|
||||
#define IDC_UPDOWN_WINDOW_POS_TOP 511
|
||||
#define IDC_CHECK_SYSTEM_POS_WINDOW 512
|
||||
#define IDC_STATIC_LAYOUT_WINDOW_PREVIEW 513
|
||||
|
||||
// Color dialog
|
||||
#define IDC_RADIO_SCREEN_TEXT 600
|
||||
@@ -86,5 +86,4 @@
|
||||
#define IDC_STATIC_COLOR16 627
|
||||
|
||||
// String IDs
|
||||
#define IDS_SCREEN_TEXT 700
|
||||
#define IDS_RASTERFONTS 701
|
||||
#define IDS_RASTERFONTS 700
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
// UTF-8
|
||||
#pragma code_page(65001)
|
||||
#ifdef LANGUAGE_BG_BG
|
||||
#include "lang/bg-BG.rc"
|
||||
#endif
|
||||
@@ -18,6 +20,9 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
#ifdef LANGUAGE_FR_FR
|
||||
#include "lang/fr-FR.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_HE_IL
|
||||
#include "lang/he-IL.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_ID_ID
|
||||
#include "lang/id-ID.rc"
|
||||
#endif
|
||||
@@ -27,18 +32,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
#ifdef LANGUAGE_NB_NO
|
||||
#include "lang/no-NO.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_SK_SK
|
||||
#include "lang/sk-SK.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_CN
|
||||
#include "lang/zh-CN.rc"
|
||||
#endif
|
||||
|
||||
// UTF-8
|
||||
#pragma code_page(65001)
|
||||
#ifdef LANGUAGE_HE_IL
|
||||
#include "lang/he-IL.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_PL_PL
|
||||
#include "lang/pl-PL.rc"
|
||||
#endif
|
||||
@@ -48,6 +41,12 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
#ifdef LANGUAGE_RU_RU
|
||||
#include "lang/ru-RU.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_SK_SK
|
||||
#include "lang/sk-SK.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_UK_UA
|
||||
#include "lang/uk-UA.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_CN
|
||||
#include "lang/zh-CN.rc"
|
||||
#endif
|
||||
|
||||
+17
-18
@@ -1,21 +1,22 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: lib/ntdll/csr/api.c
|
||||
* FILE: dll/ntdll/csr/api.c
|
||||
* PURPOSE: CSR APIs exported through NTDLL
|
||||
* PROGRAMMER: Alex Ionescu ([email protected])
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include <ntdll.h>
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
/* GLOBALS ********************************************************************/
|
||||
|
||||
extern HANDLE CsrApiPort;
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
@@ -37,8 +38,8 @@ CsrSetPriorityClass(HANDLE hProcess,
|
||||
PULONG PriorityClass)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CSR_API_MESSAGE2 ApiMessage; /* <- Remove the "2" when CSR is commited */
|
||||
PCSR_SET_PRIORITY_CLASS SetPriorityClass = &ApiMessage.SetPriorityClass;
|
||||
CSR_API_MESSAGE ApiMessage;
|
||||
PCSR_SET_PRIORITY_CLASS SetPriorityClass = &ApiMessage.Data.SetPriorityClass;
|
||||
|
||||
/* Set up the data for CSR */
|
||||
DbgBreakPoint();
|
||||
@@ -46,12 +47,11 @@ CsrSetPriorityClass(HANDLE hProcess,
|
||||
SetPriorityClass->PriorityClass = *PriorityClass;
|
||||
|
||||
/* Call it */
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
Status = CsrClientCallServer(&ApiMessage,
|
||||
NULL,
|
||||
CSR_MAKE_OPCODE(CsrpSetPriorityClass,
|
||||
CSR_SRV_SERVER),
|
||||
CSR_CREATE_API_NUMBER(CSRSRV_SERVERDLL_INDEX, CsrpSetPriorityClass),
|
||||
sizeof(CSR_SET_PRIORITY_CLASS));
|
||||
|
||||
|
||||
/* Return what we got, if requested */
|
||||
if (*PriorityClass) *PriorityClass = SetPriorityClass->PriorityClass;
|
||||
|
||||
@@ -64,23 +64,22 @@ CsrSetPriorityClass(HANDLE hProcess,
|
||||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrIdentifyAlertableThread (VOID)
|
||||
CsrIdentifyAlertableThread(VOID)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CSR_API_MESSAGE2 ApiMessage; /* <- Remove the "2" when CSR is commited */
|
||||
CSR_API_MESSAGE ApiMessage;
|
||||
PCSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
|
||||
|
||||
|
||||
/* Set up the data for CSR */
|
||||
DbgBreakPoint();
|
||||
IdentifyAlertableThread = &ApiMessage.IdentifyAlertableThread;
|
||||
IdentifyAlertableThread = &ApiMessage.Data.IdentifyAlertableThread;
|
||||
IdentifyAlertableThread->Cid = NtCurrentTeb()->ClientId;
|
||||
|
||||
/* Call it */
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
Status = CsrClientCallServer(&ApiMessage,
|
||||
NULL,
|
||||
CSR_MAKE_OPCODE(CsrpIdentifyAlertable,
|
||||
CSR_SRV_SERVER),
|
||||
sizeof(CSR_SET_PRIORITY_CLASS));
|
||||
CSR_CREATE_API_NUMBER(CSRSRV_SERVERDLL_INDEX, CsrpIdentifyAlertable),
|
||||
sizeof(CSR_IDENTIFY_ALTERTABLE_THREAD));
|
||||
|
||||
/* Return to caller */
|
||||
return Status;
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: lib/ntdll/csr/capture.c
|
||||
* FILE: dll/ntdll/csr/capture.c
|
||||
* PURPOSE: Routines for probing and capturing CSR API Messages
|
||||
* PROGRAMMER: Alex Ionescu ([email protected])
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include <ntdll.h>
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
/* GLOBALS ********************************************************************/
|
||||
|
||||
extern HANDLE CsrPortHeap;
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
@@ -82,34 +83,38 @@ CsrProbeForWrite(IN PVOID Address,
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
PVOID
|
||||
PCSR_CAPTURE_BUFFER
|
||||
NTAPI
|
||||
CsrAllocateCaptureBuffer(ULONG ArgumentCount,
|
||||
ULONG BufferSize)
|
||||
CsrAllocateCaptureBuffer(IN ULONG ArgumentCount,
|
||||
IN ULONG BufferSize)
|
||||
{
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
|
||||
/* Validate size */
|
||||
if (BufferSize >= MAXLONG) return NULL;
|
||||
|
||||
/* Add the size of the header and for each pointer to the pointers */
|
||||
BufferSize += sizeof(CSR_CAPTURE_BUFFER) + (ArgumentCount * sizeof(PVOID));
|
||||
/* Add the size of the header and for each offset to the pointers */
|
||||
BufferSize += FIELD_OFFSET(CSR_CAPTURE_BUFFER, PointerOffsetsArray) +
|
||||
(ArgumentCount * sizeof(ULONG_PTR));
|
||||
|
||||
/* Align it to a 4-byte boundary */
|
||||
BufferSize = (BufferSize + 3) & ~3;
|
||||
|
||||
/* Allocate memory from the port heap */
|
||||
CaptureBuffer = RtlAllocateHeap(CsrPortHeap, 0, BufferSize);
|
||||
CaptureBuffer = RtlAllocateHeap(CsrPortHeap, HEAP_ZERO_MEMORY, BufferSize);
|
||||
if (CaptureBuffer == NULL) return NULL;
|
||||
|
||||
/* Initialize the header */
|
||||
CaptureBuffer->Size = BufferSize;
|
||||
CaptureBuffer->PointerCount = 0;
|
||||
|
||||
/* Initialize all the pointers */
|
||||
RtlZeroMemory(CaptureBuffer->PointerArray,
|
||||
/* Initialize all the offsets */
|
||||
RtlZeroMemory(CaptureBuffer->PointerOffsetsArray,
|
||||
ArgumentCount * sizeof(ULONG_PTR));
|
||||
|
||||
/* Point the start of the free buffer */
|
||||
CaptureBuffer->BufferEnd = (ULONG_PTR)CaptureBuffer->PointerArray +
|
||||
ArgumentCount * sizeof(ULONG_PTR);
|
||||
/* Point to the start of the free buffer */
|
||||
CaptureBuffer->BufferEnd = (PVOID)((ULONG_PTR)CaptureBuffer->PointerOffsetsArray +
|
||||
ArgumentCount * sizeof(ULONG_PTR));
|
||||
|
||||
/* Return the address of the buffer */
|
||||
return CaptureBuffer;
|
||||
@@ -120,20 +125,19 @@ CsrAllocateCaptureBuffer(ULONG ArgumentCount,
|
||||
*/
|
||||
ULONG
|
||||
NTAPI
|
||||
CsrAllocateMessagePointer(PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
ULONG MessageLength,
|
||||
PVOID *CaptureData)
|
||||
CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN ULONG MessageLength,
|
||||
OUT PVOID *CapturedData)
|
||||
{
|
||||
/* If there's no data, our job is easy. */
|
||||
if (MessageLength == 0)
|
||||
{
|
||||
*CaptureData = NULL;
|
||||
CaptureData = NULL;
|
||||
*CapturedData = NULL;
|
||||
CapturedData = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Set the capture data at our current available buffer */
|
||||
*CaptureData = (PVOID)CaptureBuffer->BufferEnd;
|
||||
*CapturedData = CaptureBuffer->BufferEnd;
|
||||
|
||||
/* Validate the size */
|
||||
if (MessageLength >= MAXLONG) return 0;
|
||||
@@ -142,14 +146,11 @@ CsrAllocateMessagePointer(PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
MessageLength = (MessageLength + 3) & ~3;
|
||||
|
||||
/* Move our available buffer beyond this space */
|
||||
CaptureBuffer->BufferEnd += MessageLength;
|
||||
CaptureBuffer->BufferEnd = (PVOID)((ULONG_PTR)CaptureBuffer->BufferEnd + MessageLength);
|
||||
}
|
||||
|
||||
/* Write down this pointer in the array */
|
||||
CaptureBuffer->PointerArray[CaptureBuffer->PointerCount] = (ULONG_PTR)CaptureData;
|
||||
|
||||
/* Increase the pointer count */
|
||||
CaptureBuffer->PointerCount++;
|
||||
/* Write down this pointer in the array and increase the count */
|
||||
CaptureBuffer->PointerOffsetsArray[CaptureBuffer->PointerCount++] = (ULONG_PTR)CapturedData;
|
||||
|
||||
/* Return the aligned length */
|
||||
return MessageLength;
|
||||
@@ -160,19 +161,19 @@ CsrAllocateMessagePointer(PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageBuffer(PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
PVOID MessageString,
|
||||
ULONG StringLength,
|
||||
PVOID *CapturedData)
|
||||
CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN PVOID MessageBuffer OPTIONAL,
|
||||
IN ULONG MessageLength,
|
||||
OUT PVOID *CapturedData)
|
||||
{
|
||||
/* Simply allocate a message pointer in the buffer */
|
||||
CsrAllocateMessagePointer(CaptureBuffer, StringLength, CapturedData);
|
||||
CsrAllocateMessagePointer(CaptureBuffer, MessageLength, CapturedData);
|
||||
|
||||
/* Check if there was any data */
|
||||
if (!MessageString || !StringLength) return;
|
||||
if (!MessageBuffer || !MessageLength) return;
|
||||
|
||||
/* Copy the data into the buffer */
|
||||
RtlMoveMemory(*CapturedData, MessageString, StringLength);
|
||||
RtlMoveMemory(*CapturedData, MessageBuffer, MessageLength);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -180,14 +181,14 @@ CsrCaptureMessageBuffer(PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrFreeCaptureBuffer(PCSR_CAPTURE_BUFFER CaptureBuffer)
|
||||
CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer)
|
||||
{
|
||||
/* Free it from the heap */
|
||||
RtlFreeHeap(CsrPortHeap, 0, CaptureBuffer);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
* @unimplemented
|
||||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
@@ -206,8 +207,8 @@ CsrCaptureMessageMultiUnicodeStringsInPlace(IN PCSR_CAPTURE_BUFFER *CaptureBuffe
|
||||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageString(PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
LPSTR String,
|
||||
CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN LPSTR String OPTIONAL,
|
||||
IN ULONG StringLength,
|
||||
IN ULONG MaximumLength,
|
||||
OUT PANSI_STRING CapturedString)
|
||||
@@ -256,14 +257,14 @@ CsrCaptureMessageString(PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
*/
|
||||
PLARGE_INTEGER
|
||||
NTAPI
|
||||
CsrCaptureTimeout(LONG Milliseconds,
|
||||
PLARGE_INTEGER Timeout)
|
||||
CsrCaptureTimeout(IN ULONG Milliseconds,
|
||||
OUT PLARGE_INTEGER Timeout)
|
||||
{
|
||||
/* Validate the time */
|
||||
if (Milliseconds == -1) return NULL;
|
||||
|
||||
/* Convert to relative ticks */
|
||||
Timeout->QuadPart = Milliseconds * -100000;
|
||||
Timeout->QuadPart = Int32x32To64(Milliseconds, -10000);
|
||||
return Timeout;
|
||||
}
|
||||
|
||||
|
||||
+104
-102
@@ -1,18 +1,18 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: lib/ntdll/csr/connect.c
|
||||
* FILE: dll/ntdll/csr/connect.c
|
||||
* PURPOSE: Routines for connecting and calling CSR
|
||||
* PROGRAMMER: Alex Ionescu ([email protected])
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include <ntdll.h>
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
/* GLOBALS ********************************************************************/
|
||||
|
||||
HANDLE CsrApiPort;
|
||||
HANDLE CsrProcessId;
|
||||
@@ -27,9 +27,8 @@ typedef NTSTATUS
|
||||
PCSR_SERVER_API_ROUTINE CsrServerApiRoutine;
|
||||
|
||||
#define UNICODE_PATH_SEP L"\\"
|
||||
#define CSR_PORT_NAME L"ApiPort"
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
@@ -46,28 +45,27 @@ CsrGetProcessId(VOID)
|
||||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientCallServer(PCSR_API_MESSAGE ApiMessage,
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL,
|
||||
CSR_API_NUMBER ApiNumber,
|
||||
ULONG RequestLength)
|
||||
CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL,
|
||||
IN CSR_API_NUMBER ApiNumber,
|
||||
IN ULONG DataLength)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG PointerCount;
|
||||
PULONG_PTR Pointers;
|
||||
ULONG_PTR CurrentPointer;
|
||||
DPRINT("CsrClientCallServer\n");
|
||||
PULONG_PTR OffsetPointer;
|
||||
|
||||
/* Fill out the Port Message Header */
|
||||
ApiMessage->Header.u2.ZeroInit = 0;
|
||||
ApiMessage->Header.u1.s1.DataLength = RequestLength - sizeof(PORT_MESSAGE);
|
||||
ApiMessage->Header.u1.s1.TotalLength = RequestLength;
|
||||
ApiMessage->Header.u1.s1.TotalLength =
|
||||
FIELD_OFFSET(CSR_API_MESSAGE, Data) + DataLength;
|
||||
ApiMessage->Header.u1.s1.DataLength =
|
||||
ApiMessage->Header.u1.s1.TotalLength - sizeof(PORT_MESSAGE);
|
||||
|
||||
/* Fill out the CSR Header */
|
||||
ApiMessage->Type = ApiNumber;
|
||||
//ApiMessage->Opcode = ApiNumber; <- Activate with new CSR
|
||||
ApiMessage->ApiNumber = ApiNumber;
|
||||
ApiMessage->CsrCaptureData = NULL;
|
||||
|
||||
DPRINT("API: %lx, u1.s1.DataLength: %x, u1.s1.TotalLength: %x\n",
|
||||
DPRINT("API: %lx, u1.s1.DataLength: %x, u1.s1.TotalLength: %x\n",
|
||||
ApiNumber,
|
||||
ApiMessage->Header.u1.s1.DataLength,
|
||||
ApiMessage->Header.u1.s1.TotalLength);
|
||||
@@ -75,35 +73,34 @@ CsrClientCallServer(PCSR_API_MESSAGE ApiMessage,
|
||||
/* Check if we are already inside a CSR Server */
|
||||
if (!InsideCsrProcess)
|
||||
{
|
||||
/* Check if we got a a Capture Buffer */
|
||||
/* Check if we got a Capture Buffer */
|
||||
if (CaptureBuffer)
|
||||
{
|
||||
/* We have to convert from our local view to the remote view */
|
||||
ApiMessage->CsrCaptureData = (PVOID)((ULONG_PTR)CaptureBuffer +
|
||||
CsrPortMemoryDelta);
|
||||
/*
|
||||
* We have to convert from our local (client) view
|
||||
* to the remote (server) view.
|
||||
*/
|
||||
ApiMessage->CsrCaptureData = (PCSR_CAPTURE_BUFFER)
|
||||
((ULONG_PTR)CaptureBuffer + CsrPortMemoryDelta);
|
||||
|
||||
/* Lock the buffer */
|
||||
CaptureBuffer->BufferEnd = 0;
|
||||
/* Lock the buffer. */
|
||||
CaptureBuffer->BufferEnd = NULL;
|
||||
|
||||
/* Get the pointer information */
|
||||
PointerCount = CaptureBuffer->PointerCount;
|
||||
Pointers = CaptureBuffer->PointerArray;
|
||||
|
||||
/* Loop through every pointer and convert it */
|
||||
DPRINT("PointerCount: %lx\n", PointerCount);
|
||||
/*
|
||||
* Each client pointer inside the CSR message is converted into
|
||||
* a server pointer, and each pointer to these message pointers
|
||||
* is converted into an offset.
|
||||
*/
|
||||
PointerCount = CaptureBuffer->PointerCount;
|
||||
OffsetPointer = CaptureBuffer->PointerOffsetsArray;
|
||||
while (PointerCount--)
|
||||
{
|
||||
/* Get this pointer and check if it's valid */
|
||||
DPRINT("Array Address: %p. This pointer: %p. Data: %lx\n",
|
||||
&Pointers, Pointers, *Pointers);
|
||||
if ((CurrentPointer = *Pointers++))
|
||||
if (*OffsetPointer != 0)
|
||||
{
|
||||
/* Update it */
|
||||
DPRINT("CurrentPointer: %lx.\n", *(PULONG_PTR)CurrentPointer);
|
||||
*(PULONG_PTR)CurrentPointer += CsrPortMemoryDelta;
|
||||
Pointers[-1] = CurrentPointer - (ULONG_PTR)ApiMessage;
|
||||
DPRINT("CurrentPointer: %lx.\n", *(PULONG_PTR)CurrentPointer);
|
||||
*(PULONG_PTR)*OffsetPointer += CsrPortMemoryDelta;
|
||||
*OffsetPointer -= (ULONG_PTR)ApiMessage;
|
||||
}
|
||||
++OffsetPointer;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,53 +109,57 @@ CsrClientCallServer(PCSR_API_MESSAGE ApiMessage,
|
||||
&ApiMessage->Header,
|
||||
&ApiMessage->Header);
|
||||
|
||||
/* Check if we got a a Capture Buffer */
|
||||
/* Check if we got a Capture Buffer */
|
||||
if (CaptureBuffer)
|
||||
{
|
||||
/* We have to convert from the remote view to our remote view */
|
||||
DPRINT("Reconverting CaptureBuffer\n");
|
||||
ApiMessage->CsrCaptureData = (PVOID)((ULONG_PTR)
|
||||
ApiMessage->CsrCaptureData -
|
||||
CsrPortMemoryDelta);
|
||||
/*
|
||||
* We have to convert back from the remote (server) view
|
||||
* to our local (client) view.
|
||||
*/
|
||||
ApiMessage->CsrCaptureData = (PCSR_CAPTURE_BUFFER)
|
||||
((ULONG_PTR)ApiMessage->CsrCaptureData - CsrPortMemoryDelta);
|
||||
|
||||
/* Get the pointer information */
|
||||
PointerCount = CaptureBuffer->PointerCount;
|
||||
Pointers = CaptureBuffer->PointerArray;
|
||||
|
||||
/* Loop through every pointer and convert it */
|
||||
/*
|
||||
* Convert back the offsets into pointers to CSR message
|
||||
* pointers, and convert back these message server pointers
|
||||
* into client pointers.
|
||||
*/
|
||||
PointerCount = CaptureBuffer->PointerCount;
|
||||
OffsetPointer = CaptureBuffer->PointerOffsetsArray;
|
||||
while (PointerCount--)
|
||||
{
|
||||
/* Get this pointer and check if it's valid */
|
||||
if ((CurrentPointer = *Pointers++))
|
||||
if (*OffsetPointer != 0)
|
||||
{
|
||||
/* Update it */
|
||||
CurrentPointer += (ULONG_PTR)ApiMessage;
|
||||
Pointers[-1] = CurrentPointer;
|
||||
*(PULONG_PTR)CurrentPointer -= CsrPortMemoryDelta;
|
||||
*OffsetPointer += (ULONG_PTR)ApiMessage;
|
||||
*(PULONG_PTR)*OffsetPointer -= CsrPortMemoryDelta;
|
||||
}
|
||||
++OffsetPointer;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check for success */
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* We failed. Overwrite the return value with the failure */
|
||||
/* We failed. Overwrite the return value with the failure. */
|
||||
DPRINT1("LPC Failed: %lx\n", Status);
|
||||
ApiMessage->Status = Status;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* This is a server-to-server call. Save our CID and do a direct call */
|
||||
/* This is a server-to-server call. Save our CID and do a direct call. */
|
||||
DPRINT1("Next gen server-to-server call\n");
|
||||
|
||||
/* We check this equality inside CsrValidateMessageBuffer */
|
||||
ApiMessage->Header.ClientId = NtCurrentTeb()->ClientId;
|
||||
|
||||
Status = CsrServerApiRoutine(&ApiMessage->Header,
|
||||
&ApiMessage->Header);
|
||||
|
||||
|
||||
/* Check for success */
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* We failed. Overwrite the return value with the failure */
|
||||
/* We failed. Overwrite the return value with the failure. */
|
||||
ApiMessage->Status = Status;
|
||||
}
|
||||
}
|
||||
@@ -170,12 +171,12 @@ CsrClientCallServer(PCSR_API_MESSAGE ApiMessage,
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrConnectToServer(IN PWSTR ObjectDirectory)
|
||||
CsrpConnectToServer(IN PWSTR ObjectDirectory)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG PortNameLength;
|
||||
UNICODE_STRING PortName;
|
||||
LARGE_INTEGER CsrSectionViewSize;
|
||||
NTSTATUS Status;
|
||||
HANDLE CsrSectionHandle;
|
||||
PORT_VIEW LpcWrite;
|
||||
REMOTE_PORT_VIEW LpcRead;
|
||||
@@ -202,7 +203,7 @@ CsrConnectToServer(IN PWSTR ObjectDirectory)
|
||||
PortName.MaximumLength = PortNameLength;
|
||||
|
||||
/* Allocate a buffer for it */
|
||||
PortName.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), 0, PortNameLength);
|
||||
PortName.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, PortNameLength);
|
||||
if (PortName.Buffer == NULL)
|
||||
{
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
@@ -220,7 +221,7 @@ CsrConnectToServer(IN PWSTR ObjectDirectory)
|
||||
NULL,
|
||||
&CsrSectionViewSize,
|
||||
PAGE_READWRITE,
|
||||
SEC_COMMIT,
|
||||
SEC_RESERVE,
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
@@ -249,16 +250,16 @@ CsrConnectToServer(IN PWSTR ObjectDirectory)
|
||||
|
||||
/* Create a SID for us */
|
||||
Status = RtlAllocateAndInitializeSid(&NtSidAuthority,
|
||||
1,
|
||||
SECURITY_LOCAL_SYSTEM_RID,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&SystemSid);
|
||||
1,
|
||||
SECURITY_LOCAL_SYSTEM_RID,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&SystemSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Failure */
|
||||
@@ -277,6 +278,7 @@ CsrConnectToServer(IN PWSTR ObjectDirectory)
|
||||
NULL,
|
||||
&ConnectionInfo,
|
||||
&ConnectionInfoLength);
|
||||
RtlFreeSid(SystemSid);
|
||||
NtClose(CsrSectionHandle);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
@@ -306,6 +308,8 @@ CsrConnectToServer(IN PWSTR ObjectDirectory)
|
||||
0);
|
||||
if (CsrPortHeap == NULL)
|
||||
{
|
||||
/* Failure */
|
||||
DPRINT1("Couldn't create heap for CSR port\n");
|
||||
NtClose(CsrApiPort);
|
||||
CsrApiPort = NULL;
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
@@ -320,24 +324,24 @@ CsrConnectToServer(IN PWSTR ObjectDirectory)
|
||||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientConnectToServer(PWSTR ObjectDirectory,
|
||||
ULONG ServerId,
|
||||
PVOID ConnectionInfo,
|
||||
PULONG ConnectionInfoSize,
|
||||
PBOOLEAN ServerToServerCall)
|
||||
CsrClientConnectToServer(IN PWSTR ObjectDirectory,
|
||||
IN ULONG ServerId,
|
||||
IN PVOID ConnectionInfo,
|
||||
IN OUT PULONG ConnectionInfoSize,
|
||||
OUT PBOOLEAN ServerToServerCall)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PIMAGE_NT_HEADERS NtHeader;
|
||||
UNICODE_STRING CsrSrvName;
|
||||
HANDLE hCsrSrv;
|
||||
ANSI_STRING CsrServerRoutineName;
|
||||
CSR_API_MESSAGE ApiMessage;
|
||||
PCSR_CLIENT_CONNECT ClientConnect = &ApiMessage.Data.CsrClientConnect;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
CSR_API_MESSAGE RosApiMessage;
|
||||
CSR_API_MESSAGE2 ApiMessage;
|
||||
PCSR_CLIENT_CONNECT ClientConnect = &ApiMessage.ClientConnect;
|
||||
|
||||
DPRINT("CsrClientConnectToServer: %lx %p\n", ServerId, ConnectionInfo);
|
||||
|
||||
/* Validate the Connection Info */
|
||||
DPRINT("CsrClientConnectToServer: %lx %p\n", ServerId, ConnectionInfo);
|
||||
if (ConnectionInfo && (!ConnectionInfoSize || !*ConnectionInfoSize))
|
||||
{
|
||||
DPRINT1("Connection info given, but no length\n");
|
||||
@@ -400,7 +404,8 @@ CsrClientConnectToServer(PWSTR ObjectDirectory,
|
||||
if (!CsrApiPort)
|
||||
{
|
||||
/* No, set it up now */
|
||||
if (!NT_SUCCESS(Status = CsrConnectToServer(ObjectDirectory)))
|
||||
Status = CsrpConnectToServer(ObjectDirectory);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Failed */
|
||||
DPRINT1("Failure to connect to CSR\n");
|
||||
@@ -413,38 +418,34 @@ CsrClientConnectToServer(PWSTR ObjectDirectory,
|
||||
ClientConnect->ConnectionInfoSize = *ConnectionInfoSize;
|
||||
|
||||
/* Setup a buffer for the connection info */
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(1,
|
||||
ClientConnect->ConnectionInfoSize);
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(1, ClientConnect->ConnectionInfoSize);
|
||||
if (CaptureBuffer == NULL)
|
||||
{
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
/* Allocate a pointer for the connection info*/
|
||||
CsrAllocateMessagePointer(CaptureBuffer,
|
||||
ClientConnect->ConnectionInfoSize,
|
||||
&ClientConnect->ConnectionInfo);
|
||||
|
||||
/* Copy the data into the buffer */
|
||||
RtlMoveMemory(ClientConnect->ConnectionInfo,
|
||||
ConnectionInfo,
|
||||
ClientConnect->ConnectionInfoSize);
|
||||
/* Capture the connection info data */
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
ConnectionInfo,
|
||||
ClientConnect->ConnectionInfoSize,
|
||||
&ClientConnect->ConnectionInfo);
|
||||
|
||||
/* Return the allocated length */
|
||||
*ConnectionInfoSize = ClientConnect->ConnectionInfoSize;
|
||||
|
||||
/* Call CSR */
|
||||
#if 0
|
||||
Status = CsrClientCallServer(&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_MAKE_OPCODE(CsrpClientConnect,
|
||||
CSR_SRV_DLL),
|
||||
CSR_CREATE_API_NUMBER(CSRSRV_SERVERDLL_INDEX, CsrpClientConnect),
|
||||
sizeof(CSR_CLIENT_CONNECT));
|
||||
#endif
|
||||
Status = CsrClientCallServer(&RosApiMessage,
|
||||
NULL,
|
||||
MAKE_CSR_API(CONNECT_PROCESS, CSR_NATIVE),
|
||||
sizeof(CSR_API_MESSAGE));
|
||||
|
||||
/* Copy the updated connection info data back into the user buffer */
|
||||
RtlMoveMemory(ConnectionInfo,
|
||||
ClientConnect->ConnectionInfo,
|
||||
*ConnectionInfoSize);
|
||||
|
||||
/* Free the capture buffer */
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -455,6 +456,7 @@ CsrClientConnectToServer(PWSTR ObjectDirectory,
|
||||
/* Let the caller know if this was server to server */
|
||||
DPRINT("Status was: 0x%lx. Are we in server: 0x%x\n", Status, InsideCsrProcess);
|
||||
if (ServerToServerCall) *ServerToServerCall = InsideCsrProcess;
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,8 +44,9 @@
|
||||
/* Internal NTDLL */
|
||||
#include "ntdllp.h"
|
||||
|
||||
/* CSRSS Header */
|
||||
#include <csrss/csrss.h>
|
||||
/* CSRSS Headers */
|
||||
#include <csr/csrsrv.h>
|
||||
#include <csr/csr.h>
|
||||
|
||||
/* PSEH */
|
||||
#include <pseh/pseh2.h>
|
||||
|
||||
@@ -143,11 +143,11 @@ LdrpFreeUnicodeString(PUNICODE_STRING String);
|
||||
/* FIXME: Cleanup this mess */
|
||||
typedef NTSTATUS (NTAPI *PEPFUNC)(PPEB);
|
||||
NTSTATUS LdrMapSections(HANDLE ProcessHandle,
|
||||
PVOID ImageBase,
|
||||
HANDLE SectionHandle,
|
||||
PIMAGE_NT_HEADERS NTHeaders);
|
||||
PVOID ImageBase,
|
||||
HANDLE SectionHandle,
|
||||
PIMAGE_NT_HEADERS NTHeaders);
|
||||
NTSTATUS LdrMapNTDllForProcess(HANDLE ProcessHandle,
|
||||
PHANDLE NTDllSectionHandle);
|
||||
PHANDLE NTDllSectionHandle);
|
||||
ULONG
|
||||
LdrpGetResidentSize(PIMAGE_NT_HEADERS NTHeaders);
|
||||
|
||||
@@ -162,7 +162,5 @@ LdrpLoadImportModule(IN PWSTR DllPath OPTIONAL,
|
||||
VOID
|
||||
NTAPI
|
||||
LdrpFinalizeAndDeallocateDataTableEntry(IN PLDR_DATA_TABLE_ENTRY Entry);
|
||||
|
||||
extern HANDLE WindowsApiPort;
|
||||
|
||||
/* EOF */
|
||||
|
||||
@@ -4,40 +4,45 @@ include_directories(${REACTOS_SOURCE_DIR}/include/reactos/subsys)
|
||||
spec2def(kernel32.dll kernel32.spec ADD_IMPORTLIB)
|
||||
|
||||
list(APPEND SOURCE
|
||||
client/appcache.c
|
||||
client/atom.c
|
||||
client/compname.c
|
||||
client/appcache.c
|
||||
client/atom.c
|
||||
client/compname.c
|
||||
client/debugger.c
|
||||
client/dosdev.c
|
||||
client/dllmain.c
|
||||
client/environ.c
|
||||
client/dllmain.c
|
||||
client/environ.c
|
||||
client/except.c
|
||||
client/fiber.c
|
||||
client/handle.c
|
||||
client/handle.c
|
||||
client/heapmem.c
|
||||
client/job.c
|
||||
client/loader.c
|
||||
client/path.c
|
||||
client/perfcnt.c
|
||||
client/power.c
|
||||
client/loader.c
|
||||
client/path.c
|
||||
client/perfcnt.c
|
||||
client/power.c
|
||||
client/proc.c
|
||||
client/resntfy.c
|
||||
client/resntfy.c
|
||||
client/session.c
|
||||
client/synch.c
|
||||
client/sysinfo.c
|
||||
client/time.c
|
||||
client/timerqueue.c
|
||||
client/toolhelp.c
|
||||
client/utils.c
|
||||
client/sysinfo.c
|
||||
client/time.c
|
||||
client/timerqueue.c
|
||||
client/toolhelp.c
|
||||
client/utils.c
|
||||
client/thread.c
|
||||
client/vdm.c
|
||||
client/version.c
|
||||
client/vdm.c
|
||||
client/version.c
|
||||
client/virtmem.c
|
||||
client/vista.c
|
||||
client/console/alias.c
|
||||
client/console/console.c
|
||||
client/console/history.c
|
||||
client/console/init.c
|
||||
client/console/readwrite.c
|
||||
client/console/vista.c
|
||||
client/file/backup.c
|
||||
client/file/cnotify.c
|
||||
client/file/copy.c
|
||||
client/file/console.c
|
||||
client/file/create.c
|
||||
client/file/delete.c
|
||||
client/file/deviceio.c
|
||||
|
||||
@@ -0,0 +1,598 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: dll/win32/kernel32/client/console/alias.c
|
||||
* PURPOSE: Win32 Console Client Alias support functions
|
||||
* PROGRAMMERS: David Welch ([email protected]) ([email protected])
|
||||
* Christoph von Wittich ([email protected])
|
||||
* Johannes Anderwald ([email protected])
|
||||
*/
|
||||
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include <k32.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddConsoleAliasW(LPCWSTR lpSource,
|
||||
LPCWSTR lpTarget,
|
||||
LPCWSTR lpExeName)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_ADDGETALIAS ConsoleAliasRequest = &ApiMessage.Data.ConsoleAliasRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
ULONG CapturedStrings;
|
||||
|
||||
DPRINT("AddConsoleAliasW enterd with lpSource %S lpTarget %S lpExeName %S\n", lpSource, lpTarget, lpExeName);
|
||||
|
||||
/* Determine the needed sizes */
|
||||
ConsoleAliasRequest->SourceLength = (wcslen(lpSource ) + 1) * sizeof(WCHAR);
|
||||
ConsoleAliasRequest->ExeLength = (wcslen(lpExeName) + 1) * sizeof(WCHAR);
|
||||
CapturedStrings = 2;
|
||||
|
||||
if (lpTarget) /* The target can be optional */
|
||||
{
|
||||
ConsoleAliasRequest->TargetLength = (wcslen(lpTarget) + 1) * sizeof(WCHAR);
|
||||
CapturedStrings++;
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleAliasRequest->TargetLength = 0;
|
||||
}
|
||||
|
||||
/* Allocate a Capture Buffer */
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(CapturedStrings,
|
||||
ConsoleAliasRequest->SourceLength +
|
||||
ConsoleAliasRequest->ExeLength +
|
||||
ConsoleAliasRequest->TargetLength);
|
||||
if (CaptureBuffer == NULL)
|
||||
{
|
||||
DPRINT1("CsrAllocateCaptureBuffer failed!\n");
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Capture the strings */
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
(PVOID)lpSource,
|
||||
ConsoleAliasRequest->SourceLength,
|
||||
(PVOID*)&ConsoleAliasRequest->Source);
|
||||
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
(PVOID)lpExeName,
|
||||
ConsoleAliasRequest->ExeLength,
|
||||
(PVOID*)&ConsoleAliasRequest->Exe);
|
||||
|
||||
if (lpTarget) /* The target can be optional */
|
||||
{
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
(PVOID)lpTarget,
|
||||
ConsoleAliasRequest->TargetLength,
|
||||
(PVOID*)&ConsoleAliasRequest->Target);
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleAliasRequest->Target = NULL;
|
||||
}
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepAddAlias),
|
||||
sizeof(CONSOLE_ADDGETALIAS));
|
||||
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddConsoleAliasA(LPCSTR lpSource,
|
||||
LPCSTR lpTarget,
|
||||
LPCSTR lpExeName)
|
||||
{
|
||||
LPWSTR lpSourceW = NULL;
|
||||
LPWSTR lpTargetW = NULL;
|
||||
LPWSTR lpExeNameW = NULL;
|
||||
BOOL bRetVal;
|
||||
|
||||
if (lpSource)
|
||||
BasepAnsiStringToHeapUnicodeString(lpSource, (LPWSTR*)&lpSourceW);
|
||||
if (lpTarget)
|
||||
BasepAnsiStringToHeapUnicodeString(lpTarget, (LPWSTR*)&lpTargetW);
|
||||
if (lpExeName)
|
||||
BasepAnsiStringToHeapUnicodeString(lpExeName, (LPWSTR*)&lpExeNameW);
|
||||
|
||||
bRetVal = AddConsoleAliasW(lpSourceW, lpTargetW, lpExeNameW);
|
||||
|
||||
/* Clean up */
|
||||
if (lpSourceW)
|
||||
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*)lpSourceW);
|
||||
if (lpTargetW)
|
||||
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*)lpTargetW);
|
||||
if (lpExeNameW)
|
||||
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*)lpExeNameW);
|
||||
|
||||
return bRetVal;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasW(LPWSTR lpSource,
|
||||
LPWSTR lpTargetBuffer,
|
||||
DWORD TargetBufferLength,
|
||||
LPWSTR lpExeName)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_ADDGETALIAS ConsoleAliasRequest = &ApiMessage.Data.ConsoleAliasRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
|
||||
DPRINT("GetConsoleAliasW entered with lpSource %S lpExeName %S\n", lpSource, lpExeName);
|
||||
|
||||
if (lpTargetBuffer == NULL)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Determine the needed sizes */
|
||||
ConsoleAliasRequest->SourceLength = (wcslen(lpSource ) + 1) * sizeof(WCHAR);
|
||||
ConsoleAliasRequest->ExeLength = (wcslen(lpExeName) + 1) * sizeof(WCHAR);
|
||||
|
||||
ConsoleAliasRequest->Target = NULL;
|
||||
ConsoleAliasRequest->TargetLength = TargetBufferLength;
|
||||
|
||||
/* Allocate a Capture Buffer */
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(3, ConsoleAliasRequest->SourceLength +
|
||||
ConsoleAliasRequest->ExeLength +
|
||||
ConsoleAliasRequest->TargetLength);
|
||||
if (!CaptureBuffer)
|
||||
{
|
||||
DPRINT1("CsrAllocateCaptureBuffer failed!\n");
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Capture the strings */
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
(PVOID)lpSource,
|
||||
ConsoleAliasRequest->SourceLength,
|
||||
(PVOID*)&ConsoleAliasRequest->Source);
|
||||
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
(PVOID)lpExeName,
|
||||
ConsoleAliasRequest->ExeLength,
|
||||
(PVOID*)&ConsoleAliasRequest->Exe);
|
||||
|
||||
/* Allocate space for the target buffer */
|
||||
CsrAllocateMessagePointer(CaptureBuffer,
|
||||
ConsoleAliasRequest->TargetLength,
|
||||
(PVOID*)&ConsoleAliasRequest->Target);
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetAlias),
|
||||
sizeof(CONSOLE_ADDGETALIAS));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
BaseSetLastNTError(Status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Copy the returned target string into the user buffer */
|
||||
// wcscpy(lpTargetBuffer, ConsoleAliasRequest->Target);
|
||||
memcpy(lpTargetBuffer,
|
||||
ConsoleAliasRequest->Target,
|
||||
ConsoleAliasRequest->TargetLength);
|
||||
|
||||
/* Release the capture buffer and exit */
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
return ConsoleAliasRequest->TargetLength;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasA(LPSTR lpSource,
|
||||
LPSTR lpTargetBuffer,
|
||||
DWORD TargetBufferLength,
|
||||
LPSTR lpExeName)
|
||||
{
|
||||
LPWSTR lpwSource;
|
||||
LPWSTR lpwExeName;
|
||||
LPWSTR lpwTargetBuffer;
|
||||
UINT dwSourceSize;
|
||||
UINT dwExeNameSize;
|
||||
UINT dwResult;
|
||||
|
||||
DPRINT("GetConsoleAliasA entered\n");
|
||||
|
||||
if (lpTargetBuffer == NULL)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
dwSourceSize = (strlen(lpSource)+1) * sizeof(WCHAR);
|
||||
lpwSource = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSourceSize);
|
||||
if (lpwSource == NULL)
|
||||
{
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return 0;
|
||||
}
|
||||
MultiByteToWideChar(CP_ACP, 0, lpSource, -1, lpwSource, dwSourceSize);
|
||||
|
||||
dwExeNameSize = (strlen(lpExeName)+1) * sizeof(WCHAR);
|
||||
lpwExeName = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwExeNameSize);
|
||||
if (lpwExeName == NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, lpwSource);
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return 0;
|
||||
}
|
||||
MultiByteToWideChar(CP_ACP, 0, lpExeName, -1, lpwExeName, dwExeNameSize);
|
||||
|
||||
lpwTargetBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, TargetBufferLength * sizeof(WCHAR));
|
||||
if (lpwTargetBuffer == NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, lpwSource);
|
||||
HeapFree(GetProcessHeap(), 0, lpwExeName);
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
dwResult = GetConsoleAliasW(lpwSource, lpwTargetBuffer, TargetBufferLength * sizeof(WCHAR), lpwExeName);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, lpwSource);
|
||||
HeapFree(GetProcessHeap(), 0, lpwExeName);
|
||||
|
||||
if (dwResult)
|
||||
dwResult = WideCharToMultiByte(CP_ACP, 0, lpwTargetBuffer, dwResult / sizeof(WCHAR), lpTargetBuffer, TargetBufferLength, NULL, NULL);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, lpwTargetBuffer);
|
||||
|
||||
return dwResult;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasesW(LPWSTR AliasBuffer,
|
||||
DWORD AliasBufferLength,
|
||||
LPWSTR ExeName)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_GETALLALIASES GetAllAliasesRequest = &ApiMessage.Data.GetAllAliasesRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
|
||||
DPRINT("GetConsoleAliasesW entered\n");
|
||||
|
||||
/* Determine the needed sizes */
|
||||
GetAllAliasesRequest->ExeLength = GetConsoleAliasesLengthW(ExeName);
|
||||
if (GetAllAliasesRequest->ExeLength == 0 ||
|
||||
GetAllAliasesRequest->ExeLength > AliasBufferLength)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
GetAllAliasesRequest->AliasesBufferLength = AliasBufferLength;
|
||||
|
||||
/* Allocate a Capture Buffer */
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(2, GetAllAliasesRequest->ExeLength +
|
||||
GetAllAliasesRequest->AliasesBufferLength);
|
||||
if (!CaptureBuffer)
|
||||
{
|
||||
DPRINT1("CsrAllocateCaptureBuffer failed!\n");
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Capture the exe name and allocate space for the aliases buffer */
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
(PVOID)ExeName,
|
||||
GetAllAliasesRequest->ExeLength,
|
||||
(PVOID*)&GetAllAliasesRequest->ExeName);
|
||||
|
||||
CsrAllocateMessagePointer(CaptureBuffer,
|
||||
GetAllAliasesRequest->AliasesBufferLength,
|
||||
(PVOID*)&GetAllAliasesRequest->AliasesBuffer);
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetAliases),
|
||||
sizeof(CONSOLE_GETALLALIASES));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Copy the returned aliases string into the user buffer */
|
||||
// wcscpy(AliasBuffer, GetAllAliasesRequest->AliasesBuffer);
|
||||
memcpy(AliasBuffer,
|
||||
GetAllAliasesRequest->AliasesBuffer,
|
||||
GetAllAliasesRequest->AliasesBufferLength);
|
||||
|
||||
/* Release the capture buffer and exit */
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
return GetAllAliasesRequest->AliasesBufferLength; // / sizeof(WCHAR); (original code)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasesA(LPSTR AliasBuffer,
|
||||
DWORD AliasBufferLength,
|
||||
LPSTR ExeName)
|
||||
{
|
||||
DWORD dwRetVal = 0;
|
||||
LPWSTR lpwExeName = NULL;
|
||||
LPWSTR lpwAliasBuffer;
|
||||
|
||||
DPRINT("GetConsoleAliasesA entered\n");
|
||||
|
||||
if (ExeName)
|
||||
BasepAnsiStringToHeapUnicodeString(ExeName, (LPWSTR*)&lpwExeName);
|
||||
|
||||
lpwAliasBuffer = HeapAlloc(GetProcessHeap(), 0, AliasBufferLength * sizeof(WCHAR));
|
||||
|
||||
dwRetVal = GetConsoleAliasesW(lpwAliasBuffer, AliasBufferLength * sizeof(WCHAR), lpwExeName);
|
||||
|
||||
if (lpwExeName)
|
||||
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*)lpwExeName);
|
||||
|
||||
if (dwRetVal)
|
||||
dwRetVal = WideCharToMultiByte(CP_ACP, 0, lpwAliasBuffer, dwRetVal /**/ / sizeof(WCHAR) /**/, AliasBuffer, AliasBufferLength, NULL, NULL);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, lpwAliasBuffer);
|
||||
return dwRetVal;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasesLengthW(LPWSTR lpExeName)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_GETALLALIASESLENGTH GetAllAliasesLengthRequest = &ApiMessage.Data.GetAllAliasesLengthRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
|
||||
DPRINT("GetConsoleAliasesLengthW entered\n");
|
||||
|
||||
if (lpExeName == NULL)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
GetAllAliasesLengthRequest->ExeLength = (wcslen(lpExeName) + 1) * sizeof(WCHAR);
|
||||
GetAllAliasesLengthRequest->Length = 0;
|
||||
|
||||
/* Allocate a Capture Buffer */
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(1, GetAllAliasesLengthRequest->ExeLength);
|
||||
if (!CaptureBuffer)
|
||||
{
|
||||
DPRINT1("CsrAllocateCaptureBuffer failed!\n");
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Capture the exe name */
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
(PVOID)lpExeName,
|
||||
GetAllAliasesLengthRequest->ExeLength,
|
||||
(PVOID)&GetAllAliasesLengthRequest->ExeName);
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetAliasesLength),
|
||||
sizeof(CONSOLE_GETALLALIASESLENGTH));
|
||||
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return GetAllAliasesLengthRequest->Length;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasesLengthA(LPSTR lpExeName)
|
||||
{
|
||||
DWORD dwRetVal = 0;
|
||||
LPWSTR lpExeNameW = NULL;
|
||||
|
||||
if (lpExeName)
|
||||
BasepAnsiStringToHeapUnicodeString(lpExeName, (LPWSTR*)&lpExeNameW);
|
||||
|
||||
dwRetVal = GetConsoleAliasesLengthW(lpExeNameW);
|
||||
if (dwRetVal)
|
||||
dwRetVal /= sizeof(WCHAR);
|
||||
|
||||
/* Clean up */
|
||||
if (lpExeNameW)
|
||||
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*)lpExeNameW);
|
||||
|
||||
return dwRetVal;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasExesW(LPWSTR lpExeNameBuffer,
|
||||
DWORD ExeNameBufferLength)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_GETALIASESEXES GetAliasesExesRequest = &ApiMessage.Data.GetAliasesExesRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
|
||||
DPRINT("GetConsoleAliasExesW entered\n");
|
||||
|
||||
/* Allocate a Capture Buffer */
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(1, ExeNameBufferLength);
|
||||
if (!CaptureBuffer)
|
||||
{
|
||||
DPRINT1("CsrAllocateCaptureBuffer failed!\n");
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
GetAliasesExesRequest->Length = ExeNameBufferLength;
|
||||
|
||||
/* Allocate space for the exe name buffer */
|
||||
CsrAllocateMessagePointer(CaptureBuffer,
|
||||
ExeNameBufferLength,
|
||||
(PVOID*)&GetAliasesExesRequest->ExeNames);
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetAliasExes),
|
||||
sizeof(CONSOLE_GETALIASESEXES));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
BaseSetLastNTError(Status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Copy the returned target string into the user buffer */
|
||||
memcpy(lpExeNameBuffer,
|
||||
GetAliasesExesRequest->ExeNames,
|
||||
GetAliasesExesRequest->Length);
|
||||
|
||||
/* Release the capture buffer and exit */
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
return GetAliasesExesRequest->Length;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasExesA(LPSTR lpExeNameBuffer,
|
||||
DWORD ExeNameBufferLength)
|
||||
{
|
||||
LPWSTR lpwExeNameBuffer;
|
||||
DWORD dwResult;
|
||||
|
||||
DPRINT("GetConsoleAliasExesA entered\n");
|
||||
|
||||
lpwExeNameBuffer = HeapAlloc(GetProcessHeap(), 0, ExeNameBufferLength * sizeof(WCHAR));
|
||||
|
||||
dwResult = GetConsoleAliasExesW(lpwExeNameBuffer, ExeNameBufferLength * sizeof(WCHAR));
|
||||
|
||||
if (dwResult)
|
||||
dwResult = WideCharToMultiByte(CP_ACP, 0, lpwExeNameBuffer, dwResult / sizeof(WCHAR), lpExeNameBuffer, ExeNameBufferLength, NULL, NULL);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, lpwExeNameBuffer);
|
||||
return dwResult;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasExesLengthW(VOID)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_GETALIASESEXESLENGTH GetAliasesExesLengthRequest = &ApiMessage.Data.GetAliasesExesLengthRequest;
|
||||
|
||||
DPRINT("GetConsoleAliasExesLengthW entered\n");
|
||||
|
||||
GetAliasesExesLengthRequest->Length = 0;
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetAliasExesLength),
|
||||
sizeof(CONSOLE_GETALIASESEXESLENGTH));
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return GetAliasesExesLengthRequest->Length;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasExesLengthA(VOID)
|
||||
{
|
||||
DWORD dwLength;
|
||||
|
||||
DPRINT("GetConsoleAliasExesLengthA entered\n");
|
||||
|
||||
dwLength = GetConsoleAliasExesLengthW();
|
||||
|
||||
if (dwLength)
|
||||
dwLength /= sizeof(WCHAR);
|
||||
|
||||
return dwLength;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,352 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: dll/win32/kernel32/client/console/history.c
|
||||
* PURPOSE: Win32 Console Client history functions
|
||||
* PROGRAMMERS: Jeffrey Morlan
|
||||
*/
|
||||
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include <k32.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
|
||||
/* PRIVATE FUNCTIONS **********************************************************/
|
||||
|
||||
/* Get the size needed to copy a string to a capture buffer, including alignment */
|
||||
static ULONG
|
||||
IntStringSize(LPCVOID String,
|
||||
BOOL Unicode)
|
||||
{
|
||||
ULONG Size = (Unicode ? wcslen(String) : strlen(String)) * sizeof(WCHAR);
|
||||
return (Size + 3) & -4;
|
||||
}
|
||||
|
||||
|
||||
/* Copy a string to a capture buffer */
|
||||
static VOID
|
||||
IntCaptureMessageString(PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
LPCVOID String,
|
||||
BOOL Unicode,
|
||||
PUNICODE_STRING RequestString)
|
||||
{
|
||||
ULONG Size;
|
||||
if (Unicode)
|
||||
{
|
||||
Size = wcslen(String) * sizeof(WCHAR);
|
||||
CsrCaptureMessageBuffer(CaptureBuffer, (PVOID)String, Size, (PVOID *)&RequestString->Buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
Size = strlen(String);
|
||||
CsrAllocateMessagePointer(CaptureBuffer, Size * sizeof(WCHAR), (PVOID *)&RequestString->Buffer);
|
||||
Size = MultiByteToWideChar(CP_ACP, 0, String, Size, RequestString->Buffer, Size * sizeof(WCHAR))
|
||||
* sizeof(WCHAR);
|
||||
}
|
||||
RequestString->Length = RequestString->MaximumLength = Size;
|
||||
}
|
||||
|
||||
|
||||
static BOOL
|
||||
IntExpungeConsoleCommandHistory(LPCVOID lpExeName, BOOL bUnicode)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest = &ApiMessage.Data.ExpungeCommandHistoryRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
|
||||
if (lpExeName == NULL || !(bUnicode ? *(PWCHAR)lpExeName : *(PCHAR)lpExeName))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(1, IntStringSize(lpExeName, bUnicode));
|
||||
if (!CaptureBuffer)
|
||||
{
|
||||
DPRINT1("CsrAllocateCaptureBuffer failed!\n");
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
IntCaptureMessageString(CaptureBuffer, lpExeName, bUnicode,
|
||||
&ExpungeCommandHistoryRequest->ExeName);
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepExpungeCommandHistory),
|
||||
sizeof(CONSOLE_EXPUNGECOMMANDHISTORY));
|
||||
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static DWORD
|
||||
IntGetConsoleCommandHistory(LPVOID lpHistory, DWORD cbHistory, LPCVOID lpExeName, BOOL bUnicode)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest = &ApiMessage.Data.GetCommandHistoryRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
DWORD HistoryLength = cbHistory * (bUnicode ? 1 : sizeof(WCHAR));
|
||||
|
||||
if (lpExeName == NULL || !(bUnicode ? *(PWCHAR)lpExeName : *(PCHAR)lpExeName))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(2, IntStringSize(lpExeName, bUnicode) +
|
||||
HistoryLength);
|
||||
if (!CaptureBuffer)
|
||||
{
|
||||
DPRINT1("CsrAllocateCaptureBuffer failed!\n");
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
IntCaptureMessageString(CaptureBuffer, lpExeName, bUnicode,
|
||||
&GetCommandHistoryRequest->ExeName);
|
||||
GetCommandHistoryRequest->Length = HistoryLength;
|
||||
CsrAllocateMessagePointer(CaptureBuffer, HistoryLength,
|
||||
(PVOID*)&GetCommandHistoryRequest->History);
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetCommandHistory),
|
||||
sizeof(CONSOLE_GETCOMMANDHISTORY));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
BaseSetLastNTError(Status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (bUnicode)
|
||||
{
|
||||
memcpy(lpHistory,
|
||||
GetCommandHistoryRequest->History,
|
||||
GetCommandHistoryRequest->Length);
|
||||
}
|
||||
else
|
||||
{
|
||||
WideCharToMultiByte(CP_ACP, 0,
|
||||
GetCommandHistoryRequest->History,
|
||||
GetCommandHistoryRequest->Length / sizeof(WCHAR),
|
||||
lpHistory,
|
||||
cbHistory,
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
return GetCommandHistoryRequest->Length;
|
||||
}
|
||||
|
||||
|
||||
static DWORD
|
||||
IntGetConsoleCommandHistoryLength(LPCVOID lpExeName, BOOL bUnicode)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest = &ApiMessage.Data.GetCommandHistoryLengthRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
|
||||
if (lpExeName == NULL || !(bUnicode ? *(PWCHAR)lpExeName : *(PCHAR)lpExeName))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(1, IntStringSize(lpExeName, bUnicode));
|
||||
if (!CaptureBuffer)
|
||||
{
|
||||
DPRINT1("CsrAllocateCaptureBuffer failed!\n");
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
IntCaptureMessageString(CaptureBuffer, lpExeName, bUnicode,
|
||||
&GetCommandHistoryLengthRequest->ExeName);
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetCommandHistoryLength),
|
||||
sizeof(CONSOLE_GETCOMMANDHISTORYLENGTH));
|
||||
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return GetCommandHistoryLengthRequest->Length;
|
||||
}
|
||||
|
||||
|
||||
static BOOL
|
||||
IntSetConsoleNumberOfCommands(DWORD dwNumCommands,
|
||||
LPCVOID lpExeName,
|
||||
BOOL bUnicode)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest = &ApiMessage.Data.SetHistoryNumberCommandsRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
|
||||
if (lpExeName == NULL || !(bUnicode ? *(PWCHAR)lpExeName : *(PCHAR)lpExeName))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CaptureBuffer = CsrAllocateCaptureBuffer(1, IntStringSize(lpExeName, bUnicode));
|
||||
if (!CaptureBuffer)
|
||||
{
|
||||
DPRINT1("CsrAllocateCaptureBuffer failed!\n");
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
IntCaptureMessageString(CaptureBuffer, lpExeName, bUnicode,
|
||||
&SetHistoryNumberCommandsRequest->ExeName);
|
||||
SetHistoryNumberCommandsRequest->NumCommands = dwNumCommands;
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepSetNumberOfCommands),
|
||||
sizeof(CONSOLE_SETHISTORYNUMBERCOMMANDS));
|
||||
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
/*
|
||||
* @implemented (Undocumented)
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
ExpungeConsoleCommandHistoryW(LPCWSTR lpExeName)
|
||||
{
|
||||
return IntExpungeConsoleCommandHistory(lpExeName, TRUE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented (Undocumented)
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
ExpungeConsoleCommandHistoryA(LPCSTR lpExeName)
|
||||
{
|
||||
return IntExpungeConsoleCommandHistory(lpExeName, FALSE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented (Undocumented)
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleCommandHistoryW(LPWSTR lpHistory,
|
||||
DWORD cbHistory,
|
||||
LPCWSTR lpExeName)
|
||||
{
|
||||
return IntGetConsoleCommandHistory(lpHistory, cbHistory, lpExeName, TRUE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented (Undocumented)
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleCommandHistoryA(LPSTR lpHistory,
|
||||
DWORD cbHistory,
|
||||
LPCSTR lpExeName)
|
||||
{
|
||||
return IntGetConsoleCommandHistory(lpHistory, cbHistory, lpExeName, FALSE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented (Undocumented)
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleCommandHistoryLengthW(LPCWSTR lpExeName)
|
||||
{
|
||||
return IntGetConsoleCommandHistoryLength(lpExeName, TRUE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented (Undocumented)
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleCommandHistoryLengthA(LPCSTR lpExeName)
|
||||
{
|
||||
return IntGetConsoleCommandHistoryLength(lpExeName, FALSE) / sizeof(WCHAR);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented (Undocumented)
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetConsoleNumberOfCommandsW(DWORD dwNumCommands,
|
||||
LPCSTR lpExeName)
|
||||
{
|
||||
return IntSetConsoleNumberOfCommands(dwNumCommands, lpExeName, TRUE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented (Undocumented)
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetConsoleNumberOfCommandsA(DWORD dwNumCommands,
|
||||
LPCWSTR lpExeName)
|
||||
{
|
||||
return IntSetConsoleNumberOfCommands(dwNumCommands, lpExeName, FALSE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetConsoleCommandHistoryMode(IN DWORD dwMode)
|
||||
{
|
||||
STUB;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,330 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: dll/win32/kernel32/client/console/init.c
|
||||
* PURPOSE: Console API Client Initialization
|
||||
* PROGRAMMERS: Alex Ionescu ([email protected])
|
||||
* Aleksey Bragin ([email protected])
|
||||
* Hermes Belusca-Maito ([email protected])
|
||||
*/
|
||||
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include <k32.h>
|
||||
|
||||
// For Control Panel Applet
|
||||
#include <cpl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
|
||||
/* GLOBALS ********************************************************************/
|
||||
|
||||
RTL_CRITICAL_SECTION ConsoleLock;
|
||||
BOOL ConsoleInitialized = FALSE;
|
||||
|
||||
extern HANDLE InputWaitHandle;
|
||||
|
||||
static HMODULE ConsoleLibrary = NULL;
|
||||
static BOOL AlreadyDisplayingProps = FALSE;
|
||||
|
||||
#define WIN_OBJ_DIR L"\\Windows"
|
||||
#define SESSION_DIR L"\\Sessions"
|
||||
|
||||
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
PropDialogHandler(IN LPVOID lpThreadParameter)
|
||||
{
|
||||
// NOTE: lpThreadParameter corresponds to the client shared section handle.
|
||||
|
||||
APPLET_PROC CPLFunc;
|
||||
|
||||
/*
|
||||
* Do not launch more than once the console property dialog applet,
|
||||
* or (albeit less probable), if we are not initialized.
|
||||
*/
|
||||
if (!ConsoleInitialized || AlreadyDisplayingProps)
|
||||
{
|
||||
/* Close the associated client shared section handle if needed */
|
||||
if (lpThreadParameter)
|
||||
{
|
||||
CloseHandle((HANDLE)lpThreadParameter);
|
||||
}
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
AlreadyDisplayingProps = TRUE;
|
||||
|
||||
/* Load the Control Applet if needed */
|
||||
if (ConsoleLibrary == NULL)
|
||||
{
|
||||
WCHAR szBuffer[MAX_PATH];
|
||||
|
||||
GetWindowsDirectoryW(szBuffer, MAX_PATH);
|
||||
wcscat(szBuffer, L"\\system32\\console.dll");
|
||||
ConsoleLibrary = LoadLibraryW(szBuffer);
|
||||
|
||||
if (ConsoleLibrary == NULL)
|
||||
{
|
||||
DPRINT1("Failed to load console.dll");
|
||||
AlreadyDisplayingProps = FALSE;
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Load its main function */
|
||||
CPLFunc = (APPLET_PROC)GetProcAddress(ConsoleLibrary, "CPlApplet");
|
||||
if (CPLFunc == NULL)
|
||||
{
|
||||
DPRINT("Error: Console.dll misses CPlApplet export\n");
|
||||
AlreadyDisplayingProps = FALSE;
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
if (CPLFunc(NULL, CPL_INIT, 0, 0) == FALSE)
|
||||
{
|
||||
DPRINT("Error: failed to initialize console.dll\n");
|
||||
AlreadyDisplayingProps = FALSE;
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
if (CPLFunc(NULL, CPL_GETCOUNT, 0, 0) != 1)
|
||||
{
|
||||
DPRINT("Error: console.dll returned unexpected CPL count\n");
|
||||
AlreadyDisplayingProps = FALSE;
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
CPLFunc(NULL, CPL_DBLCLK, (LPARAM)lpThreadParameter, 0);
|
||||
CPLFunc(NULL, CPL_EXIT , 0, 0);
|
||||
|
||||
AlreadyDisplayingProps = FALSE;
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
InitConsoleInfo(IN OUT PCONSOLE_START_INFO ConsoleStartInfo)
|
||||
{
|
||||
STARTUPINFOW si;
|
||||
|
||||
GetStartupInfoW(&si);
|
||||
|
||||
ConsoleStartInfo->dwStartupFlags = si.dwFlags;
|
||||
if (si.dwFlags & STARTF_USEFILLATTRIBUTE)
|
||||
{
|
||||
ConsoleStartInfo->FillAttribute = si.dwFillAttribute;
|
||||
}
|
||||
if (si.dwFlags & STARTF_USECOUNTCHARS)
|
||||
{
|
||||
ConsoleStartInfo->ScreenBufferSize.X = (SHORT)(si.dwXCountChars);
|
||||
ConsoleStartInfo->ScreenBufferSize.Y = (SHORT)(si.dwYCountChars);
|
||||
}
|
||||
if (si.dwFlags & STARTF_USESHOWWINDOW)
|
||||
{
|
||||
ConsoleStartInfo->ShowWindow = si.wShowWindow;
|
||||
}
|
||||
if (si.dwFlags & STARTF_USEPOSITION)
|
||||
{
|
||||
ConsoleStartInfo->ConsoleWindowOrigin.x = (LONG)(si.dwX);
|
||||
ConsoleStartInfo->ConsoleWindowOrigin.y = (LONG)(si.dwY);
|
||||
}
|
||||
if (si.dwFlags & STARTF_USESIZE)
|
||||
{
|
||||
ConsoleStartInfo->ConsoleWindowSize.cx = (LONG)(si.dwXSize);
|
||||
ConsoleStartInfo->ConsoleWindowSize.cy = (LONG)(si.dwYSize);
|
||||
}
|
||||
/*
|
||||
if (si.dwFlags & STARTF_RUNFULLSCREEN)
|
||||
{
|
||||
}
|
||||
*/
|
||||
|
||||
if (si.lpTitle)
|
||||
{
|
||||
wcsncpy(ConsoleStartInfo->ConsoleTitle, si.lpTitle, MAX_PATH + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleStartInfo->ConsoleTitle[0] = L'\0';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
BasepInitConsole(VOID)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PRTL_USER_PROCESS_PARAMETERS Parameters = NtCurrentPeb()->ProcessParameters;
|
||||
WCHAR SessionDir[256];
|
||||
ULONG SessionId = NtCurrentPeb()->SessionId;
|
||||
BOOLEAN InServer;
|
||||
|
||||
CONSOLE_CONNECTION_INFO ConnectInfo;
|
||||
ULONG ConnectInfoSize = sizeof(ConnectInfo);
|
||||
|
||||
DPRINT("BasepInitConsole for : %wZ\n", &Parameters->ImagePathName);
|
||||
DPRINT("Our current console handles are: %lx, %lx, %lx %lx\n",
|
||||
Parameters->ConsoleHandle, Parameters->StandardInput,
|
||||
Parameters->StandardOutput, Parameters->StandardError);
|
||||
|
||||
/* Initialize our global console DLL lock */
|
||||
Status = RtlInitializeCriticalSection(&ConsoleLock);
|
||||
if (!NT_SUCCESS(Status)) return FALSE;
|
||||
ConsoleInitialized = TRUE;
|
||||
|
||||
/* Do nothing if this isn't a console app... */
|
||||
if (RtlImageNtHeader(GetModuleHandle(NULL))->OptionalHeader.Subsystem !=
|
||||
IMAGE_SUBSYSTEM_WINDOWS_CUI)
|
||||
{
|
||||
DPRINT("Image is not a console application\n");
|
||||
Parameters->ConsoleHandle = NULL;
|
||||
ConnectInfo.ConsoleNeeded = FALSE; // ConsoleNeeded is used for knowing whether or not this is a CUI app.
|
||||
|
||||
ConnectInfo.ConsoleStartInfo.ConsoleTitle[0] = L'\0';
|
||||
ConnectInfo.ConsoleStartInfo.AppPath[0] = L'\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
SIZE_T Length = 0;
|
||||
LPCWSTR ExeName;
|
||||
|
||||
InitConsoleInfo(&ConnectInfo.ConsoleStartInfo);
|
||||
|
||||
Length = min(sizeof(ConnectInfo.ConsoleStartInfo.AppPath) / sizeof(ConnectInfo.ConsoleStartInfo.AppPath[0]) - 1,
|
||||
Parameters->ImagePathName.Length / sizeof(WCHAR));
|
||||
wcsncpy(ConnectInfo.ConsoleStartInfo.AppPath, Parameters->ImagePathName.Buffer, Length);
|
||||
ConnectInfo.ConsoleStartInfo.AppPath[Length] = L'\0';
|
||||
|
||||
/* Initialize Input EXE name */
|
||||
ExeName = wcsrchr(Parameters->ImagePathName.Buffer, L'\\');
|
||||
if (ExeName) SetConsoleInputExeNameW(ExeName + 1);
|
||||
|
||||
/* Assume one is needed */
|
||||
ConnectInfo.ConsoleNeeded = TRUE;
|
||||
|
||||
/* Handle the special flags given to us by BasePushProcessParameters */
|
||||
if (Parameters->ConsoleHandle == HANDLE_DETACHED_PROCESS)
|
||||
{
|
||||
/* No console to create */
|
||||
DPRINT("No console to create\n");
|
||||
Parameters->ConsoleHandle = NULL;
|
||||
ConnectInfo.ConsoleNeeded = FALSE;
|
||||
}
|
||||
else if (Parameters->ConsoleHandle == HANDLE_CREATE_NEW_CONSOLE)
|
||||
{
|
||||
/* We'll get the real one soon */
|
||||
DPRINT("Creating new console\n");
|
||||
Parameters->ConsoleHandle = NULL;
|
||||
}
|
||||
else if (Parameters->ConsoleHandle == HANDLE_CREATE_NO_WINDOW)
|
||||
{
|
||||
/* We'll get the real one soon */
|
||||
DPRINT("Creating new invisible console\n");
|
||||
Parameters->ConsoleHandle = NULL;
|
||||
ConnectInfo.ConsoleStartInfo.ShowWindow = SW_HIDE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Parameters->ConsoleHandle == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
Parameters->ConsoleHandle = NULL;
|
||||
}
|
||||
DPRINT("Using existing console: %x\n", Parameters->ConsoleHandle);
|
||||
}
|
||||
}
|
||||
|
||||
/* Now use the proper console handle */
|
||||
ConnectInfo.Console = Parameters->ConsoleHandle;
|
||||
|
||||
/* Initialize the Console Ctrl Handler */
|
||||
InitConsoleCtrlHandling();
|
||||
ConnectInfo.CtrlDispatcher = ConsoleControlDispatcher;
|
||||
|
||||
/* Initialize the Property Dialog Handler */
|
||||
ConnectInfo.PropDispatcher = PropDialogHandler;
|
||||
|
||||
/* Setup the right Object Directory path */
|
||||
if (!SessionId)
|
||||
{
|
||||
/* Use the raw path */
|
||||
wcscpy(SessionDir, WIN_OBJ_DIR);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Use the session path */
|
||||
swprintf(SessionDir,
|
||||
L"%ws\\%ld%ws",
|
||||
SESSION_DIR,
|
||||
SessionId,
|
||||
WIN_OBJ_DIR);
|
||||
}
|
||||
|
||||
/* Connect to the Console Server */
|
||||
DPRINT("Connecting to the Console Server in BasepInitConsole...\n");
|
||||
Status = CsrClientConnectToServer(SessionDir,
|
||||
CONSRV_SERVERDLL_INDEX,
|
||||
&ConnectInfo,
|
||||
&ConnectInfoSize,
|
||||
&InServer);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to connect to the Console Server (Status %lx)\n", Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Nothing to do for server-to-server */
|
||||
if (InServer) return TRUE;
|
||||
|
||||
/* Nothing to do if not a console app */
|
||||
if (!ConnectInfo.ConsoleNeeded) return TRUE;
|
||||
|
||||
/* We got the handles, let's set them */
|
||||
if ((Parameters->ConsoleHandle = ConnectInfo.Console))
|
||||
{
|
||||
/* If we already had some, don't use the new ones */
|
||||
if (!Parameters->StandardInput)
|
||||
{
|
||||
Parameters->StandardInput = ConnectInfo.InputHandle;
|
||||
}
|
||||
if (!Parameters->StandardOutput)
|
||||
{
|
||||
Parameters->StandardOutput = ConnectInfo.OutputHandle;
|
||||
}
|
||||
if (!Parameters->StandardError)
|
||||
{
|
||||
Parameters->StandardError = ConnectInfo.ErrorHandle;
|
||||
}
|
||||
}
|
||||
|
||||
InputWaitHandle = ConnectInfo.InputWaitHandle;
|
||||
|
||||
DPRINT("Console setup: %lx, %lx, %lx, %lx\n",
|
||||
Parameters->ConsoleHandle,
|
||||
Parameters->StandardInput,
|
||||
Parameters->StandardOutput,
|
||||
Parameters->StandardError);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
BasepUninitConsole(VOID)
|
||||
{
|
||||
/* Delete our critical section if we were initialized */
|
||||
if (ConsoleInitialized == TRUE)
|
||||
{
|
||||
if (ConsoleLibrary) FreeLibrary(ConsoleLibrary);
|
||||
|
||||
ConsoleInitialized = FALSE;
|
||||
RtlDeleteCriticalSection(&ConsoleLock);
|
||||
}
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,177 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* PURPOSE: Vista functions
|
||||
* PROGRAMMERS: Thomas Weidenmueller ([email protected])
|
||||
* Hermes Belusca-Maito ([email protected])
|
||||
*/
|
||||
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include <k32.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
|
||||
/* PUBLIC FUNCTIONS ***********************************************************/
|
||||
|
||||
#if _WIN32_WINNT >= 0x600
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetConsoleHistoryInfo
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_GETSETHISTORYINFO HistoryInfoRequest = &ApiMessage.Data.HistoryInfoRequest;
|
||||
|
||||
if (lpConsoleHistoryInfo->cbSize != sizeof(CONSOLE_HISTORY_INFO))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetHistory),
|
||||
sizeof(CONSOLE_GETSETHISTORYINFO));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
lpConsoleHistoryInfo->HistoryBufferSize = HistoryInfoRequest->HistoryBufferSize;
|
||||
lpConsoleHistoryInfo->NumberOfHistoryBuffers = HistoryInfoRequest->NumberOfHistoryBuffers;
|
||||
lpConsoleHistoryInfo->dwFlags = HistoryInfoRequest->dwFlags;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* SetConsoleHistoryInfo
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
CONSOLE_API_MESSAGE ApiMessage;
|
||||
PCONSOLE_GETSETHISTORYINFO HistoryInfoRequest = &ApiMessage.Data.HistoryInfoRequest;
|
||||
|
||||
if (lpConsoleHistoryInfo->cbSize != sizeof(CONSOLE_HISTORY_INFO))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
HistoryInfoRequest->HistoryBufferSize = lpConsoleHistoryInfo->HistoryBufferSize;
|
||||
HistoryInfoRequest->NumberOfHistoryBuffers = lpConsoleHistoryInfo->NumberOfHistoryBuffers;
|
||||
HistoryInfoRequest->dwFlags = lpConsoleHistoryInfo->dwFlags;
|
||||
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepSetHistory),
|
||||
sizeof(CONSOLE_GETSETHISTORYINFO));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetConsoleOriginalTitleW
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleOriginalTitleW(OUT LPWSTR lpConsoleTitle,
|
||||
IN DWORD nSize)
|
||||
{
|
||||
DPRINT1("GetConsoleOriginalTitleW(0x%p, 0x%x) UNIMPLEMENTED!\n", lpConsoleTitle, nSize);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetConsoleOriginalTitleA
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleOriginalTitleA(OUT LPSTR lpConsoleTitle,
|
||||
IN DWORD nSize)
|
||||
{
|
||||
DPRINT1("GetConsoleOriginalTitleA(0x%p, 0x%x) UNIMPLEMENTED!\n", lpConsoleTitle, nSize);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetConsoleScreenBufferInfoEx
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
||||
OUT PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
|
||||
{
|
||||
DPRINT1("GetConsoleScreenBufferInfoEx(0x%p, 0x%p) UNIMPLEMENTED!\n", hConsoleOutput, lpConsoleScreenBufferInfoEx);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* SetConsoleScreenBufferInfoEx
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
||||
IN PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
|
||||
{
|
||||
DPRINT1("SetConsoleScreenBufferInfoEx(0x%p, 0x%p) UNIMPLEMENTED!\n", hConsoleOutput, lpConsoleScreenBufferInfoEx);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetCurrentConsoleFontEx
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetCurrentConsoleFontEx(IN HANDLE hConsoleOutput,
|
||||
IN BOOL bMaximumWindow,
|
||||
OUT PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx)
|
||||
{
|
||||
DPRINT1("GetCurrentConsoleFontEx(0x%p, 0x%x, 0x%p) UNIMPLEMENTED!\n", hConsoleOutput, bMaximumWindow, lpConsoleCurrentFontEx);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
@@ -3,10 +3,8 @@
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: lib/kernel32/misc/dllmain.c
|
||||
* PURPOSE: Initialization
|
||||
* PROGRAMMER: Ariadne ( [email protected])
|
||||
* PROGRAMMERS: Ariadne ([email protected])
|
||||
* Aleksey Bragin ([email protected])
|
||||
* UPDATE HISTORY:
|
||||
* Created 01/11/98
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
@@ -29,196 +27,19 @@ HMODULE hCurrentModule = NULL;
|
||||
HMODULE kernel32_handle = NULL;
|
||||
PPEB Peb;
|
||||
ULONG SessionId;
|
||||
BOOL ConsoleInitialized = FALSE;
|
||||
static BOOL DllInitialized = FALSE;
|
||||
|
||||
BOOL WINAPI
|
||||
DllMain(HANDLE hInst,
|
||||
DWORD dwReason,
|
||||
LPVOID lpReserved);
|
||||
|
||||
/* Critical section for various kernel32 data structures */
|
||||
RTL_CRITICAL_SECTION BaseDllDirectoryLock;
|
||||
RTL_CRITICAL_SECTION ConsoleLock;
|
||||
|
||||
extern BOOL WINAPI DefaultConsoleCtrlHandler(DWORD Event);
|
||||
extern __declspec(noreturn) VOID CALLBACK ConsoleControlDispatcher(DWORD CodeAndFlag);
|
||||
extern PHANDLER_ROUTINE InitialHandler[1];
|
||||
extern PHANDLER_ROUTINE* CtrlHandlers;
|
||||
extern ULONG NrCtrlHandlers;
|
||||
extern ULONG NrAllocatedHandlers;
|
||||
extern BOOL FASTCALL NlsInit(VOID);
|
||||
extern VOID FASTCALL NlsUninit(VOID);
|
||||
BOOLEAN InWindows = FALSE;
|
||||
|
||||
#define WIN_OBJ_DIR L"\\Windows"
|
||||
#define SESSION_DIR L"\\Sessions"
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
BasepInitConsole(VOID)
|
||||
{
|
||||
CSR_API_MESSAGE Request;
|
||||
ULONG CsrRequest;
|
||||
NTSTATUS Status;
|
||||
BOOLEAN NotConsole = FALSE;
|
||||
PRTL_USER_PROCESS_PARAMETERS Parameters = NtCurrentPeb()->ProcessParameters;
|
||||
LPCWSTR ExeName;
|
||||
STARTUPINFO si;
|
||||
WCHAR SessionDir[256];
|
||||
ULONG SessionId = NtCurrentPeb()->SessionId;
|
||||
BOOLEAN InServer;
|
||||
|
||||
WCHAR lpTest[MAX_PATH];
|
||||
GetModuleFileNameW(NULL, lpTest, MAX_PATH);
|
||||
DPRINT("BasepInitConsole for : %S\n", lpTest);
|
||||
DPRINT("Our current console handles are: %lx, %lx, %lx %lx\n",
|
||||
Parameters->ConsoleHandle, Parameters->StandardInput,
|
||||
Parameters->StandardOutput, Parameters->StandardError);
|
||||
|
||||
/* We have nothing to do if this isn't a console app... */
|
||||
if (RtlImageNtHeader(GetModuleHandle(NULL))->OptionalHeader.Subsystem !=
|
||||
IMAGE_SUBSYSTEM_WINDOWS_CUI)
|
||||
{
|
||||
DPRINT("Image is not a console application\n");
|
||||
Parameters->ConsoleHandle = NULL;
|
||||
Request.Data.AllocConsoleRequest.ConsoleNeeded = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Assume one is needed */
|
||||
GetStartupInfo(&si);
|
||||
Request.Data.AllocConsoleRequest.ConsoleNeeded = TRUE;
|
||||
Request.Data.AllocConsoleRequest.ShowCmd = si.wShowWindow;
|
||||
|
||||
/* Handle the special flags given to us by BasepInitializeEnvironment */
|
||||
if (Parameters->ConsoleHandle == HANDLE_DETACHED_PROCESS)
|
||||
{
|
||||
/* No console to create */
|
||||
DPRINT("No console to create\n");
|
||||
Parameters->ConsoleHandle = NULL;
|
||||
Request.Data.AllocConsoleRequest.ConsoleNeeded = FALSE;
|
||||
}
|
||||
else if (Parameters->ConsoleHandle == HANDLE_CREATE_NEW_CONSOLE)
|
||||
{
|
||||
/* We'll get the real one soon */
|
||||
DPRINT("Creating new console\n");
|
||||
Parameters->ConsoleHandle = NULL;
|
||||
}
|
||||
else if (Parameters->ConsoleHandle == HANDLE_CREATE_NO_WINDOW)
|
||||
{
|
||||
/* We'll get the real one soon */
|
||||
DPRINT("Creating new invisible console\n");
|
||||
Parameters->ConsoleHandle = NULL;
|
||||
Request.Data.AllocConsoleRequest.ShowCmd = SW_HIDE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Parameters->ConsoleHandle == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
Parameters->ConsoleHandle = 0;
|
||||
}
|
||||
DPRINT("Using existing console: %x\n", Parameters->ConsoleHandle);
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize Console Ctrl Handler and input EXE name */
|
||||
ConsoleInitialized = TRUE;
|
||||
RtlInitializeCriticalSection(&ConsoleLock);
|
||||
NrAllocatedHandlers = 1;
|
||||
NrCtrlHandlers = 1;
|
||||
CtrlHandlers = InitialHandler;
|
||||
CtrlHandlers[0] = DefaultConsoleCtrlHandler;
|
||||
|
||||
ExeName = wcsrchr(Parameters->ImagePathName.Buffer, L'\\');
|
||||
if (ExeName)
|
||||
SetConsoleInputExeNameW(ExeName + 1);
|
||||
|
||||
/* Now use the proper console handle */
|
||||
Request.Data.AllocConsoleRequest.Console = Parameters->ConsoleHandle;
|
||||
|
||||
/* Setup the right Object Directory path */
|
||||
if (!SessionId)
|
||||
{
|
||||
/* Use the raw path */
|
||||
wcscpy(SessionDir, WIN_OBJ_DIR);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Use the session path */
|
||||
swprintf(SessionDir,
|
||||
L"%ws\\%ld%ws",
|
||||
SESSION_DIR,
|
||||
SessionId,
|
||||
WIN_OBJ_DIR);
|
||||
}
|
||||
|
||||
/* Connect to the base server */
|
||||
DPRINT("Connecting to CSR...\n");
|
||||
Status = CsrClientConnectToServer(SessionDir,
|
||||
2,
|
||||
NULL,
|
||||
NULL,
|
||||
&InServer);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to connect to CSR (Status %lx)\n", Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Nothing to do for server-to-server */
|
||||
if (InServer) return TRUE;
|
||||
|
||||
/*
|
||||
* Normally, we should be connecting to the Console CSR Server...
|
||||
* but we don't have one yet, so we will instead simply send a create
|
||||
* console message to the Base Server. When we finally have a Console
|
||||
* Server, this code should be changed to send connection data instead.
|
||||
*/
|
||||
CsrRequest = MAKE_CSR_API(ALLOC_CONSOLE, CSR_CONSOLE);
|
||||
Request.Data.AllocConsoleRequest.CtrlDispatcher = ConsoleControlDispatcher;
|
||||
Status = CsrClientCallServer(&Request,
|
||||
NULL,
|
||||
CsrRequest,
|
||||
sizeof(CSR_API_MESSAGE));
|
||||
if(!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
|
||||
{
|
||||
DPRINT1("CSR Failed to give us a console\n");
|
||||
/* We're lying here, so at least the process can load... */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Nothing to do if not a console app */
|
||||
if (NotConsole) return TRUE;
|
||||
|
||||
/* We got the handles, let's set them */
|
||||
if ((Parameters->ConsoleHandle = Request.Data.AllocConsoleRequest.Console))
|
||||
{
|
||||
/* If we already had some, don't use the new ones */
|
||||
if (!Parameters->StandardInput)
|
||||
{
|
||||
Parameters->StandardInput = Request.Data.AllocConsoleRequest.InputHandle;
|
||||
}
|
||||
if (!Parameters->StandardOutput)
|
||||
{
|
||||
Parameters->StandardOutput = Request.Data.AllocConsoleRequest.OutputHandle;
|
||||
}
|
||||
if (!Parameters->StandardError)
|
||||
{
|
||||
Parameters->StandardError = Request.Data.AllocConsoleRequest.OutputHandle;
|
||||
}
|
||||
}
|
||||
|
||||
DPRINT("Console setup: %lx, %lx, %lx, %lx\n",
|
||||
Parameters->ConsoleHandle,
|
||||
Parameters->StandardInput,
|
||||
Parameters->StandardOutput,
|
||||
Parameters->StandardError);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
BaseCreateThreadPoolThread(IN PTHREAD_START_ROUTINE Function,
|
||||
@@ -257,6 +78,7 @@ BaseExitThreadPoolThread(IN NTSTATUS ExitStatus)
|
||||
{
|
||||
/* Exit the thread */
|
||||
ExitThread(ExitStatus);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
BOOL
|
||||
@@ -282,131 +104,132 @@ DllMain(HANDLE hDll,
|
||||
switch (dwReason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
|
||||
/* Set no filter intially */
|
||||
GlobalTopLevelExceptionFilter = RtlEncodePointer(NULL);
|
||||
|
||||
/* Enable the Rtl thread pool and timer queue to use proper Win32 thread */
|
||||
RtlSetThreadPoolStartFunc(BaseCreateThreadPoolThread, BaseExitThreadPoolThread);
|
||||
|
||||
/* Don't bother us for each thread */
|
||||
LdrDisableThreadCalloutsForDll((PVOID)hDll);
|
||||
|
||||
/* Initialize default path to NULL */
|
||||
RtlInitUnicodeString(&BaseDefaultPath, NULL);
|
||||
|
||||
/* Setup the right Object Directory path */
|
||||
if (!SessionId)
|
||||
{
|
||||
/* Use the raw path */
|
||||
wcscpy(SessionDir, WIN_OBJ_DIR);
|
||||
/* Set no filter intially */
|
||||
GlobalTopLevelExceptionFilter = RtlEncodePointer(NULL);
|
||||
|
||||
/* Enable the Rtl thread pool and timer queue to use proper Win32 thread */
|
||||
RtlSetThreadPoolStartFunc(BaseCreateThreadPoolThread, BaseExitThreadPoolThread);
|
||||
|
||||
/* Don't bother us for each thread */
|
||||
LdrDisableThreadCalloutsForDll((PVOID)hDll);
|
||||
|
||||
/* Initialize default path to NULL */
|
||||
RtlInitUnicodeString(&BaseDefaultPath, NULL);
|
||||
|
||||
/* Setup the right Object Directory path */
|
||||
if (!SessionId)
|
||||
{
|
||||
/* Use the raw path */
|
||||
wcscpy(SessionDir, WIN_OBJ_DIR);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Use the session path */
|
||||
swprintf(SessionDir,
|
||||
L"%ws\\%ld%ws",
|
||||
SESSION_DIR,
|
||||
SessionId,
|
||||
WIN_OBJ_DIR);
|
||||
}
|
||||
|
||||
/* Connect to the base server */
|
||||
Status = CsrClientConnectToServer(SessionDir,
|
||||
BASESRV_SERVERDLL_INDEX,
|
||||
&Dummy,
|
||||
&DummySize,
|
||||
&BaseRunningInServerProcess);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to connect to CSR (Status %lx)\n", Status);
|
||||
NtTerminateProcess(NtCurrentProcess(), Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Get the server data */
|
||||
ASSERT(Peb->ReadOnlyStaticServerData);
|
||||
BaseStaticServerData = Peb->ReadOnlyStaticServerData[BASESRV_SERVERDLL_INDEX];
|
||||
ASSERT(BaseStaticServerData);
|
||||
|
||||
/* Check if we are running a CSR Server */
|
||||
if (!BaseRunningInServerProcess)
|
||||
{
|
||||
/* Set the termination port for the thread */
|
||||
DPRINT("Creating new thread for CSR\n");
|
||||
CsrNewThread();
|
||||
}
|
||||
|
||||
/* Initialize heap handle table */
|
||||
BaseDllInitializeMemoryManager();
|
||||
|
||||
/* Set HMODULE for our DLL */
|
||||
kernel32_handle = hCurrentModule = hDll;
|
||||
|
||||
/* Set the directories */
|
||||
BaseWindowsDirectory = BaseStaticServerData->WindowsDirectory;
|
||||
BaseWindowsSystemDirectory = BaseStaticServerData->WindowsSystemDirectory;
|
||||
|
||||
/* Construct the default path (using the static buffer) */
|
||||
_snwprintf(BaseDefaultPathBuffer,
|
||||
sizeof(BaseDefaultPathBuffer) / sizeof(WCHAR),
|
||||
L".;%wZ;%wZ\\system;%wZ;",
|
||||
&BaseWindowsSystemDirectory,
|
||||
&BaseWindowsDirectory,
|
||||
&BaseWindowsDirectory);
|
||||
|
||||
BaseDefaultPath.Buffer = BaseDefaultPathBuffer;
|
||||
BaseDefaultPath.Length = wcslen(BaseDefaultPathBuffer) * sizeof(WCHAR);
|
||||
BaseDefaultPath.MaximumLength = sizeof(BaseDefaultPathBuffer);
|
||||
|
||||
/* Use remaining part of the default path buffer for the append path */
|
||||
BaseDefaultPathAppend.Buffer = (PWSTR)((ULONG_PTR)BaseDefaultPathBuffer + BaseDefaultPath.Length);
|
||||
BaseDefaultPathAppend.Length = 0;
|
||||
BaseDefaultPathAppend.MaximumLength = BaseDefaultPath.MaximumLength - BaseDefaultPath.Length;
|
||||
|
||||
/* Initialize command line */
|
||||
InitCommandLines();
|
||||
|
||||
/* Initialize the DLL critical section */
|
||||
RtlInitializeCriticalSection(&BaseDllDirectoryLock);
|
||||
|
||||
/* Initialize the National Language Support routines */
|
||||
if (!NlsInit())
|
||||
{
|
||||
DPRINT1("NLS Init failed\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Initialize Console Support */
|
||||
if (!BasepInitConsole())
|
||||
{
|
||||
DPRINT1("Failed to set up console\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Initialize application certification globals */
|
||||
InitializeListHead(&BasepAppCertDllsList);
|
||||
RtlInitializeCriticalSection(&gcsAppCert);
|
||||
|
||||
/* Insert more dll attach stuff here! */
|
||||
DllInitialized = TRUE;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Use the session path */
|
||||
swprintf(SessionDir,
|
||||
L"%ws\\%ld%ws",
|
||||
SESSION_DIR,
|
||||
SessionId,
|
||||
WIN_OBJ_DIR);
|
||||
}
|
||||
|
||||
/* Connect to the base server */
|
||||
DPRINT("Connecting to CSR...\n");
|
||||
Status = CsrClientConnectToServer(SessionDir,
|
||||
InWindows ? 1 : 0,
|
||||
&Dummy,
|
||||
&DummySize,
|
||||
&BaseRunningInServerProcess);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to connect to CSR (Status %lx)\n", Status);
|
||||
NtTerminateProcess(NtCurrentProcess(), Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Get the server data */
|
||||
ASSERT(Peb->ReadOnlyStaticServerData);
|
||||
BaseStaticServerData = Peb->ReadOnlyStaticServerData[CSR_CONSOLE];
|
||||
ASSERT(BaseStaticServerData);
|
||||
|
||||
/* Check if we are running a CSR Server */
|
||||
if (!BaseRunningInServerProcess)
|
||||
{
|
||||
/* Set the termination port for the thread */
|
||||
DPRINT("Creating new thread for CSR\n");
|
||||
CsrNewThread();
|
||||
}
|
||||
|
||||
/* Initialize heap handle table */
|
||||
BaseDllInitializeMemoryManager();
|
||||
|
||||
/* Set HMODULE for our DLL */
|
||||
kernel32_handle = hCurrentModule = hDll;
|
||||
|
||||
/* Set the directories */
|
||||
BaseWindowsDirectory = BaseStaticServerData->WindowsDirectory;
|
||||
BaseWindowsSystemDirectory = BaseStaticServerData->WindowsSystemDirectory;
|
||||
|
||||
/* Construct the default path (using the static buffer) */
|
||||
_snwprintf(BaseDefaultPathBuffer, sizeof(BaseDefaultPathBuffer) / sizeof(WCHAR),
|
||||
L".;%wZ;%wZ\\system;%wZ;", &BaseWindowsSystemDirectory, &BaseWindowsDirectory, &BaseWindowsDirectory);
|
||||
|
||||
BaseDefaultPath.Buffer = BaseDefaultPathBuffer;
|
||||
BaseDefaultPath.Length = wcslen(BaseDefaultPathBuffer) * sizeof(WCHAR);
|
||||
BaseDefaultPath.MaximumLength = sizeof(BaseDefaultPathBuffer);
|
||||
|
||||
/* Use remaining part of the default path buffer for the append path */
|
||||
BaseDefaultPathAppend.Buffer = (PWSTR)((ULONG_PTR)BaseDefaultPathBuffer + BaseDefaultPath.Length);
|
||||
BaseDefaultPathAppend.Length = 0;
|
||||
BaseDefaultPathAppend.MaximumLength = BaseDefaultPath.MaximumLength - BaseDefaultPath.Length;
|
||||
|
||||
/* Initialize command line */
|
||||
InitCommandLines();
|
||||
|
||||
/* Initialize the DLL critical section */
|
||||
RtlInitializeCriticalSection(&BaseDllDirectoryLock);
|
||||
|
||||
/* Initialize the National Language Support routines */
|
||||
if (!NlsInit())
|
||||
{
|
||||
DPRINT1("NLS Init failed\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Initialize Console Support */
|
||||
if (!BasepInitConsole())
|
||||
{
|
||||
DPRINT1("Failure to set up console\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Initialize application certification globals */
|
||||
InitializeListHead(&BasepAppCertDllsList);
|
||||
RtlInitializeCriticalSection(&gcsAppCert);
|
||||
|
||||
/* Insert more dll attach stuff here! */
|
||||
DllInitialized = TRUE;
|
||||
DPRINT("Initialization complete\n");
|
||||
break;
|
||||
|
||||
case DLL_PROCESS_DETACH:
|
||||
|
||||
DPRINT("DLL_PROCESS_DETACH\n");
|
||||
{
|
||||
if (DllInitialized == TRUE)
|
||||
{
|
||||
/* Insert more dll detach stuff here! */
|
||||
NlsUninit();
|
||||
|
||||
/* Uninitialize console support */
|
||||
BasepUninitConsole();
|
||||
|
||||
/* Delete DLL critical section */
|
||||
if (ConsoleInitialized == TRUE)
|
||||
{
|
||||
ConsoleInitialized = FALSE;
|
||||
RtlDeleteCriticalSection (&ConsoleLock);
|
||||
}
|
||||
RtlDeleteCriticalSection (&BaseDllDirectoryLock);
|
||||
RtlDeleteCriticalSection(&BaseDllDirectoryLock);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: lib/kernel32/file/dosdev.c
|
||||
* PURPOSE: Dos device functions
|
||||
* PROGRAMMER: Ariadne ( [email protected])
|
||||
* PROGRAMMER: Ariadne ([email protected])
|
||||
* UPDATE HISTORY:
|
||||
* Created 01/11/98
|
||||
*/
|
||||
@@ -89,8 +89,9 @@ DefineDosDeviceW(
|
||||
{
|
||||
ULONG ArgumentCount;
|
||||
ULONG BufferSize;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_DEFINE_DOS_DEVICE DefineDosDeviceRequest = &ApiMessage.Data.DefineDosDeviceRequest;
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
CSR_API_MESSAGE Request;
|
||||
NTSTATUS Status;
|
||||
UNICODE_STRING NtTargetPathU;
|
||||
UNICODE_STRING DeviceNameU;
|
||||
@@ -156,16 +157,16 @@ DefineDosDeviceW(
|
||||
}
|
||||
else
|
||||
{
|
||||
Request.Data.DefineDosDeviceRequest.dwFlags = dwFlags;
|
||||
DefineDosDeviceRequest->dwFlags = dwFlags;
|
||||
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
(PVOID)DeviceUpcaseNameU.Buffer,
|
||||
DeviceUpcaseNameU.Length,
|
||||
(PVOID*)&Request.Data.DefineDosDeviceRequest.DeviceName.Buffer);
|
||||
(PVOID*)&DefineDosDeviceRequest->DeviceName.Buffer);
|
||||
|
||||
Request.Data.DefineDosDeviceRequest.DeviceName.Length =
|
||||
DefineDosDeviceRequest->DeviceName.Length =
|
||||
DeviceUpcaseNameU.Length;
|
||||
Request.Data.DefineDosDeviceRequest.DeviceName.MaximumLength =
|
||||
DefineDosDeviceRequest->DeviceName.MaximumLength =
|
||||
DeviceUpcaseNameU.Length;
|
||||
|
||||
if (NtTargetPathU.Buffer)
|
||||
@@ -173,24 +174,22 @@ DefineDosDeviceW(
|
||||
CsrCaptureMessageBuffer(CaptureBuffer,
|
||||
(PVOID)NtTargetPathU.Buffer,
|
||||
NtTargetPathU.Length,
|
||||
(PVOID*)&Request.Data.DefineDosDeviceRequest.TargetName.Buffer);
|
||||
(PVOID*)&DefineDosDeviceRequest->TargetName.Buffer);
|
||||
}
|
||||
Request.Data.DefineDosDeviceRequest.TargetName.Length =
|
||||
DefineDosDeviceRequest->TargetName.Length =
|
||||
NtTargetPathU.Length;
|
||||
Request.Data.DefineDosDeviceRequest.TargetName.MaximumLength =
|
||||
DefineDosDeviceRequest->TargetName.MaximumLength =
|
||||
NtTargetPathU.Length;
|
||||
|
||||
Status = CsrClientCallServer(&Request,
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
CaptureBuffer,
|
||||
MAKE_CSR_API(DEFINE_DOS_DEVICE, CSR_CONSOLE),
|
||||
sizeof(CSR_API_MESSAGE));
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepDefineDosDevice),
|
||||
sizeof(BASE_DEFINE_DOS_DEVICE));
|
||||
CsrFreeCaptureBuffer(CaptureBuffer);
|
||||
|
||||
if (! NT_SUCCESS(Status) ||
|
||||
! NT_SUCCESS(Status = Request.Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
WARN("CsrClientCallServer() failed (Status %lx)\n",
|
||||
Status);
|
||||
WARN("CsrClientCallServer() failed (Status %lx)\n", Status);
|
||||
BaseSetLastNTError(Status);
|
||||
Result = FALSE;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -98,6 +98,7 @@ HANDLE WINAPI CreateFileW (LPCWSTR lpFileName,
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
UNICODE_STRING NtPathU;
|
||||
LPCWSTR pszConsoleFileName;
|
||||
HANDLE FileHandle;
|
||||
NTSTATUS Status;
|
||||
ULONG FileAttributes, Flags = 0;
|
||||
@@ -141,10 +142,10 @@ HANDLE WINAPI CreateFileW (LPCWSTR lpFileName,
|
||||
}
|
||||
|
||||
/* check for console input/output */
|
||||
if (0 == _wcsicmp(L"CONOUT$", lpFileName)
|
||||
|| 0 == _wcsicmp(L"CONIN$", lpFileName))
|
||||
pszConsoleFileName = IntCheckForConsoleFileName(lpFileName, dwDesiredAccess);
|
||||
if (pszConsoleFileName)
|
||||
{
|
||||
return OpenConsoleW(lpFileName,
|
||||
return OpenConsoleW(pszConsoleFileName,
|
||||
dwDesiredAccess,
|
||||
lpSecurityAttributes ? lpSecurityAttributes->bInheritHandle : FALSE,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE);
|
||||
|
||||
@@ -18,21 +18,22 @@ VOID
|
||||
WINAPI
|
||||
NotifySoundSentry(VOID)
|
||||
{
|
||||
CSR_API_MESSAGE ApiMessage;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_SOUND_SENTRY SoundSentryRequest = &ApiMessage.Data.SoundSentryRequest;
|
||||
|
||||
/* Get the video mode */
|
||||
if (!GetConsoleDisplayMode(&ApiMessage.Data.SoundSentryRequest.VideoMode))
|
||||
if (!GetConsoleDisplayMode(&SoundSentryRequest->VideoMode))
|
||||
{
|
||||
ApiMessage.Data.SoundSentryRequest.VideoMode = 0;
|
||||
SoundSentryRequest->VideoMode = 0;
|
||||
}
|
||||
|
||||
/* Make sure it's not fullscreen, and send the message if not */
|
||||
if (ApiMessage.Data.SoundSentryRequest.VideoMode == 0)
|
||||
if (SoundSentryRequest->VideoMode == 0)
|
||||
{
|
||||
CsrClientCallServer(&ApiMessage,
|
||||
CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
MAKE_CSR_API(SOUND_SENTRY, CSR_NATIVE),
|
||||
sizeof(CSR_API_MESSAGE));
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepSoundSentryNotification),
|
||||
sizeof(BASE_SOUND_SENTRY));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: lib/kernel32/file/file.c
|
||||
* PURPOSE: Directory functions
|
||||
* PROGRAMMER: Ariadne ( ariadne@xs4all.nl)
|
||||
* PROGRAMMERS: Ariadne (ariadne@xs4all.nl)
|
||||
* Pierre Schweitzer (pierre.schweitzer@reactos.org)
|
||||
* UPDATE HISTORY:
|
||||
* Created 01/11/98
|
||||
@@ -91,7 +91,8 @@ GetTempFileNameW(IN LPCWSTR lpPathName,
|
||||
UINT ID, Num = 0;
|
||||
CHAR IDString[5];
|
||||
WCHAR * TempFileName;
|
||||
CSR_API_MESSAGE ApiMessage;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_GET_TEMP_FILE GetTempFile = &ApiMessage.Data.GetTempFile;
|
||||
DWORD FileAttributes, LastError;
|
||||
UNICODE_STRING PathNameString, PrefixString;
|
||||
static const WCHAR Ext[] = { L'.', 't', 'm', 'p', UNICODE_NULL };
|
||||
@@ -157,14 +158,17 @@ GetTempFileNameW(IN LPCWSTR lpPathName,
|
||||
/* If user didn't gave any ID, ask Csrss to give one */
|
||||
if (!uUnique)
|
||||
{
|
||||
CsrClientCallServer(&ApiMessage, NULL, MAKE_CSR_API(GET_TEMP_FILE, CSR_NATIVE), sizeof(CSR_API_MESSAGE));
|
||||
if (ApiMessage.Data.GetTempFile.UniqueID == 0)
|
||||
CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepGetTempFile),
|
||||
sizeof(BASE_GET_TEMP_FILE));
|
||||
if (GetTempFile->UniqueID == 0)
|
||||
{
|
||||
Num++;
|
||||
continue;
|
||||
}
|
||||
|
||||
ID = ApiMessage.Data.GetTempFile.UniqueID;
|
||||
ID = GetTempFile->UniqueID;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1430,7 +1430,7 @@ SearchPathW(IN LPCWSTR lpPath,
|
||||
}
|
||||
|
||||
Quickie:
|
||||
/* Check if there was a dynamic path stirng to free */
|
||||
/* Check if there was a dynamic path string to free */
|
||||
if ((PathString.Buffer != lpPath) && (PathString.Buffer))
|
||||
{
|
||||
/* And free it */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: lib/kernel32/proc/proc.c
|
||||
* PURPOSE: Process functions
|
||||
* PROGRAMMER: Ariadne ( ariadne@xs4all.nl)
|
||||
* PROGRAMMERS: Ariadne (ariadne@xs4all.nl)
|
||||
* UPDATE HISTORY:
|
||||
* Created 01/11/98
|
||||
*/
|
||||
@@ -493,26 +493,26 @@ WINAPI
|
||||
BasepNotifyCsrOfThread(IN HANDLE ThreadHandle,
|
||||
IN PCLIENT_ID ClientId)
|
||||
{
|
||||
ULONG Request = CREATE_THREAD;
|
||||
CSR_API_MESSAGE CsrRequest;
|
||||
NTSTATUS Status;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_CREATE_THREAD CreateThreadRequest = &ApiMessage.Data.CreateThreadRequest;
|
||||
|
||||
DPRINT("BasepNotifyCsrOfThread: Thread: %lx, Handle %lx\n",
|
||||
ClientId->UniqueThread, ThreadHandle);
|
||||
|
||||
/* Fill out the request */
|
||||
CsrRequest.Data.CreateThreadRequest.ClientId = *ClientId;
|
||||
CsrRequest.Data.CreateThreadRequest.ThreadHandle = ThreadHandle;
|
||||
CreateThreadRequest->ClientId = *ClientId;
|
||||
CreateThreadRequest->ThreadHandle = ThreadHandle;
|
||||
|
||||
/* Call CSR */
|
||||
Status = CsrClientCallServer(&CsrRequest,
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
MAKE_CSR_API(Request, CSR_NATIVE),
|
||||
sizeof(CSR_API_MESSAGE));
|
||||
if (!NT_SUCCESS(Status) || !NT_SUCCESS(CsrRequest.Status))
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepCreateThread),
|
||||
sizeof(BASE_CREATE_THREAD));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to tell csrss about new thread: %lx %lx\n", Status, CsrRequest.Status);
|
||||
return CsrRequest.Status;
|
||||
DPRINT1("Failed to tell CSRSS about new thread: %lx\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Return Success */
|
||||
@@ -528,17 +528,17 @@ BasepCreateFirstThread(HANDLE ProcessHandle,
|
||||
LPSECURITY_ATTRIBUTES lpThreadAttributes,
|
||||
PSECTION_IMAGE_INFORMATION SectionImageInfo,
|
||||
PCLIENT_ID ClientId,
|
||||
BOOLEAN InheritHandles,
|
||||
DWORD dwCreationFlags)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
OBJECT_ATTRIBUTES LocalObjectAttributes;
|
||||
POBJECT_ATTRIBUTES ObjectAttributes;
|
||||
CONTEXT Context;
|
||||
INITIAL_TEB InitialTeb;
|
||||
NTSTATUS Status;
|
||||
HANDLE hThread;
|
||||
ULONG Request = CREATE_PROCESS;
|
||||
CSR_API_MESSAGE CsrRequest;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_CREATE_PROCESS CreateProcessRequest = &ApiMessage.Data.CreateProcessRequest;
|
||||
|
||||
DPRINT("BasepCreateFirstThread. hProcess: %lx\n", ProcessHandle);
|
||||
|
||||
/* Create the Thread's Stack */
|
||||
@@ -574,20 +574,29 @@ BasepCreateFirstThread(HANDLE ProcessHandle,
|
||||
}
|
||||
|
||||
/* Fill out the request to notify CSRSS */
|
||||
CsrRequest.Data.CreateProcessRequest.ClientId = *ClientId;
|
||||
CsrRequest.Data.CreateProcessRequest.ProcessHandle = ProcessHandle;
|
||||
CsrRequest.Data.CreateProcessRequest.ThreadHandle = hThread;
|
||||
CsrRequest.Data.CreateProcessRequest.CreationFlags = dwCreationFlags;
|
||||
CsrRequest.Data.CreateProcessRequest.bInheritHandles = InheritHandles;
|
||||
CreateProcessRequest->ClientId = *ClientId;
|
||||
CreateProcessRequest->ProcessHandle = ProcessHandle;
|
||||
CreateProcessRequest->ThreadHandle = hThread;
|
||||
CreateProcessRequest->CreationFlags = dwCreationFlags;
|
||||
|
||||
/*
|
||||
* For GUI applications we turn on the 2nd bit. This also allows
|
||||
* us to know whether or not this is a GUI or a TUI application.
|
||||
*/
|
||||
if (IMAGE_SUBSYSTEM_WINDOWS_GUI == SectionImageInfo->SubSystemType)
|
||||
{
|
||||
CreateProcessRequest->ProcessHandle = (HANDLE)
|
||||
((ULONG_PTR)CreateProcessRequest->ProcessHandle | 2);
|
||||
}
|
||||
|
||||
/* Call CSR */
|
||||
Status = CsrClientCallServer(&CsrRequest,
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
MAKE_CSR_API(Request, CSR_NATIVE),
|
||||
sizeof(CSR_API_MESSAGE));
|
||||
if (!NT_SUCCESS(Status) || !NT_SUCCESS(CsrRequest.Status))
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepCreateProcess),
|
||||
sizeof(BASE_CREATE_PROCESS));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to tell csrss about new process: %lx %lx\n", Status, CsrRequest.Status);
|
||||
DPRINT1("Failed to tell CSRSS about new process: %lx\n", Status);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -935,19 +944,19 @@ BasePushProcessParameters(IN ULONG ParameterFlags,
|
||||
ProcessParameters->StandardError = StartupInfo->hStdError;
|
||||
}
|
||||
|
||||
/* Use Special Flags for ConDllInitialize in Kernel32 */
|
||||
/* Use Special Flags for BasepInitConsole in Kernel32 */
|
||||
if (CreationFlags & DETACHED_PROCESS)
|
||||
{
|
||||
ProcessParameters->ConsoleHandle = HANDLE_DETACHED_PROCESS;
|
||||
}
|
||||
else if (CreationFlags & CREATE_NO_WINDOW)
|
||||
{
|
||||
ProcessParameters->ConsoleHandle = HANDLE_CREATE_NO_WINDOW;
|
||||
}
|
||||
else if (CreationFlags & CREATE_NEW_CONSOLE)
|
||||
{
|
||||
ProcessParameters->ConsoleHandle = HANDLE_CREATE_NEW_CONSOLE;
|
||||
}
|
||||
else if (CreationFlags & CREATE_NO_WINDOW)
|
||||
{
|
||||
ProcessParameters->ConsoleHandle = HANDLE_CREATE_NO_WINDOW;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Inherit our Console Handle */
|
||||
@@ -1175,24 +1184,25 @@ WINAPI
|
||||
GetProcessShutdownParameters(OUT LPDWORD lpdwLevel,
|
||||
OUT LPDWORD lpdwFlags)
|
||||
{
|
||||
CSR_API_MESSAGE CsrRequest;
|
||||
NTSTATUS Status;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_GET_PROCESS_SHUTDOWN_PARAMS GetShutdownParametersRequest = &ApiMessage.Data.GetShutdownParametersRequest;
|
||||
|
||||
/* Ask CSRSS for shutdown information */
|
||||
Status = CsrClientCallServer(&CsrRequest,
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
MAKE_CSR_API(GET_SHUTDOWN_PARAMETERS, CSR_NATIVE),
|
||||
sizeof(CSR_API_MESSAGE));
|
||||
if (!(NT_SUCCESS(Status)) || !(NT_SUCCESS(CsrRequest.Status)))
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepGetProcessShutdownParam),
|
||||
sizeof(BASE_GET_PROCESS_SHUTDOWN_PARAMS));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Return the failure from CSRSS */
|
||||
BaseSetLastNTError(CsrRequest.Status);
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Get the data out of the LCP reply */
|
||||
*lpdwLevel = CsrRequest.Data.GetShutdownParametersRequest.Level;
|
||||
*lpdwFlags = CsrRequest.Data.GetShutdownParametersRequest.Flags;
|
||||
/* Get the data back */
|
||||
*lpdwLevel = GetShutdownParametersRequest->Level;
|
||||
*lpdwFlags = GetShutdownParametersRequest->Flags;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1204,20 +1214,21 @@ WINAPI
|
||||
SetProcessShutdownParameters(IN DWORD dwLevel,
|
||||
IN DWORD dwFlags)
|
||||
{
|
||||
CSR_API_MESSAGE CsrRequest;
|
||||
NTSTATUS Status;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_SET_PROCESS_SHUTDOWN_PARAMS SetShutdownParametersRequest = &ApiMessage.Data.SetShutdownParametersRequest;
|
||||
|
||||
/* Write the data into the CSRSS request and send it */
|
||||
CsrRequest.Data.SetShutdownParametersRequest.Level = dwLevel;
|
||||
CsrRequest.Data.SetShutdownParametersRequest.Flags = dwFlags;
|
||||
Status = CsrClientCallServer(&CsrRequest,
|
||||
SetShutdownParametersRequest->Level = dwLevel;
|
||||
SetShutdownParametersRequest->Flags = dwFlags;
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
MAKE_CSR_API(SET_SHUTDOWN_PARAMETERS, CSR_NATIVE),
|
||||
sizeof(CSR_API_MESSAGE));
|
||||
if (!NT_SUCCESS(Status) || !NT_SUCCESS(CsrRequest.Status))
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepSetProcessShutdownParam),
|
||||
sizeof(BASE_SET_PROCESS_SHUTDOWN_PARAMS));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Return the failure from CSRSS */
|
||||
BaseSetLastNTError(CsrRequest.Status);
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1741,7 +1752,9 @@ VOID
|
||||
WINAPI
|
||||
ExitProcess(IN UINT uExitCode)
|
||||
{
|
||||
CSR_API_MESSAGE CsrRequest;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_EXIT_PROCESS ExitProcessRequest = &ApiMessage.Data.ExitProcessRequest;
|
||||
|
||||
ASSERT(!BaseRunningInServerProcess);
|
||||
|
||||
_SEH2_TRY
|
||||
@@ -1756,11 +1769,11 @@ ExitProcess(IN UINT uExitCode)
|
||||
LdrShutdownProcess();
|
||||
|
||||
/* Notify Base Server of process termination */
|
||||
CsrRequest.Data.TerminateProcessRequest.uExitCode = uExitCode;
|
||||
CsrClientCallServer(&CsrRequest,
|
||||
ExitProcessRequest->uExitCode = uExitCode;
|
||||
CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
MAKE_CSR_API(TERMINATE_PROCESS, CSR_NATIVE),
|
||||
sizeof(CSR_API_MESSAGE));
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepExitProcess),
|
||||
sizeof(BASE_EXIT_PROCESS));
|
||||
|
||||
/* Now do it again */
|
||||
NtTerminateProcess(NtCurrentProcess(), uExitCode);
|
||||
@@ -1843,7 +1856,7 @@ FatalAppExitW(IN UINT uAction,
|
||||
ULONG Response;
|
||||
NTSTATUS Status;
|
||||
|
||||
/* Setup the stirng to print out */
|
||||
/* Setup the string to print out */
|
||||
RtlInitUnicodeString(&UnicodeString, lpMessageText);
|
||||
|
||||
/* Display the hard error no matter what */
|
||||
@@ -3235,7 +3248,6 @@ GetAppName:
|
||||
lpThreadAttributes,
|
||||
&SectionImageInfo,
|
||||
&ClientId,
|
||||
bInheritHandles,
|
||||
dwCreationFlags);
|
||||
|
||||
if (hThread == NULL)
|
||||
|
||||
@@ -70,7 +70,7 @@ BaseCheckVDM(IN ULONG BinaryType,
|
||||
IN PCWCH CommandLine,
|
||||
IN PCWCH CurrentDirectory,
|
||||
IN PANSI_STRING AnsiEnvironment,
|
||||
IN PCSR_API_MESSAGE Msg,
|
||||
IN PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PULONG iTask,
|
||||
IN DWORD CreationFlags,
|
||||
IN LPSTARTUPINFOW StartupInfo)
|
||||
@@ -87,9 +87,10 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
|
||||
IN ULONG IndexInfo,
|
||||
IN ULONG BinaryType)
|
||||
{
|
||||
#if 0 // Unimplemented in BASESRV
|
||||
NTSTATUS Status;
|
||||
CSR_API_MESSAGE Msg;
|
||||
ULONG CsrRequest = MAKE_CSR_API(UPDATE_VDM_ENTRY, CSR_CONSOLE);
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_UPDATE_VDM_ENTRY UpdateVdmEntry = &ApiMessage.Data.UpdateVdmEntry;
|
||||
|
||||
/* Check what update is being sent */
|
||||
switch (UpdateIndex)
|
||||
@@ -98,16 +99,16 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
|
||||
case VdmEntryUndo:
|
||||
|
||||
/* Tell the server how far we had gotten along */
|
||||
Msg.Data.UpdateVdmEntry.iTask = (ULONG)*WaitHandle;
|
||||
Msg.Data.UpdateVdmEntry.VDMCreationState = IndexInfo;
|
||||
UpdateVdmEntry->iTask = (ULONG)*WaitHandle;
|
||||
UpdateVdmEntry->VDMCreationState = IndexInfo;
|
||||
break;
|
||||
|
||||
/* VDM is ready with a new process handle */
|
||||
case VdmEntryUpdateProcess:
|
||||
|
||||
/* Send it the process handle */
|
||||
Msg.Data.UpdateVdmEntry.VDMProcessHandle = *WaitHandle;
|
||||
Msg.Data.UpdateVdmEntry.iTask = IndexInfo;
|
||||
UpdateVdmEntry->VDMProcessHandle = *WaitHandle;
|
||||
UpdateVdmEntry->iTask = IndexInfo;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -115,29 +116,32 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
|
||||
if (BinaryType == BINARY_TYPE_WOW)
|
||||
{
|
||||
/* Magic value for 16-bit apps */
|
||||
Msg.Data.UpdateVdmEntry.ConsoleHandle = (HANDLE)-1;
|
||||
UpdateVdmEntry->ConsoleHandle = (HANDLE)-1;
|
||||
}
|
||||
else if (Msg.Data.UpdateVdmEntry.iTask)
|
||||
else if (UpdateVdmEntry->iTask)
|
||||
{
|
||||
/* No handle for true VDM */
|
||||
Msg.Data.UpdateVdmEntry.ConsoleHandle = 0;
|
||||
UpdateVdmEntry->ConsoleHandle = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Otherwise, send the regular consoel handle */
|
||||
Msg.Data.UpdateVdmEntry.ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
|
||||
UpdateVdmEntry->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
|
||||
}
|
||||
|
||||
/* Finally write the index and binary type */
|
||||
Msg.Data.UpdateVdmEntry.EntryIndex = UpdateIndex;
|
||||
Msg.Data.UpdateVdmEntry.BinaryType = BinaryType;
|
||||
UpdateVdmEntry->EntryIndex = UpdateIndex;
|
||||
UpdateVdmEntry->BinaryType = BinaryType;
|
||||
|
||||
/* Send the message to CSRSS */
|
||||
Status = CsrClientCallServer(&Msg, NULL, CsrRequest, sizeof(Msg));
|
||||
if (!(NT_SUCCESS(Status)) || !(NT_SUCCESS(Msg.Status)))
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepUpdateVDMEntry),
|
||||
sizeof(BASE_UPDATE_VDM_ENTRY));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Handle failure */
|
||||
BaseSetLastNTError(Msg.Status);
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -145,9 +149,9 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
|
||||
if (UpdateIndex == VdmEntryUpdateProcess)
|
||||
{
|
||||
/* Return it to the caller */
|
||||
*WaitHandle = Msg.Data.UpdateVdmEntry.WaitObjectForParent;
|
||||
*WaitHandle = UpdateVdmEntry->WaitObjectForParent;
|
||||
}
|
||||
|
||||
#endif
|
||||
/* We made it */
|
||||
return TRUE;
|
||||
}
|
||||
@@ -157,10 +161,11 @@ WINAPI
|
||||
BaseCheckForVDM(IN HANDLE ProcessHandle,
|
||||
OUT LPDWORD ExitCode)
|
||||
{
|
||||
#if 0 // Unimplemented in BASESRV
|
||||
NTSTATUS Status;
|
||||
EVENT_BASIC_INFORMATION EventBasicInfo;
|
||||
CSR_API_MESSAGE Msg;
|
||||
ULONG CsrRequest = MAKE_CSR_API(GET_VDM_EXIT_CODE, CSR_CONSOLE);
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_GET_VDM_EXIT_CODE GetVdmExitCode = &ApiMessage.Data.GetVdmExitCode;
|
||||
|
||||
/* It's VDM if the process is actually a wait handle (an event) */
|
||||
Status = NtQueryEvent(ProcessHandle,
|
||||
@@ -171,15 +176,19 @@ BaseCheckForVDM(IN HANDLE ProcessHandle,
|
||||
if (!NT_SUCCESS(Status)) return FALSE;
|
||||
|
||||
/* Setup the input parameters */
|
||||
Msg.Data.GetVdmExitCode.ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
|
||||
Msg.Data.GetVdmExitCode.hParent = ProcessHandle;
|
||||
GetVdmExitCode->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
|
||||
GetVdmExitCode->hParent = ProcessHandle;
|
||||
|
||||
/* Call CSRSS */
|
||||
Status = CsrClientCallServer(&Msg, NULL, CsrRequest, sizeof(Msg));
|
||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepGetVDMExitCode /* BasepCheckVDM */),
|
||||
sizeof(BASE_GET_VDM_EXIT_CODE));
|
||||
if (!NT_SUCCESS(Status)) return FALSE;
|
||||
|
||||
/* Get the exit code from the reply */
|
||||
*ExitCode = Msg.Data.GetVdmExitCode.ExitCode;
|
||||
*ExitCode = GetVdmExitCode->ExitCode;
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -224,7 +233,7 @@ BaseGetVdmConfigInfo(IN LPCWSTR Reserved,
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Non-DOS, build the stirng for it without the task ID */
|
||||
/* Non-DOS, build the string for it without the task ID */
|
||||
_snwprintf(CommandLine,
|
||||
sizeof(CommandLine),
|
||||
L"\"%s\\ntvdm.exe\" %s%c",
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
/* COPYRIGHT: See COPYING in the top level directory
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* PURPOSE: Vista functions
|
||||
* PROGRAMMER: Thomas Weidenmueller <w3seek@reactos.com>
|
||||
*/
|
||||
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include <k32.h>
|
||||
|
||||
#define NDEBUG
|
||||
@@ -101,8 +104,8 @@ SleepConditionVariableSRW(IN OUT PCONDITION_VARIABLE ConditionVariable,
|
||||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection,
|
||||
IN DWORD dwSpinCount,
|
||||
IN DWORD flags )
|
||||
IN DWORD dwSpinCount,
|
||||
IN DWORD flags)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
@@ -124,7 +127,6 @@ BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
@@ -228,6 +230,7 @@ QueryFullProcessImageNameA(HANDLE hProcess,
|
||||
return Result;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
@@ -309,146 +312,6 @@ RegisterApplicationRestart(IN PCWSTR pwzCommandline OPTIONAL,
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetConsoleHistoryInfo
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
||||
{
|
||||
CSR_API_MESSAGE Request;
|
||||
ULONG CsrRequest = MAKE_CSR_API(GET_HISTORY_INFO, CSR_CONSOLE);
|
||||
NTSTATUS Status;
|
||||
if (lpConsoleHistoryInfo->cbSize != sizeof(CONSOLE_HISTORY_INFO))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
|
||||
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
lpConsoleHistoryInfo->HistoryBufferSize = Request.Data.GetHistoryInfo.HistoryBufferSize;
|
||||
lpConsoleHistoryInfo->NumberOfHistoryBuffers = Request.Data.GetHistoryInfo.NumberOfHistoryBuffers;
|
||||
lpConsoleHistoryInfo->dwFlags = Request.Data.GetHistoryInfo.dwFlags;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* SetConsoleHistoryInfo
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
||||
{
|
||||
CSR_API_MESSAGE Request;
|
||||
ULONG CsrRequest = MAKE_CSR_API(GET_HISTORY_INFO, CSR_CONSOLE);
|
||||
NTSTATUS Status;
|
||||
if (lpConsoleHistoryInfo->cbSize != sizeof(CONSOLE_HISTORY_INFO))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
Request.Data.SetHistoryInfo.HistoryBufferSize = lpConsoleHistoryInfo->HistoryBufferSize;
|
||||
Request.Data.SetHistoryInfo.NumberOfHistoryBuffers = lpConsoleHistoryInfo->NumberOfHistoryBuffers;
|
||||
Request.Data.SetHistoryInfo.dwFlags = lpConsoleHistoryInfo->dwFlags;
|
||||
Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
|
||||
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
|
||||
{
|
||||
BaseSetLastNTError(Status);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetConsoleOriginalTitleW
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleOriginalTitleW(OUT LPWSTR lpConsoleTitle,
|
||||
IN DWORD nSize)
|
||||
{
|
||||
DPRINT1("GetConsoleOriginalTitleW(0x%p, 0x%x) UNIMPLEMENTED!\n", lpConsoleTitle, nSize);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetConsoleOriginalTitleA
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleOriginalTitleA(OUT LPSTR lpConsoleTitle,
|
||||
IN DWORD nSize)
|
||||
{
|
||||
DPRINT1("GetConsoleOriginalTitleA(0x%p, 0x%x) UNIMPLEMENTED!\n", lpConsoleTitle, nSize);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetConsoleScreenBufferInfoEx
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
||||
OUT PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
|
||||
{
|
||||
DPRINT1("GetConsoleScreenBufferInfoEx(0x%p, 0x%p) UNIMPLEMENTED!\n", hConsoleOutput, lpConsoleScreenBufferInfoEx);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* SetConsoleScreenBufferInfoEx
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
||||
IN PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
|
||||
{
|
||||
DPRINT1("SetConsoleScreenBufferInfoEx(0x%p, 0x%p) UNIMPLEMENTED!\n", hConsoleOutput, lpConsoleScreenBufferInfoEx);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
* GetCurrentConsoleFontEx
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetCurrentConsoleFontEx(IN HANDLE hConsoleOutput,
|
||||
IN BOOL bMaximumWindow,
|
||||
OUT PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx)
|
||||
{
|
||||
DPRINT1("GetCurrentConsoleFontEx(0x%p, 0x%x, 0x%p) UNIMPLEMENTED!\n", hConsoleOutput, bMaximumWindow, lpConsoleCurrentFontEx);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
@@ -687,6 +550,7 @@ CreateSymbolicLinkA(IN LPCSTR lpSymlinkFileName,
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
@@ -708,6 +572,7 @@ GetFinalPathNameByHandleW(IN HANDLE hFile,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
@@ -775,6 +640,7 @@ GetFinalPathNameByHandleA(IN HANDLE hFile,
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS System Libraries
|
||||
* FILE: dll/win32/kernel32/include/console.h
|
||||
* PURPOSE: Console API Client Definitions
|
||||
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* CONSTANTS ******************************************************************/
|
||||
|
||||
#define HANDLE_DETACHED_PROCESS (HANDLE)-2
|
||||
#define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
|
||||
#define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
|
||||
|
||||
|
||||
/* FUNCTION PROTOTYPES ********************************************************/
|
||||
|
||||
BOOL WINAPI
|
||||
BasepInitConsole(VOID);
|
||||
|
||||
VOID WINAPI
|
||||
BasepUninitConsole(VOID);
|
||||
|
||||
VOID WINAPI
|
||||
InitConsoleCtrlHandling(VOID);
|
||||
|
||||
DWORD WINAPI
|
||||
ConsoleControlDispatcher(IN LPVOID lpThreadParameter);
|
||||
|
||||
DWORD WINAPI
|
||||
PropDialogHandler(IN LPVOID lpThreadParameter);
|
||||
|
||||
HANDLE WINAPI
|
||||
DuplicateConsoleHandle(HANDLE hConsole,
|
||||
DWORD dwDesiredAccess,
|
||||
BOOL bInheritHandle,
|
||||
DWORD dwOptions);
|
||||
|
||||
BOOL WINAPI
|
||||
VerifyConsoleIoHandle(HANDLE Handle);
|
||||
|
||||
BOOL WINAPI
|
||||
CloseConsoleHandle(HANDLE Handle);
|
||||
|
||||
HANDLE WINAPI
|
||||
GetConsoleInputWaitHandle(VOID);
|
||||
|
||||
HANDLE FASTCALL
|
||||
TranslateStdHandle(HANDLE hHandle);
|
||||
|
||||
VOID
|
||||
InitConsoleInfo(IN OUT PCONSOLE_START_INFO ConsoleStartInfo);
|
||||
|
||||
LPCWSTR
|
||||
IntCheckForConsoleFileName(IN LPCWSTR pszName,
|
||||
IN DWORD dwDesiredAccess);
|
||||
|
||||
HANDLE WINAPI
|
||||
OpenConsoleW(LPCWSTR wsName,
|
||||
DWORD dwDesiredAccess,
|
||||
BOOL bInheritHandle,
|
||||
DWORD dwShareMode);
|
||||
|
||||
BOOL WINAPI
|
||||
SetConsoleInputExeNameW(LPCWSTR lpInputExeName);
|
||||
|
||||
/* EOF */
|
||||
@@ -61,13 +61,6 @@
|
||||
#define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
|
||||
#endif
|
||||
|
||||
#define IsConsoleHandle(h) \
|
||||
(((((ULONG_PTR)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
|
||||
|
||||
#define HANDLE_DETACHED_PROCESS (HANDLE)-2
|
||||
#define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
|
||||
#define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
|
||||
|
||||
//
|
||||
// This stuff maybe should go in a vdm.h?
|
||||
//
|
||||
@@ -109,19 +102,20 @@ typedef enum _VDM_ENTRY_CODE
|
||||
|
||||
typedef struct _CODEPAGE_ENTRY
|
||||
{
|
||||
LIST_ENTRY Entry;
|
||||
UINT CodePage;
|
||||
HANDLE SectionHandle;
|
||||
PBYTE SectionMapping;
|
||||
CPTABLEINFO CodePageTable;
|
||||
LIST_ENTRY Entry;
|
||||
UINT CodePage;
|
||||
HANDLE SectionHandle;
|
||||
PBYTE SectionMapping;
|
||||
CPTABLEINFO CodePageTable;
|
||||
} CODEPAGE_ENTRY, *PCODEPAGE_ENTRY;
|
||||
|
||||
typedef struct tagLOADPARMS32 {
|
||||
LPSTR lpEnvAddress;
|
||||
LPSTR lpCmdLine;
|
||||
WORD wMagicValue;
|
||||
WORD wCmdShow;
|
||||
DWORD dwReserved;
|
||||
typedef struct tagLOADPARMS32
|
||||
{
|
||||
LPSTR lpEnvAddress;
|
||||
LPSTR lpCmdLine;
|
||||
WORD wMagicValue;
|
||||
WORD wCmdShow;
|
||||
DWORD dwReserved;
|
||||
} LOADPARMS32;
|
||||
|
||||
typedef enum _BASE_SEARCH_PATH_TYPE
|
||||
@@ -155,7 +149,6 @@ typedef struct _BASEP_ACTCTX_BLOCK
|
||||
#define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_SUCCESS 2
|
||||
#define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_CONTINUE 3
|
||||
|
||||
|
||||
extern PBASE_STATIC_SERVER_DATA BaseStaticServerData;
|
||||
|
||||
typedef
|
||||
@@ -164,8 +157,6 @@ DWORD
|
||||
HANDLE hProcess,
|
||||
DWORD dwMilliseconds);
|
||||
|
||||
|
||||
extern BOOLEAN InWindows;
|
||||
extern WaitForInputIdleType UserWaitForInputIdleRoutine;
|
||||
|
||||
/* GLOBAL VARIABLES **********************************************************/
|
||||
@@ -192,24 +183,8 @@ VOID
|
||||
NTAPI
|
||||
BaseDllInitializeMemoryManager(VOID);
|
||||
|
||||
BOOL WINAPI VerifyConsoleIoHandle(HANDLE Handle);
|
||||
|
||||
BOOL WINAPI CloseConsoleHandle(HANDLE Handle);
|
||||
|
||||
HANDLE WINAPI
|
||||
GetConsoleInputWaitHandle (VOID);
|
||||
|
||||
HANDLE WINAPI OpenConsoleW (LPCWSTR wsName,
|
||||
DWORD dwDesiredAccess,
|
||||
BOOL bInheritHandle,
|
||||
DWORD dwShareMode);
|
||||
|
||||
BOOL WINAPI SetConsoleInputExeNameW(LPCWSTR lpInputExeName);
|
||||
|
||||
PTEB GetTeb(VOID);
|
||||
|
||||
HANDLE FASTCALL TranslateStdHandle(HANDLE hHandle);
|
||||
|
||||
PWCHAR FilenameA2W(LPCSTR NameA, BOOL alloc);
|
||||
DWORD FilenameW2A_N(LPSTR dest, INT destlen, LPCWSTR src, INT srclen);
|
||||
|
||||
@@ -427,13 +402,6 @@ BaseSetLastNTError(IN NTSTATUS Status);
|
||||
/* FIXME */
|
||||
WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
|
||||
|
||||
HANDLE
|
||||
WINAPI
|
||||
DuplicateConsoleHandle(HANDLE hConsole,
|
||||
DWORD dwDesiredAccess,
|
||||
BOOL bInheritHandle,
|
||||
DWORD dwOptions);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
BasepLocateExeLdrEntry(IN PLDR_DATA_TABLE_ENTRY Entry,
|
||||
|
||||
@@ -43,7 +43,12 @@
|
||||
#include <ndk/umfuncs.h>
|
||||
|
||||
/* CSRSS Header */
|
||||
#include <csrss/csrss.h>
|
||||
#include <csr/csr.h>
|
||||
#include <win/base.h>
|
||||
#include <win/basemsg.h>
|
||||
#include <win/console.h>
|
||||
#include <win/conmsg.h>
|
||||
#include <win/winmsg.h>
|
||||
|
||||
/* C Headers */
|
||||
//#include <ctype.h>
|
||||
@@ -65,4 +70,7 @@
|
||||
/* Base Macros */
|
||||
#include "include/base_x.h"
|
||||
|
||||
/* Console API Client Definitions */
|
||||
#include "include/console.h"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1825,10 +1825,10 @@ HRESULT WINAPI CShellLink::InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
|
||||
else
|
||||
path = strdupW(sPath);
|
||||
|
||||
if (lpici->cbSize == sizeof (CMINVOKECOMMANDINFOEX) &&
|
||||
(lpici->fMask & CMIC_MASK_UNICODE))
|
||||
if ( lpici->cbSize == sizeof(CMINVOKECOMMANDINFOEX) &&
|
||||
(lpici->fMask & CMIC_MASK_UNICODE) )
|
||||
{
|
||||
LPCMINVOKECOMMANDINFOEX iciex = (LPCMINVOKECOMMANDINFOEX) lpici;
|
||||
LPCMINVOKECOMMANDINFOEX iciex = (LPCMINVOKECOMMANDINFOEX)lpici;
|
||||
DWORD len = 2;
|
||||
|
||||
if (sArgs)
|
||||
@@ -1854,8 +1854,10 @@ HRESULT WINAPI CShellLink::InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
|
||||
SHELLEXECUTEINFOW sei;
|
||||
memset(&sei, 0, sizeof sei);
|
||||
sei.cbSize = sizeof sei;
|
||||
sei.fMask = SEE_MASK_UNICODE | (lpici->fMask & (SEE_MASK_NOASYNC | SEE_MASK_ASYNCOK | SEE_MASK_FLAG_NO_UI));
|
||||
sei.fMask = SEE_MASK_HASLINKNAME | SEE_MASK_UNICODE |
|
||||
(lpici->fMask & (SEE_MASK_NOASYNC | SEE_MASK_ASYNCOK | SEE_MASK_FLAG_NO_UI));
|
||||
sei.lpFile = path;
|
||||
sei.lpClass = sLinkPath;
|
||||
sei.nShow = iShowCmd;
|
||||
sei.lpDirectory = sWorkDir;
|
||||
sei.lpParameters = args;
|
||||
|
||||
@@ -67,11 +67,11 @@ private:
|
||||
LPWSTR sWorkDir;
|
||||
LPWSTR sDescription;
|
||||
LPWSTR sPathRel;
|
||||
LPWSTR sProduct;
|
||||
LPWSTR sComponent;
|
||||
LPWSTR sProduct;
|
||||
LPWSTR sComponent;
|
||||
volume_info volume;
|
||||
LPWSTR sLinkPath;
|
||||
BOOL bRunAs;
|
||||
LPWSTR sLinkPath;
|
||||
BOOL bRunAs;
|
||||
BOOL bDirty;
|
||||
INT iIdOpen; /* id of the "Open" entry in the context menu */
|
||||
CComPtr<IUnknown> site;
|
||||
|
||||
@@ -450,6 +450,11 @@ static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait,
|
||||
startup.cb = sizeof(STARTUPINFOW);
|
||||
startup.dwFlags = STARTF_USESHOWWINDOW;
|
||||
startup.wShowWindow = psei->nShow;
|
||||
startup.lpTitle = (LPWSTR)(psei->fMask & (SEE_MASK_HASLINKNAME | SEE_MASK_HASTITLE) ? psei->lpClass : NULL);
|
||||
|
||||
if (psei->fMask & SEE_MASK_HASLINKNAME)
|
||||
startup.dwFlags |= STARTF_TITLEISLINKNAME;
|
||||
|
||||
dwCreationFlags = CREATE_UNICODE_ENVIRONMENT;
|
||||
|
||||
if (psei->fMask & SEE_MASK_NO_CONSOLE)
|
||||
|
||||
@@ -25,103 +25,6 @@ Author:
|
||||
#include <umtypes.h>
|
||||
#include <dbgktypes.h>
|
||||
|
||||
//
|
||||
// Don't force inclusion of csrss header, leave this opaque.
|
||||
//
|
||||
struct _CSR_API_MESSAGE;
|
||||
struct _CSR_CAPTURE_BUFFER;
|
||||
|
||||
//
|
||||
// CSR Functions
|
||||
//
|
||||
PVOID
|
||||
NTAPI
|
||||
CsrAllocateCaptureBuffer(
|
||||
ULONG ArgumentCount,
|
||||
ULONG BufferSize
|
||||
);
|
||||
|
||||
ULONG
|
||||
NTAPI
|
||||
CsrAllocateMessagePointer(
|
||||
struct _CSR_CAPTURE_BUFFER *CaptureBuffer,
|
||||
ULONG MessageLength,
|
||||
PVOID *CaptureData
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageBuffer(
|
||||
struct _CSR_CAPTURE_BUFFER *CaptureBuffer,
|
||||
PVOID MessageString,
|
||||
ULONG StringLength,
|
||||
PVOID *CapturedData
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientConnectToServer(
|
||||
PWSTR ObjectDirectory,
|
||||
ULONG ServerId,
|
||||
PVOID ConnectionInfo,
|
||||
PULONG ConnectionInfoSize,
|
||||
PBOOLEAN ServerToServerCall
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientCallServer(
|
||||
struct _CSR_API_MESSAGE *Request,
|
||||
_In_opt_ struct _CSR_CAPTURE_BUFFER *CaptureBuffer,
|
||||
ULONG ApiNumber,
|
||||
ULONG RequestLength
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrIdentifyAlertableThread(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrFreeCaptureBuffer(
|
||||
struct _CSR_CAPTURE_BUFFER *CaptureBuffer
|
||||
);
|
||||
|
||||
HANDLE
|
||||
NTAPI
|
||||
CsrGetProcessId(
|
||||
VOID
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrNewThread(VOID);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSetPriorityClass(
|
||||
HANDLE Process,
|
||||
PULONG PriorityClass
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrProbeForRead(
|
||||
_In_ PVOID Address,
|
||||
_In_ ULONG Length,
|
||||
_In_ ULONG Alignment
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrProbeForWrite(
|
||||
_In_ PVOID Address,
|
||||
_In_ ULONG Length,
|
||||
_In_ ULONG Alignment
|
||||
);
|
||||
|
||||
//
|
||||
// Debug Functions
|
||||
//
|
||||
|
||||
@@ -113,13 +113,6 @@ Author:
|
||||
#define MAXUSHORT 0xffff
|
||||
#define MAXULONG 0xffffffff
|
||||
|
||||
//
|
||||
// CSR Macros
|
||||
//
|
||||
#define CSR_MAKE_OPCODE(s,m) ((s) << 16) | (m)
|
||||
#define CSR_API_ID_FROM_OPCODE(n) ((ULONG)((USHORT)(n)))
|
||||
#define CSR_SERVER_ID_FROM_OPCODE(n) (ULONG)((n) >> 16)
|
||||
|
||||
//
|
||||
// Basic Types that aren't defined in User-Mode Headers
|
||||
//
|
||||
|
||||
@@ -20,23 +20,42 @@ extern "C" {
|
||||
#define ABE_BOTTOM 3
|
||||
#define ABS_AUTOHIDE 1
|
||||
#define ABS_ALWAYSONTOP 2
|
||||
#define SEE_MASK_CLASSNAME 1
|
||||
#define SEE_MASK_CLASSKEY 3
|
||||
#define SEE_MASK_IDLIST 4
|
||||
#define SEE_MASK_INVOKEIDLIST 12
|
||||
#define SEE_MASK_ICON 0x10
|
||||
#define SEE_MASK_HOTKEY 0x20
|
||||
#define SEE_MASK_NOCLOSEPROCESS 0x40
|
||||
#define SEE_MASK_CONNECTNETDRV 0x80
|
||||
|
||||
#define SEE_MASK_DEFAULT 0x00000000
|
||||
#define SEE_MASK_CLASSNAME 0x00000001
|
||||
#define SEE_MASK_CLASSKEY 0x00000003
|
||||
#define SEE_MASK_IDLIST 0x00000004
|
||||
#define SEE_MASK_INVOKEIDLIST 0x0000000C
|
||||
#define SEE_MASK_ICON 0x00000010
|
||||
#define SEE_MASK_HOTKEY 0x00000020
|
||||
#define SEE_MASK_NOCLOSEPROCESS 0x00000040
|
||||
#define SEE_MASK_CONNECTNETDRV 0x00000080
|
||||
#define SEE_MASK_NOASYNC 0x00000100
|
||||
#define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC
|
||||
#define SEE_MASK_DOENVSUBST 0x200
|
||||
#define SEE_MASK_FLAG_NO_UI 0x400
|
||||
#define SEE_MASK_NO_CONSOLE 0x8000
|
||||
#define SEE_MASK_UNICODE 0x10000
|
||||
#define SEE_MASK_ASYNCOK 0x100000
|
||||
#define SEE_MASK_HMONITOR 0x200000
|
||||
#define SEE_MASK_NOZONECHECKS 0x00800000
|
||||
#define SEE_MASK_DOENVSUBST 0x00000200
|
||||
#define SEE_MASK_FLAG_NO_UI 0x00000400
|
||||
#define SEE_MASK_UNICODE 0x00004000
|
||||
#define SEE_MASK_NO_CONSOLE 0x00008000
|
||||
/*
|
||||
* NOTE: The following three flags are undocumented and are not present in the
|
||||
* official Windows SDK. However they are used in shobjidl.idl to define some
|
||||
* CMIC_MASK_* flags, these ones being mentioned in the MSDN documentation of
|
||||
* the CMINVOKECOMMANDINFOEX structure.
|
||||
* I affect them this range of values which seems to be strangely empty. Of
|
||||
* course their values may differ from the real ones, however I have no way
|
||||
* of discovering them. If somebody else can verify them, it would be great.
|
||||
*/
|
||||
#define SEE_MASK_HASLINKNAME 0x00010000
|
||||
#define SEE_MASK_HASTITLE 0x00020000
|
||||
#define SEE_MASK_FLAG_SEPVDM 0x00040000
|
||||
/* END NOTE */
|
||||
#define SEE_MASK_ASYNCOK 0x00100000
|
||||
#define SEE_MASK_HMONITOR 0x00200000
|
||||
#define SEE_MASK_NOZONECHECKS 0x00800000
|
||||
#define SEE_MASK_NOQUERYCLASSSTORE 0x01000000
|
||||
#define SEE_MASK_WAITFORINPUTIDLE 0x02000000
|
||||
#define SEE_MASK_FLAG_LOG_USAGE 0x04000000
|
||||
|
||||
#define ABM_NEW 0
|
||||
#define ABM_REMOVE 1
|
||||
#define ABM_QUERYPOS 2
|
||||
|
||||
@@ -467,16 +467,23 @@ extern "C" {
|
||||
#define STREAM_MODIFIED_WHEN_READ 1
|
||||
#define STREAM_CONTAINS_SECURITY 2
|
||||
#define STREAM_CONTAINS_PROPERTIES 4
|
||||
#define STARTF_USESHOWWINDOW 1
|
||||
#define STARTF_USESIZE 2
|
||||
#define STARTF_USEPOSITION 4
|
||||
#define STARTF_USECOUNTCHARS 8
|
||||
#define STARTF_USEFILLATTRIBUTE 16
|
||||
#define STARTF_RUNFULLSCREEN 32
|
||||
#define STARTF_FORCEONFEEDBACK 64
|
||||
#define STARTF_FORCEOFFFEEDBACK 128
|
||||
#define STARTF_USESTDHANDLES 256
|
||||
#define STARTF_USEHOTKEY 512
|
||||
|
||||
#define STARTF_USESHOWWINDOW 0x00000001
|
||||
#define STARTF_USESIZE 0x00000002
|
||||
#define STARTF_USEPOSITION 0x00000004
|
||||
#define STARTF_USECOUNTCHARS 0x00000008
|
||||
#define STARTF_USEFILLATTRIBUTE 0x00000010
|
||||
#define STARTF_RUNFULLSCREEN 0x00000020
|
||||
#define STARTF_FORCEONFEEDBACK 0x00000040
|
||||
#define STARTF_FORCEOFFFEEDBACK 0x00000080
|
||||
#define STARTF_USESTDHANDLES 0x00000100
|
||||
#if (WINVER >= 0x400)
|
||||
#define STARTF_USEHOTKEY 0x00000200
|
||||
#define STARTF_TITLEISLINKNAME 0x00000800
|
||||
#define STARTF_TITLEISAPPID 0x00001000
|
||||
#define STARTF_PREVENTPINNING 0x00002000
|
||||
#endif /* (WINVER >= 0x400) */
|
||||
|
||||
#define TC_NORMAL 0
|
||||
#define TC_HARDERR 1
|
||||
#define TC_GP_TRAP 2
|
||||
|
||||
+200
-103
@@ -14,48 +14,131 @@ extern "C" {
|
||||
#pragma warning(disable:4820)
|
||||
#endif
|
||||
|
||||
#define FOREGROUND_BLUE 1
|
||||
#define FOREGROUND_GREEN 2
|
||||
#define FOREGROUND_RED 4
|
||||
#define FOREGROUND_INTENSITY 8
|
||||
#define BACKGROUND_BLUE 16
|
||||
#define BACKGROUND_GREEN 32
|
||||
#define BACKGROUND_RED 64
|
||||
#define BACKGROUND_INTENSITY 128
|
||||
#define CTRL_C_EVENT 0
|
||||
#define CTRL_BREAK_EVENT 1
|
||||
#define CTRL_CLOSE_EVENT 2
|
||||
#define CTRL_LOGOFF_EVENT 5
|
||||
/*
|
||||
* Special PID for parent process for AttachConsole API
|
||||
*/
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
#define ATTACH_PARENT_PROCESS ((DWORD)-1)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Console display modes
|
||||
*/
|
||||
#define CONSOLE_FULLSCREEN 1
|
||||
#define CONSOLE_FULLSCREEN_HARDWARE 2
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
#define CONSOLE_OVERSTRIKE 1
|
||||
#endif
|
||||
|
||||
#define CONSOLE_FULLSCREEN_MODE 1
|
||||
#define CONSOLE_WINDOWED_MODE 2
|
||||
|
||||
/*
|
||||
* Color attributes for text and screen background
|
||||
*/
|
||||
#define FOREGROUND_BLUE 0x0001
|
||||
#define FOREGROUND_GREEN 0x0002
|
||||
#define FOREGROUND_RED 0x0004
|
||||
#define FOREGROUND_INTENSITY 0x0008
|
||||
#define BACKGROUND_BLUE 0x0010
|
||||
#define BACKGROUND_GREEN 0x0020
|
||||
#define BACKGROUND_RED 0x0040
|
||||
#define BACKGROUND_INTENSITY 0x0080
|
||||
|
||||
#define COMMON_LVB_LEADING_BYTE 0x0100
|
||||
#define COMMON_LVB_TRAILING_BYTE 0x0200
|
||||
#define COMMON_LVB_GRID_HORIZONTAL 0x0400
|
||||
#define COMMON_LVB_GRID_LVERTICAL 0x0800
|
||||
#define COMMON_LVB_GRID_RVERTICAL 0x1000
|
||||
#define COMMON_LVB_REVERSE_VIDEO 0x4000
|
||||
#define COMMON_LVB_UNDERSCORE 0x8000
|
||||
|
||||
/*
|
||||
* Control handler codes
|
||||
*/
|
||||
#define CTRL_C_EVENT 0
|
||||
#define CTRL_BREAK_EVENT 1
|
||||
#define CTRL_CLOSE_EVENT 2
|
||||
#define CTRL_LOGOFF_EVENT 5
|
||||
#define CTRL_SHUTDOWN_EVENT 6
|
||||
#define ENABLE_LINE_INPUT 2
|
||||
#define ENABLE_ECHO_INPUT 4
|
||||
#define ENABLE_PROCESSED_INPUT 1
|
||||
#define ENABLE_WINDOW_INPUT 8
|
||||
#define ENABLE_MOUSE_INPUT 16
|
||||
#define ENABLE_PROCESSED_OUTPUT 1
|
||||
#define ENABLE_WRAP_AT_EOL_OUTPUT 2
|
||||
#define KEY_EVENT 1
|
||||
#define MOUSE_EVENT 2
|
||||
#define WINDOW_BUFFER_SIZE_EVENT 4
|
||||
#define MENU_EVENT 8
|
||||
#define FOCUS_EVENT 16
|
||||
#define CAPSLOCK_ON 128
|
||||
#define ENHANCED_KEY 256
|
||||
#define RIGHT_ALT_PRESSED 1
|
||||
#define LEFT_ALT_PRESSED 2
|
||||
#define RIGHT_CTRL_PRESSED 4
|
||||
#define LEFT_CTRL_PRESSED 8
|
||||
#define SHIFT_PRESSED 16
|
||||
#define NUMLOCK_ON 32
|
||||
#define SCROLLLOCK_ON 64
|
||||
#define FROM_LEFT_1ST_BUTTON_PRESSED 1
|
||||
#define RIGHTMOST_BUTTON_PRESSED 2
|
||||
#define FROM_LEFT_2ND_BUTTON_PRESSED 4
|
||||
#define FROM_LEFT_3RD_BUTTON_PRESSED 8
|
||||
#define FROM_LEFT_4TH_BUTTON_PRESSED 16
|
||||
#define MOUSE_MOVED 1
|
||||
#define DOUBLE_CLICK 2
|
||||
#define MOUSE_WHEELED 4
|
||||
|
||||
/*
|
||||
* Input mode flags
|
||||
*/
|
||||
#define ENABLE_PROCESSED_INPUT 0x0001
|
||||
#define ENABLE_LINE_INPUT 0x0002
|
||||
#define ENABLE_ECHO_INPUT 0x0004
|
||||
#define ENABLE_WINDOW_INPUT 0x0008
|
||||
#define ENABLE_MOUSE_INPUT 0x0010
|
||||
#define ENABLE_INSERT_MODE 0x0020
|
||||
#define ENABLE_QUICK_EDIT_MODE 0x0040
|
||||
#define ENABLE_EXTENDED_FLAGS 0x0080
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
#define ENABLE_AUTO_POSITION 0x0100
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Output mode flags
|
||||
*/
|
||||
#define ENABLE_PROCESSED_OUTPUT 0x0001
|
||||
#define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
|
||||
|
||||
/*
|
||||
* Console selection flags
|
||||
*/
|
||||
#define CONSOLE_NO_SELECTION 0x0000
|
||||
#define CONSOLE_SELECTION_IN_PROGRESS 0x0001
|
||||
#define CONSOLE_SELECTION_NOT_EMPTY 0x0002
|
||||
#define CONSOLE_MOUSE_SELECTION 0x0004
|
||||
#define CONSOLE_MOUSE_DOWN 0x0008
|
||||
|
||||
/*
|
||||
* History duplicate flags
|
||||
*/
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
#define HISTORY_NO_DUP_FLAG 0x0001
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Event types
|
||||
*/
|
||||
#define KEY_EVENT 0x0001
|
||||
#define MOUSE_EVENT 0x0002
|
||||
#define WINDOW_BUFFER_SIZE_EVENT 0x0004
|
||||
#define MENU_EVENT 0x0008
|
||||
#define FOCUS_EVENT 0x0010
|
||||
|
||||
/*
|
||||
* ControlKeyState flags
|
||||
*/
|
||||
#define RIGHT_ALT_PRESSED 0x0001
|
||||
#define LEFT_ALT_PRESSED 0x0002
|
||||
#define RIGHT_CTRL_PRESSED 0x0004
|
||||
#define LEFT_CTRL_PRESSED 0x0008
|
||||
#define SHIFT_PRESSED 0x0010
|
||||
#define NUMLOCK_ON 0x0020
|
||||
#define SCROLLLOCK_ON 0x0040
|
||||
#define CAPSLOCK_ON 0x0080
|
||||
#define ENHANCED_KEY 0x0100
|
||||
|
||||
/*
|
||||
* ButtonState flags
|
||||
*/
|
||||
#define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001
|
||||
#define RIGHTMOST_BUTTON_PRESSED 0x0002
|
||||
#define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004
|
||||
#define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008
|
||||
#define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010
|
||||
|
||||
/*
|
||||
* Mouse event flags
|
||||
*/
|
||||
#define MOUSE_MOVED 0x0001
|
||||
#define DOUBLE_CLICK 0x0002
|
||||
#define MOUSE_WHEELED 0x0004
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
#define MOUSE_HWHEELED 0x0008
|
||||
#endif
|
||||
|
||||
typedef struct _CONSOLE_READCONSOLE_CONTROL {
|
||||
ULONG nLength;
|
||||
@@ -65,53 +148,53 @@ typedef struct _CONSOLE_READCONSOLE_CONTROL {
|
||||
} CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
|
||||
|
||||
typedef struct _CHAR_INFO {
|
||||
union {
|
||||
WCHAR UnicodeChar;
|
||||
CHAR AsciiChar;
|
||||
} Char;
|
||||
WORD Attributes;
|
||||
union {
|
||||
WCHAR UnicodeChar;
|
||||
CHAR AsciiChar;
|
||||
} Char;
|
||||
WORD Attributes;
|
||||
} CHAR_INFO,*PCHAR_INFO;
|
||||
typedef struct _SMALL_RECT {
|
||||
SHORT Left;
|
||||
SHORT Top;
|
||||
SHORT Right;
|
||||
SHORT Bottom;
|
||||
SHORT Left;
|
||||
SHORT Top;
|
||||
SHORT Right;
|
||||
SHORT Bottom;
|
||||
} SMALL_RECT,*PSMALL_RECT;
|
||||
typedef struct _CONSOLE_CURSOR_INFO {
|
||||
DWORD dwSize;
|
||||
BOOL bVisible;
|
||||
DWORD dwSize;
|
||||
BOOL bVisible;
|
||||
} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
|
||||
typedef struct _COORD {
|
||||
SHORT X;
|
||||
SHORT Y;
|
||||
SHORT X;
|
||||
SHORT Y;
|
||||
} COORD, *PCOORD;
|
||||
typedef struct _CONSOLE_SELECTION_INFO {
|
||||
DWORD dwFlags;
|
||||
COORD dwSelectionAnchor;
|
||||
SMALL_RECT srSelection;
|
||||
DWORD dwFlags;
|
||||
COORD dwSelectionAnchor;
|
||||
SMALL_RECT srSelection;
|
||||
} CONSOLE_SELECTION_INFO, *PCONSOLE_SELECTION_INFO;
|
||||
typedef struct _CONSOLE_FONT_INFO {
|
||||
DWORD nFont;
|
||||
COORD dwFontSize;
|
||||
DWORD nFont;
|
||||
COORD dwFontSize;
|
||||
} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
|
||||
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
|
||||
COORD dwSize;
|
||||
COORD dwCursorPosition;
|
||||
WORD wAttributes;
|
||||
SMALL_RECT srWindow;
|
||||
COORD dwMaximumWindowSize;
|
||||
COORD dwSize;
|
||||
COORD dwCursorPosition;
|
||||
WORD wAttributes;
|
||||
SMALL_RECT srWindow;
|
||||
COORD dwMaximumWindowSize;
|
||||
} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
|
||||
typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(_In_ DWORD);
|
||||
typedef struct _KEY_EVENT_RECORD {
|
||||
BOOL bKeyDown;
|
||||
WORD wRepeatCount;
|
||||
WORD wVirtualKeyCode;
|
||||
WORD wVirtualScanCode;
|
||||
union {
|
||||
WCHAR UnicodeChar;
|
||||
CHAR AsciiChar;
|
||||
} uChar;
|
||||
DWORD dwControlKeyState;
|
||||
BOOL bKeyDown;
|
||||
WORD wRepeatCount;
|
||||
WORD wVirtualKeyCode;
|
||||
WORD wVirtualScanCode;
|
||||
union {
|
||||
WCHAR UnicodeChar;
|
||||
CHAR AsciiChar;
|
||||
} uChar;
|
||||
DWORD dwControlKeyState;
|
||||
}
|
||||
#ifdef __GNUC__
|
||||
/* gcc's alignment is not what win32 expects */
|
||||
@@ -119,29 +202,26 @@ typedef struct _KEY_EVENT_RECORD {
|
||||
#endif
|
||||
KEY_EVENT_RECORD;
|
||||
typedef struct _MOUSE_EVENT_RECORD {
|
||||
COORD dwMousePosition;
|
||||
DWORD dwButtonState;
|
||||
DWORD dwControlKeyState;
|
||||
DWORD dwEventFlags;
|
||||
COORD dwMousePosition;
|
||||
DWORD dwButtonState;
|
||||
DWORD dwControlKeyState;
|
||||
DWORD dwEventFlags;
|
||||
} MOUSE_EVENT_RECORD;
|
||||
typedef struct _WINDOW_BUFFER_SIZE_RECORD { COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD;
|
||||
typedef struct _MENU_EVENT_RECORD { UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
|
||||
typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD;
|
||||
typedef struct _INPUT_RECORD {
|
||||
WORD EventType;
|
||||
union {
|
||||
KEY_EVENT_RECORD KeyEvent;
|
||||
MOUSE_EVENT_RECORD MouseEvent;
|
||||
WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
|
||||
MENU_EVENT_RECORD MenuEvent;
|
||||
FOCUS_EVENT_RECORD FocusEvent;
|
||||
} Event;
|
||||
WORD EventType;
|
||||
union {
|
||||
KEY_EVENT_RECORD KeyEvent;
|
||||
MOUSE_EVENT_RECORD MouseEvent;
|
||||
WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
|
||||
MENU_EVENT_RECORD MenuEvent;
|
||||
FOCUS_EVENT_RECORD FocusEvent;
|
||||
} Event;
|
||||
} INPUT_RECORD,*PINPUT_RECORD;
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
#define HISTORY_NO_DUP_FLAG 0x1
|
||||
#define CONSOLE_OVERSTRIKE 0x1
|
||||
|
||||
typedef struct _CONSOLE_HISTORY_INFO {
|
||||
UINT cbSize;
|
||||
UINT HistoryBufferSize;
|
||||
@@ -172,10 +252,11 @@ typedef struct _CONSOLE_FONT_INFOEX {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
BOOL WINAPI AllocConsole(void);
|
||||
BOOL WINAPI AllocConsole(VOID);
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
#define ATTACH_PARENT_PROCESS (DWORD)-1
|
||||
BOOL WINAPI AttachConsole(_In_ DWORD);
|
||||
|
||||
BOOL WINAPI AddConsoleAliasA(_In_ LPCSTR, _In_ LPCSTR, _In_ LPCSTR);
|
||||
BOOL WINAPI AddConsoleAliasW(_In_ LPCWSTR, _In_ LPCWSTR, _In_ LPCWSTR);
|
||||
|
||||
@@ -209,20 +290,36 @@ GetConsoleAliasesW(
|
||||
_In_ DWORD AliasBufferLength,
|
||||
_In_ LPWSTR ExeName);
|
||||
|
||||
DWORD WINAPI GetConsoleAliasesLengthA(_In_ LPSTR);
|
||||
DWORD WINAPI GetConsoleAliasesLengthW(_In_ LPWSTR);
|
||||
DWORD WINAPI GetConsoleAliasesLengthA(_In_ LPSTR ExeName);
|
||||
DWORD WINAPI GetConsoleAliasesLengthW(_In_ LPWSTR ExeName);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasExesA(
|
||||
_Out_writes_(ExeNameBufferLength) LPSTR ExeNameBuffer,
|
||||
_In_ DWORD ExeNameBufferLength);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
GetConsoleAliasExesW(
|
||||
_Out_writes_(ExeNameBufferLength) LPWSTR ExeNameBuffer,
|
||||
_In_ DWORD ExeNameBufferLength);
|
||||
|
||||
DWORD WINAPI GetConsoleAliasExesLengthA(VOID);
|
||||
DWORD WINAPI GetConsoleAliasExesLengthW(VOID);
|
||||
#endif
|
||||
|
||||
HANDLE WINAPI CreateConsoleScreenBuffer(_In_ DWORD, _In_ DWORD, _In_opt_ CONST SECURITY_ATTRIBUTES*, _In_ DWORD, _Reserved_ LPVOID);
|
||||
BOOL WINAPI FillConsoleOutputAttribute(_In_ HANDLE, _In_ WORD, _In_ DWORD, _In_ COORD, _Out_ PDWORD);
|
||||
BOOL WINAPI FillConsoleOutputCharacterA(_In_ HANDLE, _In_ CHAR, _In_ DWORD, _In_ COORD, _Out_ PDWORD);
|
||||
BOOL WINAPI FillConsoleOutputCharacterW(_In_ HANDLE, _In_ WCHAR, _In_ DWORD, _In_ COORD, _Out_ PDWORD);
|
||||
BOOL WINAPI FlushConsoleInputBuffer(_In_ HANDLE);
|
||||
BOOL WINAPI FreeConsole(void);
|
||||
BOOL WINAPI FreeConsole(VOID);
|
||||
BOOL WINAPI GenerateConsoleCtrlEvent(_In_ DWORD, _In_ DWORD);
|
||||
UINT WINAPI GetConsoleCP(void);
|
||||
UINT WINAPI GetConsoleCP(VOID);
|
||||
BOOL WINAPI GetConsoleCursorInfo(_In_ HANDLE, _Out_ PCONSOLE_CURSOR_INFO);
|
||||
BOOL WINAPI GetConsoleMode(HANDLE,PDWORD);
|
||||
UINT WINAPI GetConsoleOutputCP(void);
|
||||
UINT WINAPI GetConsoleOutputCP(VOID);
|
||||
BOOL WINAPI GetConsoleScreenBufferInfo(_In_ HANDLE, _Out_ PCONSOLE_SCREEN_BUFFER_INFO);
|
||||
|
||||
DWORD
|
||||
@@ -238,8 +335,8 @@ GetConsoleTitleW(
|
||||
_In_ DWORD nSize);
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0500)
|
||||
HWND WINAPI GetConsoleWindow(void);
|
||||
WINBASEAPI BOOL APIENTRY GetConsoleDisplayMode(_Out_ LPDWORD lpModeFlags);
|
||||
HWND WINAPI GetConsoleWindow(VOID);
|
||||
BOOL APIENTRY GetConsoleDisplayMode(_Out_ LPDWORD lpModeFlags);
|
||||
BOOL APIENTRY SetConsoleDisplayMode(_In_ HANDLE hConsoleOutput, _In_ DWORD dwFlags, _Out_opt_ PCOORD lpNewScreenBufferDimensions);
|
||||
#endif
|
||||
COORD WINAPI GetLargestConsoleWindowSize(_In_ HANDLE);
|
||||
@@ -383,17 +480,14 @@ WriteConsoleOutputCharacterW(
|
||||
_In_ COORD dwWriteCoord,
|
||||
_Out_ LPDWORD lpNumberOfCharsWritten);
|
||||
|
||||
#define CONSOLE_FULLSCREEN 1
|
||||
#define CONSOLE_FULLSCREEN_HARDWARE 2
|
||||
#define CONSOLE_FULLSCREEN_MODE 1
|
||||
#define CONSOLE_WINDOWED_MODE 2
|
||||
|
||||
#ifdef UNICODE
|
||||
#define FillConsoleOutputCharacter FillConsoleOutputCharacterW
|
||||
#define AddConsoleAlias AddConsoleAliasW
|
||||
#define GetConsoleAlias GetConsoleAliasW
|
||||
#define GetConsoleAliases GetConsoleAliasesW
|
||||
#define GetConsoleAliasesLength GetConsoleAliasesLengthW
|
||||
#define GetConsoleAliasExes GetConsoleAliasExesW
|
||||
#define GetConsoleAliasExesLength GetConsoleAliasExesLengthW
|
||||
#define GetConsoleTitle GetConsoleTitleW
|
||||
#define PeekConsoleInput PeekConsoleInputW
|
||||
#define ReadConsole ReadConsoleW
|
||||
@@ -405,13 +499,15 @@ WriteConsoleOutputCharacterW(
|
||||
#define WriteConsole WriteConsoleW
|
||||
#define WriteConsoleInput WriteConsoleInputW
|
||||
#define WriteConsoleOutput WriteConsoleOutputW
|
||||
#define FillConsoleOutputCharacter FillConsoleOutputCharacterW
|
||||
#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
|
||||
#else
|
||||
#define AddConsoleAlias AddConsoleAliasA
|
||||
#define FillConsoleOutputCharacter FillConsoleOutputCharacterA
|
||||
#define GetConsoleAlias GetConsoleAliasA
|
||||
#define GetConsoleAliases GetConsoleAliasesA
|
||||
#define GetConsoleAliasesLength GetConsoleAliasesLengthA
|
||||
#define GetConsoleAliasExes GetConsoleAliasExesA
|
||||
#define GetConsoleAliasExesLength GetConsoleAliasExesLengthA
|
||||
#define GetConsoleTitle GetConsoleTitleA
|
||||
#define PeekConsoleInput PeekConsoleInputA
|
||||
#define ReadConsole ReadConsoleA
|
||||
@@ -423,6 +519,7 @@ WriteConsoleOutputCharacterW(
|
||||
#define WriteConsole WriteConsoleA
|
||||
#define WriteConsoleInput WriteConsoleInputA
|
||||
#define WriteConsoleOutput WriteConsoleOutputA
|
||||
#define FillConsoleOutputCharacter FillConsoleOutputCharacterA
|
||||
#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1833,17 +1833,24 @@ extern "C" {
|
||||
#define WM_APP 32768
|
||||
#define WM_GETTITLEBARINFOEX 0x033F
|
||||
|
||||
#define XBUTTON1 0x0001
|
||||
#define XBUTTON2 0x0002
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0400)
|
||||
#define WHEEL_DELTA 120
|
||||
#define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD (wparam))
|
||||
#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
|
||||
#define WHEEL_PAGESCROLL UINT_MAX
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0500)
|
||||
#define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam))
|
||||
#define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam))
|
||||
#define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
|
||||
#define XBUTTON1 0x0001
|
||||
#define XBUTTON2 0x0002
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
#define WM_THEMECHANGED 794
|
||||
#endif
|
||||
|
||||
#define BM_CLICK 245
|
||||
#define BM_GETCHECK 240
|
||||
#define BM_GETIMAGE 246
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Client/Server Runtime SubSystem
|
||||
* FILE: include/reactos/subsys/csr/csr.h
|
||||
* PURPOSE: Public definitions for CSR Clients
|
||||
* PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
|
||||
* Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#ifndef _CSR_H
|
||||
#define _CSR_H
|
||||
|
||||
#include "csrmsg.h"
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientConnectToServer(IN PWSTR ObjectDirectory,
|
||||
IN ULONG ServerId,
|
||||
IN PVOID ConnectionInfo,
|
||||
IN OUT PULONG ConnectionInfoSize,
|
||||
OUT PBOOLEAN ServerToServerCall);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL,
|
||||
IN CSR_API_NUMBER ApiNumber,
|
||||
IN ULONG DataLength);
|
||||
|
||||
PCSR_CAPTURE_BUFFER
|
||||
NTAPI
|
||||
CsrAllocateCaptureBuffer(IN ULONG ArgumentCount,
|
||||
IN ULONG BufferSize);
|
||||
|
||||
ULONG
|
||||
NTAPI
|
||||
CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN ULONG MessageLength,
|
||||
OUT PVOID *CapturedData);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN PVOID MessageBuffer OPTIONAL,
|
||||
IN ULONG MessageLength,
|
||||
OUT PVOID *CapturedData);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN LPSTR String OPTIONAL,
|
||||
IN ULONG StringLength,
|
||||
IN ULONG MaximumLength,
|
||||
OUT PANSI_STRING CapturedString);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer);
|
||||
|
||||
PLARGE_INTEGER
|
||||
NTAPI
|
||||
CsrCaptureTimeout(IN ULONG Milliseconds,
|
||||
OUT PLARGE_INTEGER Timeout);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrProbeForRead(IN PVOID Address,
|
||||
IN ULONG Length,
|
||||
IN ULONG Alignment);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrProbeForWrite(IN PVOID Address,
|
||||
IN ULONG Length,
|
||||
IN ULONG Alignment);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrIdentifyAlertableThread(VOID);
|
||||
|
||||
HANDLE
|
||||
NTAPI
|
||||
CsrGetProcessId(VOID);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrNewThread(VOID);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSetPriorityClass(IN HANDLE Process,
|
||||
IN OUT PULONG PriorityClass);
|
||||
|
||||
#endif // _CSR_H
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Client/Server Runtime SubSystem
|
||||
* FILE: include/reactos/subsys/csr/csrmsg.h
|
||||
* PURPOSE: Public definitions for communication
|
||||
* between CSR Clients and Servers
|
||||
* PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
|
||||
* Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#ifndef _CSRMSG_H
|
||||
#define _CSRMSG_H
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#define CSR_PORT_NAME L"ApiPort" // CSR_API_PORT_NAME
|
||||
|
||||
|
||||
#define CSRSRV_SERVERDLL_INDEX 0
|
||||
#define CSRSRV_FIRST_API_NUMBER 0
|
||||
|
||||
typedef enum _CSRSRV_API_NUMBER
|
||||
{
|
||||
CsrpClientConnect = CSRSRV_FIRST_API_NUMBER,
|
||||
CsrpThreadConnect,
|
||||
CsrpProfileControl,
|
||||
CsrpIdentifyAlertable,
|
||||
CsrpSetPriorityClass,
|
||||
|
||||
CsrpMaxApiNumber
|
||||
} CSRSRV_API_NUMBER, *PCSRSRV_API_NUMBER;
|
||||
|
||||
|
||||
/*
|
||||
typedef struct _CSR_API_NUMBER
|
||||
{
|
||||
WORD Index;
|
||||
WORD Subsystem;
|
||||
} CSR_API_NUMBER, *PCSR_API_NUMBER;
|
||||
*/
|
||||
typedef ULONG CSR_API_NUMBER;
|
||||
|
||||
#define CSR_CREATE_API_NUMBER(ServerId, ApiId) \
|
||||
(CSR_API_NUMBER)(((ServerId) << 16) | (ApiId))
|
||||
|
||||
#define CSR_API_NUMBER_TO_SERVER_ID(ApiNumber) \
|
||||
(ULONG)((ULONG)(ApiNumber) >> 16)
|
||||
|
||||
#define CSR_API_NUMBER_TO_API_ID(ApiNumber) \
|
||||
(ULONG)((ULONG)(ApiNumber) & 0xFFFF)
|
||||
|
||||
|
||||
typedef struct _CSR_CONNECTION_INFO
|
||||
{
|
||||
ULONG Version;
|
||||
ULONG Unknown;
|
||||
HANDLE ObjectDirectory;
|
||||
PVOID SharedSectionBase;
|
||||
PVOID SharedSectionHeap;
|
||||
PVOID SharedSectionData;
|
||||
ULONG DebugFlags;
|
||||
ULONG Unknown2[3];
|
||||
HANDLE ProcessId;
|
||||
} CSR_CONNECTION_INFO, *PCSR_CONNECTION_INFO;
|
||||
|
||||
// We must have a size at most equal to the maximum acceptable LPC data size.
|
||||
C_ASSERT(sizeof(CSR_CONNECTION_INFO) <= LPC_MAX_DATA_LENGTH);
|
||||
|
||||
|
||||
typedef struct _CSR_IDENTIFY_ALTERTABLE_THREAD
|
||||
{
|
||||
CLIENT_ID Cid;
|
||||
} CSR_IDENTIFY_ALTERTABLE_THREAD, *PCSR_IDENTIFY_ALTERTABLE_THREAD;
|
||||
|
||||
typedef struct _CSR_SET_PRIORITY_CLASS
|
||||
{
|
||||
HANDLE hProcess;
|
||||
ULONG PriorityClass;
|
||||
} CSR_SET_PRIORITY_CLASS, *PCSR_SET_PRIORITY_CLASS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE UniqueThread;
|
||||
CLIENT_ID Cid;
|
||||
} CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
|
||||
|
||||
typedef struct _CSR_CLIENT_CONNECT
|
||||
{
|
||||
ULONG ServerId;
|
||||
PVOID ConnectionInfo;
|
||||
ULONG ConnectionInfoSize;
|
||||
} CSR_CLIENT_CONNECT, *PCSR_CLIENT_CONNECT;
|
||||
|
||||
typedef struct _CSR_CAPTURE_BUFFER
|
||||
{
|
||||
ULONG Size;
|
||||
struct _CSR_CAPTURE_BUFFER *PreviousCaptureBuffer;
|
||||
ULONG PointerCount;
|
||||
PVOID BufferEnd;
|
||||
ULONG_PTR PointerOffsetsArray[ANYSIZE_ARRAY];
|
||||
} CSR_CAPTURE_BUFFER, *PCSR_CAPTURE_BUFFER;
|
||||
|
||||
|
||||
typedef struct _CSR_API_MESSAGE
|
||||
{
|
||||
PORT_MESSAGE Header;
|
||||
union
|
||||
{
|
||||
CSR_CONNECTION_INFO ConnectionInfo; // Uniquely used in CSRSRV for internal signaling (opening a new connection).
|
||||
struct
|
||||
{
|
||||
PCSR_CAPTURE_BUFFER CsrCaptureData;
|
||||
CSR_API_NUMBER ApiNumber;
|
||||
NTSTATUS Status; // ReturnValue;
|
||||
ULONG Reserved;
|
||||
union
|
||||
{
|
||||
CSR_CLIENT_CONNECT CsrClientConnect;
|
||||
CSR_SET_PRIORITY_CLASS SetPriorityClass;
|
||||
CSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
|
||||
|
||||
//
|
||||
// This padding is used to make the CSR_API_MESSAGE structure
|
||||
// large enough to hold full other API_MESSAGE-type structures
|
||||
// used by other servers. These latter structures's sizes must
|
||||
// be checked against the size of CSR_API_MESSAGE by using the
|
||||
// CHECK_API_MSG_SIZE macro defined below.
|
||||
//
|
||||
// This is required because LPC will use this generic structure
|
||||
// for communicating all the different servers' messages, and
|
||||
// thus we avoid possible buffer overflows with this method.
|
||||
// The problems there are, that we have to manually adjust the
|
||||
// size of the padding to hope that all the servers' messaging
|
||||
// structures will hold in it, or, that we have to be careful
|
||||
// to not define too big messaging structures for the servers.
|
||||
//
|
||||
// Finally, the overall message structure size must be at most
|
||||
// equal to the maximum acceptable LPC message size.
|
||||
//
|
||||
ULONG_PTR Padding[35];
|
||||
} Data;
|
||||
};
|
||||
};
|
||||
} CSR_API_MESSAGE, *PCSR_API_MESSAGE;
|
||||
|
||||
// We must have a size at most equal to the maximum acceptable LPC message size.
|
||||
C_ASSERT(sizeof(CSR_API_MESSAGE) <= LPC_MAX_MESSAGE_LENGTH);
|
||||
|
||||
// Macro to check that the total size of servers' message structures
|
||||
// are at most equal to the size of the CSR_API_MESSAGE structure.
|
||||
#define CHECK_API_MSG_SIZE(type) C_ASSERT(sizeof(type) <= sizeof(CSR_API_MESSAGE))
|
||||
|
||||
#endif // _CSRMSG_H
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,416 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Client/Server Runtime SubSystem
|
||||
* FILE: include/reactos/subsys/csr/csrsrv.h
|
||||
* PURPOSE: Public definitions for CSR Servers
|
||||
* PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
|
||||
* Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#ifndef _CSRSRV_H
|
||||
#define _CSRSRV_H
|
||||
|
||||
#include "csrmsg.h"
|
||||
|
||||
|
||||
/* TYPES **********************************************************************/
|
||||
|
||||
// Used in ntdll/csr/connect.c
|
||||
#define CSR_CSRSS_SECTION_SIZE 65536
|
||||
|
||||
typedef struct _CSR_NT_SESSION
|
||||
{
|
||||
ULONG ReferenceCount;
|
||||
LIST_ENTRY SessionLink;
|
||||
ULONG SessionId;
|
||||
} CSR_NT_SESSION, *PCSR_NT_SESSION;
|
||||
|
||||
typedef struct _CSR_PROCESS
|
||||
{
|
||||
CLIENT_ID ClientId;
|
||||
LIST_ENTRY ListLink;
|
||||
LIST_ENTRY ThreadList;
|
||||
PCSR_NT_SESSION NtSession;
|
||||
ULONG ExpectedVersion;
|
||||
HANDLE ClientPort;
|
||||
ULONG_PTR ClientViewBase;
|
||||
ULONG_PTR ClientViewBounds;
|
||||
HANDLE ProcessHandle;
|
||||
ULONG SequenceNumber;
|
||||
ULONG Flags;
|
||||
ULONG DebugFlags;
|
||||
CLIENT_ID DebugCid;
|
||||
ULONG ReferenceCount;
|
||||
ULONG ProcessGroupId;
|
||||
ULONG ProcessGroupSequence;
|
||||
ULONG fVDM;
|
||||
ULONG ThreadCount;
|
||||
ULONG PriorityClass;
|
||||
ULONG Reserved;
|
||||
ULONG ShutdownLevel;
|
||||
ULONG ShutdownFlags;
|
||||
PVOID ServerData[ANYSIZE_ARRAY]; // One structure per CSR server.
|
||||
} CSR_PROCESS, *PCSR_PROCESS;
|
||||
|
||||
typedef struct _CSR_THREAD
|
||||
{
|
||||
LARGE_INTEGER CreateTime;
|
||||
LIST_ENTRY Link;
|
||||
LIST_ENTRY HashLinks;
|
||||
CLIENT_ID ClientId;
|
||||
PCSR_PROCESS Process;
|
||||
struct _CSR_WAIT_BLOCK *WaitBlock;
|
||||
HANDLE ThreadHandle;
|
||||
ULONG Flags;
|
||||
ULONG ReferenceCount;
|
||||
ULONG ImpersonationCount;
|
||||
} CSR_THREAD, *PCSR_THREAD;
|
||||
|
||||
#define CsrGetClientThread() \
|
||||
((PCSR_THREAD)(NtCurrentTeb()->CsrClientThread))
|
||||
|
||||
|
||||
/* ENUMERATIONS ***************************************************************/
|
||||
|
||||
typedef enum _CSR_PROCESS_FLAGS
|
||||
{
|
||||
CsrProcessTerminating = 0x1,
|
||||
CsrProcessSkipShutdown = 0x2,
|
||||
CsrProcessNormalPriority = 0x10,
|
||||
CsrProcessIdlePriority = 0x20,
|
||||
CsrProcessHighPriority = 0x40,
|
||||
CsrProcessRealtimePriority = 0x80,
|
||||
CsrProcessCreateNewGroup = 0x100,
|
||||
CsrProcessTerminated = 0x200,
|
||||
CsrProcessLastThreadTerminated = 0x400,
|
||||
CsrProcessIsConsoleApp = 0x800
|
||||
} CSR_PROCESS_FLAGS, *PCSR_PROCESS_FLAGS;
|
||||
|
||||
#define CsrProcessPriorityFlags (CsrProcessNormalPriority | \
|
||||
CsrProcessIdlePriority | \
|
||||
CsrProcessHighPriority | \
|
||||
CsrProcessRealtimePriority)
|
||||
|
||||
typedef enum _CSR_THREAD_FLAGS
|
||||
{
|
||||
CsrThreadAlertable = 0x1,
|
||||
CsrThreadInTermination = 0x2,
|
||||
CsrThreadTerminated = 0x4,
|
||||
CsrThreadIsServerThread = 0x10
|
||||
} CSR_THREAD_FLAGS, *PCSR_THREAD_FLAGS;
|
||||
|
||||
typedef enum _SHUTDOWN_RESULT
|
||||
{
|
||||
CsrShutdownCsrProcess = 1,
|
||||
CsrShutdownNonCsrProcess,
|
||||
CsrShutdownCancelled
|
||||
} SHUTDOWN_RESULT, *PSHUTDOWN_RESULT;
|
||||
|
||||
typedef enum _CSR_SHUTDOWN_FLAGS
|
||||
{
|
||||
CsrShutdownSystem = 4,
|
||||
CsrShutdownOther = 8
|
||||
} CSR_SHUTDOWN_FLAGS, *PCSR_SHUTDOWN_FLAGS;
|
||||
|
||||
typedef enum _CSR_DEBUG_FLAGS
|
||||
{
|
||||
CsrDebugOnlyThisProcess = 1,
|
||||
CsrDebugProcessChildren = 2
|
||||
} CSR_PROCESS_DEBUG_FLAGS, *PCSR_PROCESS_DEBUG_FLAGS;
|
||||
|
||||
typedef enum _CSR_REPLY_CODE
|
||||
{
|
||||
CsrReplyImmediately = 0,
|
||||
CsrReplyPending = 1,
|
||||
CsrReplyDeadClient = 2,
|
||||
CsrReplyAlreadySent = 3
|
||||
} CSR_REPLY_CODE, *PCSR_REPLY_CODE;
|
||||
|
||||
|
||||
/* FUNCTION TYPES AND STRUCTURES **********************************************/
|
||||
|
||||
/*
|
||||
* Wait block
|
||||
*/
|
||||
typedef
|
||||
BOOLEAN
|
||||
(*CSR_WAIT_FUNCTION)(
|
||||
IN PLIST_ENTRY WaitList,
|
||||
IN PCSR_THREAD WaitThread,
|
||||
IN PCSR_API_MESSAGE WaitApiMessage,
|
||||
IN PVOID WaitContext,
|
||||
IN PVOID WaitArgument1,
|
||||
IN PVOID WaitArgument2,
|
||||
IN ULONG WaitFlags
|
||||
);
|
||||
|
||||
typedef struct _CSR_WAIT_BLOCK
|
||||
{
|
||||
ULONG Size; // Size of the wait block (variable-sized)
|
||||
LIST_ENTRY WaitList;
|
||||
LIST_ENTRY UserWaitList;
|
||||
PVOID WaitContext;
|
||||
PCSR_THREAD WaitThread;
|
||||
CSR_WAIT_FUNCTION WaitFunction;
|
||||
CSR_API_MESSAGE WaitApiMessage; // Variable-sized CSR API message
|
||||
} CSR_WAIT_BLOCK, *PCSR_WAIT_BLOCK;
|
||||
|
||||
|
||||
/*
|
||||
* Server DLL structure
|
||||
*/
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI *PCSR_API_ROUTINE)(
|
||||
IN OUT PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PCSR_REPLY_CODE ReplyCode OPTIONAL
|
||||
);
|
||||
|
||||
#define CSR_API(n) \
|
||||
NTSTATUS NTAPI n(IN OUT PCSR_API_MESSAGE ApiMessage, \
|
||||
IN OUT PCSR_REPLY_CODE ReplyCode OPTIONAL)
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI *PCSR_CONNECT_CALLBACK)(
|
||||
IN PCSR_PROCESS CsrProcess,
|
||||
IN OUT PVOID ConnectionInfo,
|
||||
IN OUT PULONG ConnectionInfoLength
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(NTAPI *PCSR_DISCONNECT_CALLBACK)(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI *PCSR_NEWPROCESS_CALLBACK)(
|
||||
IN PCSR_PROCESS Parent,
|
||||
IN PCSR_PROCESS CsrProcess
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(NTAPI *PCSR_HARDERROR_CALLBACK)(
|
||||
IN PCSR_THREAD CsrThread,
|
||||
IN PHARDERROR_MSG HardErrorMessage
|
||||
);
|
||||
|
||||
typedef
|
||||
ULONG
|
||||
(NTAPI *PCSR_SHUTDOWNPROCESS_CALLBACK)(
|
||||
IN PCSR_PROCESS CsrProcess,
|
||||
IN ULONG Flags,
|
||||
IN BOOLEAN FirstPhase
|
||||
);
|
||||
|
||||
// See http://redplait.blogspot.fr/2011/07/csrserverdll.html
|
||||
typedef struct _CSR_SERVER_DLL
|
||||
{
|
||||
ULONG Length;
|
||||
HANDLE Event;
|
||||
ANSI_STRING Name;
|
||||
HANDLE ServerHandle;
|
||||
ULONG ServerId;
|
||||
ULONG Unknown;
|
||||
ULONG ApiBase;
|
||||
ULONG HighestApiSupported;
|
||||
PCSR_API_ROUTINE *DispatchTable;
|
||||
PBOOLEAN ValidTable; // Table of booleans which describe whether or not a server function call is valid when it is called via CsrCallServerFromServer.
|
||||
PCHAR *NameTable;
|
||||
ULONG SizeOfProcessData;
|
||||
PCSR_CONNECT_CALLBACK ConnectCallback;
|
||||
PCSR_DISCONNECT_CALLBACK DisconnectCallback;
|
||||
PCSR_HARDERROR_CALLBACK HardErrorCallback;
|
||||
PVOID SharedSection;
|
||||
PCSR_NEWPROCESS_CALLBACK NewProcessCallback;
|
||||
PCSR_SHUTDOWNPROCESS_CALLBACK ShutdownProcessCallback;
|
||||
ULONG Unknown2[3];
|
||||
} CSR_SERVER_DLL, *PCSR_SERVER_DLL;
|
||||
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(NTAPI *PCSR_SERVER_DLL_INIT_CALLBACK)(IN PCSR_SERVER_DLL LoadedServerDll);
|
||||
|
||||
#define CSR_SERVER_DLL_INIT(n) \
|
||||
NTSTATUS NTAPI n(IN PCSR_SERVER_DLL LoadedServerDll)
|
||||
|
||||
|
||||
/* PROTOTYPES ****************************************************************/
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrServerInitialization(IN ULONG ArgumentCount,
|
||||
IN PCHAR Arguments[]);
|
||||
|
||||
PCSR_THREAD
|
||||
NTAPI
|
||||
CsrAddStaticServerThread(IN HANDLE hThread,
|
||||
IN PCLIENT_ID ClientId,
|
||||
IN ULONG ThreadFlags);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCallServerFromServer(IN PCSR_API_MESSAGE ReceiveMsg,
|
||||
IN OUT PCSR_API_MESSAGE ReplyMsg);
|
||||
|
||||
PCSR_THREAD
|
||||
NTAPI
|
||||
CsrConnectToUser(VOID);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCreateProcess(IN HANDLE hProcess,
|
||||
IN HANDLE hThread,
|
||||
IN PCLIENT_ID ClientId,
|
||||
IN PCSR_NT_SESSION NtSession,
|
||||
IN ULONG Flags,
|
||||
IN PCLIENT_ID DebugCid);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCreateRemoteThread(IN HANDLE hThread,
|
||||
IN PCLIENT_ID ClientId);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCreateThread(IN PCSR_PROCESS CsrProcess,
|
||||
IN HANDLE hThread,
|
||||
IN PCLIENT_ID ClientId,
|
||||
IN BOOLEAN HaveClient);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrCreateWait(IN PLIST_ENTRY WaitList,
|
||||
IN CSR_WAIT_FUNCTION WaitFunction,
|
||||
IN PCSR_THREAD CsrWaitThread,
|
||||
IN OUT PCSR_API_MESSAGE WaitApiMessage,
|
||||
IN PVOID WaitContext,
|
||||
IN PLIST_ENTRY UserWaitList OPTIONAL);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrDebugProcess(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrDebugProcessStop(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrDereferenceProcess(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrDereferenceThread(IN PCSR_THREAD CsrThread);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrDereferenceWait(IN PLIST_ENTRY WaitList);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrDestroyProcess(IN PCLIENT_ID Cid,
|
||||
IN NTSTATUS ExitStatus);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrDestroyThread(IN PCLIENT_ID Cid);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrExecServerThread(IN PVOID ThreadHandler,
|
||||
IN ULONG Flags);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrGetProcessLuid(IN HANDLE hProcess OPTIONAL,
|
||||
OUT PLUID Luid);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrImpersonateClient(IN PCSR_THREAD CsrThread);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrLockProcessByClientId(IN HANDLE Pid,
|
||||
OUT PCSR_PROCESS *CsrProcess OPTIONAL);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrLockThreadByClientId(IN HANDLE Tid,
|
||||
OUT PCSR_THREAD *CsrThread);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrMoveSatisfiedWait(IN PLIST_ENTRY NewEntry,
|
||||
IN PLIST_ENTRY WaitList);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrNotifyWait(IN PLIST_ENTRY WaitList,
|
||||
IN ULONG WaitType,
|
||||
IN PVOID WaitArgument1,
|
||||
IN PVOID WaitArgument2);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrPopulateDosDevices(VOID);
|
||||
|
||||
HANDLE
|
||||
NTAPI
|
||||
CsrQueryApiPort(VOID);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrReferenceThread(IN PCSR_THREAD CsrThread);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrRevertToSelf(VOID);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrSetBackgroundPriority(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrSetCallingSpooler(ULONG Reserved);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrSetForegroundPriority(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrShutdownProcesses(IN PLUID CallerLuid,
|
||||
IN ULONG Flags);
|
||||
|
||||
EXCEPTION_DISPOSITION
|
||||
NTAPI
|
||||
CsrUnhandledExceptionFilter(IN PEXCEPTION_POINTERS ExceptionInfo);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrUnlockProcess(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrUnlockThread(IN PCSR_THREAD CsrThread);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrValidateMessageBuffer(IN PCSR_API_MESSAGE ApiMessage,
|
||||
IN PVOID *Buffer,
|
||||
IN ULONG ElementCount,
|
||||
IN ULONG ElementSize);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrValidateMessageString(IN PCSR_API_MESSAGE ApiMessage,
|
||||
IN LPWSTR *MessageString);
|
||||
|
||||
#endif // _CSRSRV_H
|
||||
|
||||
/* EOF */
|
||||
@@ -1,939 +0,0 @@
|
||||
#ifndef __INCLUDE_CSRSS_CSRSS_H
|
||||
#define __INCLUDE_CSRSS_CSRSS_H
|
||||
|
||||
#include <drivers/blue/ntddblue.h>
|
||||
|
||||
#define CSR_NATIVE 0x0000
|
||||
#define CSR_CONSOLE 0x0001
|
||||
#define CSR_GUI 0x0002
|
||||
#define CONSOLE_INPUT_MODE_VALID (0x0f)
|
||||
#define CONSOLE_OUTPUT_MODE_VALID (0x03)
|
||||
|
||||
/*
|
||||
typedef union _CSR_API_NUMBER
|
||||
{
|
||||
WORD Index; // CSRSS API number
|
||||
WORD Subsystem; // 0=NTDLL;1=KERNEL32;2=KERNEL32
|
||||
} CSR_API_NUMBER, *PCSR_API_NUMBER;
|
||||
*/
|
||||
|
||||
typedef ULONG CSR_API_NUMBER;
|
||||
|
||||
#define MAKE_CSR_API(Number, Server) \
|
||||
((Server) << 16) + Number
|
||||
|
||||
#define CSR_CSRSS_SECTION_SIZE (65536)
|
||||
|
||||
typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG Dummy;
|
||||
} CSRSS_CONNECT_PROCESS, *PCSRSS_CONNECT_PROCESS;
|
||||
|
||||
typedef struct _BASE_SXS_CREATEPROCESS_MSG
|
||||
{
|
||||
ULONG Flags;
|
||||
ULONG ProcessParameterFlags;
|
||||
HANDLE FileHandle;
|
||||
UNICODE_STRING SxsWin32ExePath;
|
||||
UNICODE_STRING SxsNtExePath;
|
||||
SIZE_T OverrideManifestOffset;
|
||||
ULONG OverrideManifestSize;
|
||||
SIZE_T OverridePolicyOffset;
|
||||
ULONG OverridePolicySize;
|
||||
PVOID PEManifestAddress;
|
||||
ULONG PEManifestSize;
|
||||
UNICODE_STRING CultureFallbacks;
|
||||
ULONG Unknown[7];
|
||||
UNICODE_STRING AssemblyName;
|
||||
} BASE_SXS_CREATEPROCESS_MSG, *PBASE_SXS_CREATEPROCESS_MSG;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
//
|
||||
// NT-type structure (BASE_CREATEPROCESS_MSG)
|
||||
//
|
||||
HANDLE ProcessHandle;
|
||||
HANDLE ThreadHandle;
|
||||
CLIENT_ID ClientId;
|
||||
ULONG CreationFlags;
|
||||
ULONG VdmBinaryType;
|
||||
ULONG VdmTask;
|
||||
HANDLE hVDM;
|
||||
BASE_SXS_CREATEPROCESS_MSG Sxs;
|
||||
PVOID PebAddressNative;
|
||||
ULONG PebAddressWow64;
|
||||
USHORT ProcessorArchitecture;
|
||||
|
||||
//
|
||||
// ReactOS Data
|
||||
//
|
||||
BOOL bInheritHandles;
|
||||
} CSRSS_CREATE_PROCESS, *PCSRSS_CREATE_PROCESS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIENT_ID ClientId;
|
||||
HANDLE ThreadHandle;
|
||||
} CSRSS_CREATE_THREAD, *PCSRSS_CREATE_THREAD;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT uExitCode;
|
||||
} CSRSS_TERMINATE_PROCESS, *PCSRSS_TERMINATE_PROCESS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
USHORT nMaxIds;
|
||||
PDWORD ProcessId;
|
||||
ULONG nProcessIdsTotal;
|
||||
} CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
ULONG NrCharactersToWrite;
|
||||
ULONG NrCharactersWritten;
|
||||
HANDLE UnpauseEvent;
|
||||
BYTE Buffer[0];
|
||||
} CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
WORD NrCharactersToRead;
|
||||
WORD NrCharactersRead;
|
||||
HANDLE EventHandle;
|
||||
PVOID Buffer;
|
||||
UNICODE_STRING ExeName;
|
||||
DWORD CtrlWakeupMask;
|
||||
DWORD ControlKeyState;
|
||||
} CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
PCONTROLDISPATCHER CtrlDispatcher;
|
||||
BOOLEAN ConsoleNeeded;
|
||||
INT ShowCmd;
|
||||
HANDLE Console;
|
||||
HANDLE InputHandle;
|
||||
HANDLE OutputHandle;
|
||||
} CSRSS_ALLOC_CONSOLE, *PCSRSS_ALLOC_CONSOLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG Dummy;
|
||||
} CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
CONSOLE_SCREEN_BUFFER_INFO Info;
|
||||
} CSRSS_SCREEN_BUFFER_INFO, *PCSRSS_SCREEN_BUFFER_INFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
COORD Position;
|
||||
} CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
union
|
||||
{
|
||||
CHAR AsciiChar;
|
||||
WCHAR UnicodeChar;
|
||||
} Char;
|
||||
COORD Position;
|
||||
WORD Length;
|
||||
ULONG NrCharactersWritten;
|
||||
} CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
CHAR Attribute;
|
||||
COORD Coord;
|
||||
WORD Length;
|
||||
} CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
INPUT_RECORD Input;
|
||||
BOOL MoreEvents;
|
||||
HANDLE Event;
|
||||
} CSRSS_READ_INPUT, *PCSRSS_READ_INPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
WORD Length;
|
||||
COORD Coord;
|
||||
COORD EndCoord;
|
||||
ULONG NrCharactersWritten;
|
||||
CHAR String[0];
|
||||
} CSRSS_WRITE_CONSOLE_OUTPUT_CHAR, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
WORD Length;
|
||||
COORD Coord;
|
||||
COORD EndCoord;
|
||||
WORD Attribute[0];
|
||||
} CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
CONSOLE_CURSOR_INFO Info;
|
||||
} CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
CONSOLE_CURSOR_INFO Info;
|
||||
} CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
WORD Attrib;
|
||||
} CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
DWORD Mode;
|
||||
} CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
DWORD ConsoleMode;
|
||||
} CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Access;
|
||||
DWORD ShareMode;
|
||||
BOOL Inheritable;
|
||||
HANDLE OutputHandle; /* handle to newly created screen buffer */
|
||||
} CSRSS_CREATE_SCREEN_BUFFER, *PCSRSS_CREATE_SCREEN_BUFFER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle; /* handle to screen buffer to switch to */
|
||||
} CSRSS_SET_SCREEN_BUFFER, *PCSRSS_SET_SCREEN_BUFFER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE UniqueThread;
|
||||
CLIENT_ID Cid;
|
||||
} CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Length;
|
||||
PWCHAR Title;
|
||||
} CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Length;
|
||||
PWCHAR Title;
|
||||
} CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
COORD BufferSize;
|
||||
COORD BufferCoord;
|
||||
SMALL_RECT WriteRegion;
|
||||
CHAR_INFO* CharInfo;
|
||||
} CSRSS_WRITE_CONSOLE_OUTPUT, *PCSRSS_WRITE_CONSOLE_OUTPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleInput;
|
||||
} CSRSS_FLUSH_INPUT_BUFFER, *PCSRSS_FLUSH_INPUT_BUFFER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
SMALL_RECT ScrollRectangle;
|
||||
BOOLEAN UseClipRectangle;
|
||||
SMALL_RECT ClipRectangle;
|
||||
COORD DestinationOrigin;
|
||||
CHAR_INFO Fill;
|
||||
} CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
DWORD NumCharsToRead;
|
||||
COORD ReadCoord;
|
||||
COORD EndCoord;
|
||||
DWORD CharsRead;
|
||||
CHAR String[0];
|
||||
} CSRSS_READ_CONSOLE_OUTPUT_CHAR, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
DWORD NumAttrsToRead;
|
||||
COORD ReadCoord;
|
||||
COORD EndCoord;
|
||||
WORD Attribute[0];
|
||||
} CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
DWORD NumInputEvents;
|
||||
} CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ProcessId;
|
||||
} CSRSS_REGISTER_SERVICES_PROCESS, *PCSRSS_REGISTER_SERVICES_PROCESS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT Flags;
|
||||
DWORD Reserved;
|
||||
} CSRSS_EXIT_REACTOS, *PCSRSS_EXIT_REACTOS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Level;
|
||||
DWORD Flags;
|
||||
} CSRSS_SET_SHUTDOWN_PARAMETERS, *PCSRSS_SET_SHUTDOWN_PARAMETERS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Level;
|
||||
DWORD Flags;
|
||||
} CSRSS_GET_SHUTDOWN_PARAMETERS, *PCSRSS_GET_SHUTDOWN_PARAMETERS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
DWORD Length;
|
||||
INPUT_RECORD* InputRecord;
|
||||
} CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
COORD BufferSize;
|
||||
COORD BufferCoord;
|
||||
SMALL_RECT ReadRegion;
|
||||
CHAR_INFO* CharInfo;
|
||||
} CSRSS_READ_CONSOLE_OUTPUT, *PCSRSS_READ_CONSOLE_OUTPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
BOOL Unicode;
|
||||
DWORD Length;
|
||||
INPUT_RECORD* InputRecord;
|
||||
} CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Access;
|
||||
BOOL Inheritable;
|
||||
HANDLE Handle;
|
||||
DWORD ShareMode;
|
||||
} CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
|
||||
CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE Handle;
|
||||
} CSRSS_CLOSE_HANDLE, *PCSRSS_CLOSE_HANDLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE Handle;
|
||||
} CSRSS_VERIFY_HANDLE, *PCSRSS_VERIFY_HANDLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE Handle;
|
||||
DWORD Access;
|
||||
BOOL Inheritable;
|
||||
DWORD Options;
|
||||
} CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
|
||||
|
||||
#define CONSOLE_HARDWARE_STATE_GET 0
|
||||
#define CONSOLE_HARDWARE_STATE_SET 1
|
||||
|
||||
#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
|
||||
#define CONSOLE_HARDWARE_STATE_DIRECT 1
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
DWORD SetGet; /* 0=get; 1=set */
|
||||
DWORD State;
|
||||
} CSRSS_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HWND WindowHandle;
|
||||
} CSRSS_GET_CONSOLE_WINDOW, *PCSRSS_GET_CONSOLE_WINDOW;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HICON WindowIcon;
|
||||
} CSRSS_SET_CONSOLE_ICON, *PCSRSS_SET_CONSOLE_ICON;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HDESK DesktopHandle;
|
||||
} CSRSS_CREATE_DESKTOP, *PCSRSS_CREATE_DESKTOP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HWND DesktopWindow;
|
||||
ULONG Width;
|
||||
ULONG Height;
|
||||
} CSRSS_SHOW_DESKTOP, *PCSRSS_SHOW_DESKTOP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HWND DesktopWindow;
|
||||
} CSRSS_HIDE_DESKTOP, *PCSRSS_HIDE_DESKTOP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HWND LogonNotifyWindow;
|
||||
} CSRSS_SET_LOGON_NOTIFY_WINDOW, *PCSRSS_SET_LOGON_NOTIFY_WINDOW;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ProcessId;
|
||||
BOOL Register;
|
||||
} CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT CodePage;
|
||||
} CSRSS_GET_CONSOLE_CP, *PCSRSS_GET_CONSOLE_CP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT CodePage;
|
||||
} CSRSS_SET_CONSOLE_CP, *PCSRSS_SET_CONSOLE_CP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT CodePage;
|
||||
} CSRSS_GET_CONSOLE_OUTPUT_CP, *PCSRSS_GET_CONSOLE_OUTPUT_CP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT CodePage;
|
||||
} CSRSS_SET_CONSOLE_OUTPUT_CP, *PCSRSS_SET_CONSOLE_OUTPUT_CP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE InputWaitHandle;
|
||||
} CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG SourceLength;
|
||||
ULONG ExeLength;
|
||||
ULONG TargetLength;
|
||||
} CSRSS_ADD_CONSOLE_ALIAS, *PCSRSS_ADD_CONSOLE_ALIAS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG SourceLength;
|
||||
ULONG ExeLength;
|
||||
ULONG BytesWritten;
|
||||
ULONG TargetBufferLength;
|
||||
PVOID TargetBuffer;
|
||||
} CSRSS_GET_CONSOLE_ALIAS, *PCSRSS_GET_CONSOLE_ALIAS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LPWSTR lpExeName;
|
||||
DWORD BytesWritten;
|
||||
DWORD AliasBufferLength;
|
||||
LPWSTR AliasBuffer;
|
||||
} CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIAS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LPWSTR lpExeName;
|
||||
DWORD Length;
|
||||
} CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD BytesWritten;
|
||||
DWORD Length;
|
||||
LPWSTR ExeNames;
|
||||
} CSRSS_GET_CONSOLE_ALIASES_EXES, *PCSRSS_GET_CONSOLE_ALIASES_EXES;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Length;
|
||||
} CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Event;
|
||||
DWORD ProcessGroup;
|
||||
} CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
COORD Size;
|
||||
} CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CONSOLE_SELECTION_INFO Info;
|
||||
} CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING ExeName;
|
||||
DWORD Length;
|
||||
} CSRSS_GET_COMMAND_HISTORY_LENGTH, *PCSRSS_GET_COMMAND_HISTORY_LENGTH;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING ExeName;
|
||||
PWCHAR History;
|
||||
DWORD Length;
|
||||
} CSRSS_GET_COMMAND_HISTORY, *PCSRSS_GET_COMMAND_HISTORY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING ExeName;
|
||||
} CSRSS_EXPUNGE_COMMAND_HISTORY, *PCSRSS_EXPUNGE_COMMAND_HISTORY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING ExeName;
|
||||
DWORD NumCommands;
|
||||
} CSRSS_SET_HISTORY_NUMBER_COMMANDS, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD HistoryBufferSize;
|
||||
DWORD NumberOfHistoryBuffers;
|
||||
DWORD dwFlags;
|
||||
} CSRSS_GET_HISTORY_INFO, *PCSRSS_GET_HISTORY_INFO,
|
||||
CSRSS_SET_HISTORY_INFO, *PCSRSS_SET_HISTORY_INFO;;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT UniqueID;
|
||||
} CSRSS_GET_TEMP_FILE, *PCSRSS_GET_TEMP_FILE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING DeviceName;
|
||||
UNICODE_STRING TargetName;
|
||||
DWORD dwFlags;
|
||||
} CSRSS_DEFINE_DOS_DEVICE, *PCSRSS_DEFINE_DOS_DEVICE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG VideoMode;
|
||||
} CSRSS_SOUND_SENTRY, *PCSRSS_SOUND_SENTRY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG iTask;
|
||||
ULONG BinaryType;
|
||||
HANDLE ConsoleHandle;
|
||||
HANDLE VDMProcessHandle;
|
||||
HANDLE WaitObjectForParent;
|
||||
USHORT EntryIndex;
|
||||
USHORT VDMCreationState;
|
||||
} CSRSS_UPDATE_VDM_ENTRY, *PCSRSS_UPDATE_VDM_ENTRY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
HANDLE hParent;
|
||||
ULONG ExitCode;
|
||||
} CSRSS_GET_VDM_EXIT_CODE, *PCSRSS_GET_VDM_EXIT_CODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG iTask;
|
||||
HANDLE ConsoleHandle;
|
||||
ULONG BinaryType;
|
||||
HANDLE WaitObjectForParent;
|
||||
HANDLE StdIn;
|
||||
HANDLE StdOut;
|
||||
HANDLE StdErr;
|
||||
ULONG CodePage;
|
||||
ULONG dwCreationFlags;
|
||||
PCHAR CmdLine;
|
||||
PCHAR appName;
|
||||
PCHAR PifFile;
|
||||
PCHAR CurDirectory;
|
||||
PCHAR Env;
|
||||
ULONG EnvLen;
|
||||
PVOID StartupInfo;
|
||||
PCHAR Desktop;
|
||||
ULONG DesktopLen;
|
||||
PCHAR Title;
|
||||
ULONG TitleLen;
|
||||
PCHAR Reserved;
|
||||
ULONG ReservedLen;
|
||||
USHORT CmdLen;
|
||||
USHORT AppLen;
|
||||
USHORT PifLen;
|
||||
USHORT CurDirectoryLen;
|
||||
USHORT CurDrive;
|
||||
USHORT VDMState;
|
||||
} CSRSS_CHECK_VDM, *PCSRSS_CHECK_VDM;
|
||||
|
||||
#define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
|
||||
#define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
|
||||
#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
|
||||
#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))
|
||||
#define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
|
||||
#define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
|
||||
|
||||
#define CREATE_PROCESS (0x0)
|
||||
#define TERMINATE_PROCESS (0x1)
|
||||
#define WRITE_CONSOLE (0x2)
|
||||
#define READ_CONSOLE (0x3)
|
||||
#define ALLOC_CONSOLE (0x4)
|
||||
#define FREE_CONSOLE (0x5)
|
||||
#define CONNECT_PROCESS (0x6)
|
||||
#define SCREEN_BUFFER_INFO (0x7)
|
||||
#define SET_CURSOR (0x8)
|
||||
#define FILL_OUTPUT (0x9)
|
||||
#define READ_INPUT (0xA)
|
||||
#define WRITE_CONSOLE_OUTPUT_CHAR (0xB)
|
||||
#define WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
|
||||
#define FILL_OUTPUT_ATTRIB (0xD)
|
||||
#define GET_CURSOR_INFO (0xE)
|
||||
#define SET_CURSOR_INFO (0xF)
|
||||
#define SET_ATTRIB (0x10)
|
||||
#define GET_CONSOLE_MODE (0x11)
|
||||
#define SET_CONSOLE_MODE (0x12)
|
||||
#define CREATE_SCREEN_BUFFER (0x13)
|
||||
#define SET_SCREEN_BUFFER (0x14)
|
||||
#define SET_TITLE (0x15)
|
||||
#define GET_TITLE (0x16)
|
||||
#define WRITE_CONSOLE_OUTPUT (0x17)
|
||||
#define FLUSH_INPUT_BUFFER (0x18)
|
||||
#define SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
|
||||
#define READ_CONSOLE_OUTPUT_CHAR (0x1A)
|
||||
#define READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
|
||||
#define GET_NUM_INPUT_EVENTS (0x1C)
|
||||
#define REGISTER_SERVICES_PROCESS (0x1D)
|
||||
#define EXIT_REACTOS (0x1E)
|
||||
#define GET_SHUTDOWN_PARAMETERS (0x1F)
|
||||
#define SET_SHUTDOWN_PARAMETERS (0x20)
|
||||
#define PEEK_CONSOLE_INPUT (0x21)
|
||||
#define READ_CONSOLE_OUTPUT (0x22)
|
||||
#define WRITE_CONSOLE_INPUT (0x23)
|
||||
#define GET_INPUT_HANDLE (0x24)
|
||||
#define GET_OUTPUT_HANDLE (0x25)
|
||||
#define CLOSE_HANDLE (0x26)
|
||||
#define VERIFY_HANDLE (0x27)
|
||||
#define DUPLICATE_HANDLE (0x28)
|
||||
#define SETGET_CONSOLE_HW_STATE (0x29)
|
||||
#define GET_CONSOLE_WINDOW (0x2A)
|
||||
#define CREATE_DESKTOP (0x2B)
|
||||
#define SHOW_DESKTOP (0x2C)
|
||||
#define HIDE_DESKTOP (0x2D)
|
||||
#define SET_CONSOLE_ICON (0x2E)
|
||||
#define SET_LOGON_NOTIFY_WINDOW (0x2F)
|
||||
#define REGISTER_LOGON_PROCESS (0x30)
|
||||
#define GET_CONSOLE_CP (0x31)
|
||||
#define SET_CONSOLE_CP (0x32)
|
||||
#define GET_CONSOLE_OUTPUT_CP (0x33)
|
||||
#define SET_CONSOLE_OUTPUT_CP (0x34)
|
||||
#define GET_INPUT_WAIT_HANDLE (0x35)
|
||||
#define GET_PROCESS_LIST (0x36)
|
||||
#define START_SCREEN_SAVER (0x37)
|
||||
#define ADD_CONSOLE_ALIAS (0x38)
|
||||
#define GET_CONSOLE_ALIAS (0x39)
|
||||
#define GET_ALL_CONSOLE_ALIASES (0x3A)
|
||||
#define GET_ALL_CONSOLE_ALIASES_LENGTH (0x3B)
|
||||
#define GET_CONSOLE_ALIASES_EXES (0x3C)
|
||||
#define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
|
||||
#define GENERATE_CTRL_EVENT (0x3E)
|
||||
#define CREATE_THREAD (0x3F)
|
||||
#define SET_SCREEN_BUFFER_SIZE (0x40)
|
||||
#define GET_CONSOLE_SELECTION_INFO (0x41)
|
||||
#define GET_COMMAND_HISTORY_LENGTH (0x42)
|
||||
#define GET_COMMAND_HISTORY (0x43)
|
||||
#define EXPUNGE_COMMAND_HISTORY (0x44)
|
||||
#define SET_HISTORY_NUMBER_COMMANDS (0x45)
|
||||
#define GET_HISTORY_INFO (0x46)
|
||||
#define SET_HISTORY_INFO (0x47)
|
||||
#define GET_TEMP_FILE (0x48)
|
||||
#define DEFINE_DOS_DEVICE (0X49)
|
||||
#define SOUND_SENTRY (0x50)
|
||||
#define UPDATE_VDM_ENTRY (0x51)
|
||||
#define GET_VDM_EXIT_CODE (0x52)
|
||||
#define CHECK_VDM (0x53)
|
||||
|
||||
/* Keep in sync with definition below. */
|
||||
#define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS))
|
||||
|
||||
typedef struct _CSR_API_MESSAGE
|
||||
{
|
||||
PORT_MESSAGE Header;
|
||||
PVOID CsrCaptureData;
|
||||
ULONG Type;
|
||||
NTSTATUS Status;
|
||||
union
|
||||
{
|
||||
CSRSS_CREATE_PROCESS CreateProcessRequest;
|
||||
CSRSS_CREATE_THREAD CreateThreadRequest;
|
||||
CSRSS_TERMINATE_PROCESS TerminateProcessRequest;
|
||||
CSRSS_CONNECT_PROCESS ConnectRequest;
|
||||
CSRSS_WRITE_CONSOLE WriteConsoleRequest;
|
||||
CSRSS_READ_CONSOLE ReadConsoleRequest;
|
||||
CSRSS_ALLOC_CONSOLE AllocConsoleRequest;
|
||||
CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
|
||||
CSRSS_SET_CURSOR SetCursorRequest;
|
||||
CSRSS_FILL_OUTPUT FillOutputRequest;
|
||||
CSRSS_READ_INPUT ReadInputRequest;
|
||||
CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
|
||||
CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
|
||||
CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
|
||||
CSRSS_SET_CURSOR_INFO SetCursorInfoRequest;
|
||||
CSRSS_GET_CURSOR_INFO GetCursorInfoRequest;
|
||||
CSRSS_SET_ATTRIB SetAttribRequest;
|
||||
CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
|
||||
CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
|
||||
CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
|
||||
CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
|
||||
CSRSS_SET_TITLE SetTitleRequest;
|
||||
CSRSS_GET_TITLE GetTitleRequest;
|
||||
CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
|
||||
CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
|
||||
CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
|
||||
CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest;
|
||||
CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest;
|
||||
CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
|
||||
CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
|
||||
CSRSS_EXIT_REACTOS ExitReactosRequest;
|
||||
CSRSS_SET_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
|
||||
CSRSS_GET_SHUTDOWN_PARAMETERS GetShutdownParametersRequest;
|
||||
CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest;
|
||||
CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest;
|
||||
CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
|
||||
CSRSS_GET_INPUT_HANDLE GetInputHandleRequest;
|
||||
CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest;
|
||||
CSRSS_CLOSE_HANDLE CloseHandleRequest;
|
||||
CSRSS_VERIFY_HANDLE VerifyHandleRequest;
|
||||
CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
|
||||
CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
|
||||
CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest;
|
||||
CSRSS_CREATE_DESKTOP CreateDesktopRequest;
|
||||
CSRSS_SHOW_DESKTOP ShowDesktopRequest;
|
||||
CSRSS_HIDE_DESKTOP HideDesktopRequest;
|
||||
CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest;
|
||||
CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
|
||||
CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
|
||||
CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
|
||||
CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
|
||||
CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
|
||||
CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
|
||||
CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
|
||||
CSRSS_GET_PROCESS_LIST GetProcessListRequest;
|
||||
CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias;
|
||||
CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias;
|
||||
CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias;
|
||||
CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength;
|
||||
CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes;
|
||||
CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength;
|
||||
CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
|
||||
CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
|
||||
CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
|
||||
CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength;
|
||||
CSRSS_GET_COMMAND_HISTORY GetCommandHistory;
|
||||
CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory;
|
||||
CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands;
|
||||
CSRSS_GET_HISTORY_INFO GetHistoryInfo;
|
||||
CSRSS_SET_HISTORY_INFO SetHistoryInfo;
|
||||
CSRSS_GET_TEMP_FILE GetTempFile;
|
||||
CSRSS_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
|
||||
CSRSS_SOUND_SENTRY SoundSentryRequest;
|
||||
CSRSS_UPDATE_VDM_ENTRY UpdateVdmEntry;
|
||||
CSRSS_GET_VDM_EXIT_CODE GetVdmExitCode;
|
||||
CSRSS_CHECK_VDM CheckVdm;
|
||||
} Data;
|
||||
} CSR_API_MESSAGE, *PCSR_API_MESSAGE;
|
||||
|
||||
typedef struct _NLS_USER_INFO
|
||||
{
|
||||
WCHAR iCountry[80];
|
||||
WCHAR sCountry[80];
|
||||
WCHAR sList[80];
|
||||
WCHAR iMeasure[80];
|
||||
WCHAR iPaperSize[80];
|
||||
WCHAR sDecimal[80];
|
||||
WCHAR sThousand[80];
|
||||
WCHAR sGrouping[80];
|
||||
WCHAR iDigits[80];
|
||||
WCHAR iLZero[80];
|
||||
WCHAR iNegNumber[80];
|
||||
WCHAR sNativeDigits[80];
|
||||
WCHAR iDigitSubstitution[80];
|
||||
WCHAR sCurrency[80];
|
||||
WCHAR sMonDecSep[80];
|
||||
WCHAR sMonThouSep[80];
|
||||
WCHAR sMonGrouping[80];
|
||||
WCHAR iCurrDigits[80];
|
||||
WCHAR iCurrency[80];
|
||||
WCHAR iNegCurr[80];
|
||||
WCHAR sPosSign[80];
|
||||
WCHAR sNegSign[80];
|
||||
WCHAR sTimeFormat[80];
|
||||
WCHAR s1159[80];
|
||||
WCHAR s2359[80];
|
||||
WCHAR sShortDate[80];
|
||||
WCHAR sYearMonth[80];
|
||||
WCHAR sLongDate[80];
|
||||
WCHAR iCalType[80];
|
||||
WCHAR iFirstDay[80];
|
||||
WCHAR iFirstWeek[80];
|
||||
WCHAR sLocale[80];
|
||||
WCHAR sLocaleName[85];
|
||||
LCID UserLocaleId;
|
||||
LUID InteractiveUserLuid;
|
||||
CHAR InteractiveUserSid[68]; // SECURITY_MAX_SID_SIZE to make ros happy
|
||||
ULONG ulCacheUpdateCount;
|
||||
} NLS_USER_INFO, *PNLS_USER_INFO;
|
||||
|
||||
|
||||
typedef struct _BASE_STATIC_SERVER_DATA
|
||||
{
|
||||
UNICODE_STRING WindowsDirectory;
|
||||
UNICODE_STRING WindowsSystemDirectory;
|
||||
UNICODE_STRING NamedObjectDirectory;
|
||||
USHORT WindowsMajorVersion;
|
||||
USHORT WindowsMinorVersion;
|
||||
USHORT BuildNumber;
|
||||
USHORT CSDNumber;
|
||||
USHORT RCNumber;
|
||||
WCHAR CSDVersion[128];
|
||||
SYSTEM_BASIC_INFORMATION SysInfo;
|
||||
SYSTEM_TIMEOFDAY_INFORMATION TimeOfDay;
|
||||
PVOID IniFileMapping;
|
||||
NLS_USER_INFO NlsUserInfo;
|
||||
BOOLEAN DefaultSeparateVDM;
|
||||
BOOLEAN IsWowTaskReady;
|
||||
UNICODE_STRING WindowsSys32x86Directory;
|
||||
BOOLEAN fTermsrvAppInstallMode;
|
||||
TIME_ZONE_INFORMATION tziTermsrvClientTimeZone;
|
||||
KSYSTEM_TIME ktTermsrvClientBias;
|
||||
ULONG TermsrvClientTimeZoneId;
|
||||
BOOLEAN LUIDDeviceMapsEnabled;
|
||||
ULONG TermsrvClientTimeZoneChangeNum;
|
||||
} BASE_STATIC_SERVER_DATA, *PBASE_STATIC_SERVER_DATA;
|
||||
|
||||
|
||||
/* Types used in the new CSR. Temporarly here for proper compile of NTDLL */
|
||||
#define CSR_SRV_SERVER 0
|
||||
|
||||
typedef enum _CSR_SRV_API_NUMBER
|
||||
{
|
||||
CsrpClientConnect,
|
||||
CsrpThreadConnect,
|
||||
CsrpProfileControl,
|
||||
CsrpIdentifyAlertable,
|
||||
CsrpSetPriorityClass,
|
||||
CsrpMaxApiNumber
|
||||
} CSR_SRV_API_NUMBER, *PCSR_SRV_API_NUMBER;
|
||||
|
||||
#define CSR_MAKE_OPCODE(s,m) ((s) << 16) | (m)
|
||||
|
||||
typedef struct _CSR_CONNECTION_INFO
|
||||
{
|
||||
ULONG Version;
|
||||
ULONG Unknown;
|
||||
HANDLE ObjectDirectory;
|
||||
PVOID SharedSectionBase;
|
||||
PVOID SharedSectionHeap;
|
||||
PVOID SharedSectionData;
|
||||
ULONG DebugFlags;
|
||||
ULONG Unknown2[3];
|
||||
HANDLE ProcessId;
|
||||
} CSR_CONNECTION_INFO, *PCSR_CONNECTION_INFO;
|
||||
|
||||
typedef struct _CSR_CLIENT_CONNECT
|
||||
{
|
||||
ULONG ServerId;
|
||||
PVOID ConnectionInfo;
|
||||
ULONG ConnectionInfoSize;
|
||||
} CSR_CLIENT_CONNECT, *PCSR_CLIENT_CONNECT;
|
||||
|
||||
typedef struct _CSR_IDENTIFY_ALTERTABLE_THREAD
|
||||
{
|
||||
CLIENT_ID Cid;
|
||||
} CSR_IDENTIFY_ALTERTABLE_THREAD, *PCSR_IDENTIFY_ALTERTABLE_THREAD;
|
||||
|
||||
typedef struct _CSR_SET_PRIORITY_CLASS
|
||||
{
|
||||
HANDLE hProcess;
|
||||
ULONG PriorityClass;
|
||||
} CSR_SET_PRIORITY_CLASS, *PCSR_SET_PRIORITY_CLASS;
|
||||
|
||||
typedef struct _CSR_API_MESSAGE2
|
||||
{
|
||||
PORT_MESSAGE Header;
|
||||
union
|
||||
{
|
||||
CSR_CONNECTION_INFO ConnectionInfo;
|
||||
struct
|
||||
{
|
||||
PVOID CsrCaptureData;
|
||||
CSR_API_NUMBER Opcode;
|
||||
ULONG Status;
|
||||
ULONG Reserved;
|
||||
union
|
||||
{
|
||||
CSR_CLIENT_CONNECT ClientConnect;
|
||||
CSR_SET_PRIORITY_CLASS SetPriorityClass;
|
||||
CSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
|
||||
};
|
||||
};
|
||||
};
|
||||
} CSR_API_MESSAGE2, *PCSR_API_MESSAGE2;
|
||||
|
||||
typedef struct _CSR_CAPTURE_BUFFER
|
||||
{
|
||||
ULONG Size;
|
||||
struct _CSR_CAPTURE_BUFFER *PreviousCaptureBuffer;
|
||||
ULONG PointerCount;
|
||||
ULONG_PTR BufferEnd;
|
||||
ULONG_PTR PointerArray[1];
|
||||
} CSR_CAPTURE_BUFFER, *PCSR_CAPTURE_BUFFER;
|
||||
|
||||
#endif /* __INCLUDE_CSRSS_CSRSS_H */
|
||||
@@ -7,32 +7,31 @@
|
||||
|
||||
/* smlib/connect.c */
|
||||
NTSTATUS WINAPI
|
||||
SmConnectApiPort (IN PUNICODE_STRING pSbApiPortName OPTIONAL,
|
||||
IN HANDLE hSbApiPort OPTIONAL,
|
||||
IN WORD wSubsystem OPTIONAL, /* pe.h */
|
||||
IN OUT PHANDLE phSmApiPort);
|
||||
SmConnectApiPort(IN PUNICODE_STRING pSbApiPortName OPTIONAL,
|
||||
IN HANDLE hSbApiPort OPTIONAL,
|
||||
IN WORD wSubsystem OPTIONAL, /* pe.h */
|
||||
IN OUT PHANDLE phSmApiPort);
|
||||
/* smlib/compses.c */
|
||||
NTSTATUS WINAPI
|
||||
SmCompleteSession (IN HANDLE hSmApiPort,
|
||||
IN HANDLE hSbApiPort,
|
||||
IN HANDLE hApiPort);
|
||||
SmCompleteSession(IN HANDLE hSmApiPort,
|
||||
IN HANDLE hSbApiPort,
|
||||
IN HANDLE hApiPort);
|
||||
/* smlib/execpgm.c */
|
||||
NTSTATUS WINAPI
|
||||
SmExecuteProgram (IN HANDLE hSmApiPort,
|
||||
IN PUNICODE_STRING Pgm
|
||||
);
|
||||
SmExecuteProgram(IN HANDLE hSmApiPort,
|
||||
IN PUNICODE_STRING Pgm);
|
||||
/* smdll/query.c */
|
||||
NTSTATUS WINAPI
|
||||
SmQueryInformation (IN HANDLE SmApiPort,
|
||||
IN SM_INFORMATION_CLASS SmInformationClass,
|
||||
IN OUT PVOID Data,
|
||||
IN ULONG DataLength,
|
||||
IN OUT PULONG ReturnedDataLength OPTIONAL);
|
||||
SmQueryInformation(IN HANDLE SmApiPort,
|
||||
IN SM_INFORMATION_CLASS SmInformationClass,
|
||||
IN OUT PVOID Data,
|
||||
IN ULONG DataLength,
|
||||
IN OUT PULONG ReturnedDataLength OPTIONAL);
|
||||
/* smlib/lookupss.c */
|
||||
NTSTATUS WINAPI
|
||||
SmLookupSubsystem (IN PWSTR Name,
|
||||
IN OUT PWSTR Data,
|
||||
IN OUT PULONG DataLength,
|
||||
IN OUT PULONG DataType,
|
||||
IN PVOID Environment OPTIONAL);
|
||||
SmLookupSubsystem(IN PWSTR Name,
|
||||
IN OUT PWSTR Data,
|
||||
IN OUT PULONG DataLength,
|
||||
IN OUT PULONG DataType,
|
||||
IN PVOID Environment OPTIONAL);
|
||||
#endif /* ndef INCLUDE_SM_HELPER_H */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#if !defined(INCLUDE_SM_NS_H)
|
||||
#define INCLUDE_SM_NS_H
|
||||
|
||||
#define SM_REGISTRY_ROOT_NAME L"\\Session Manager"
|
||||
#define SM_REGISTRY_ROOT_NAME L"\\Session Manager"
|
||||
#define SM_REGISTRY_SUBSYSTEMS_NAME L"SubSystems"
|
||||
|
||||
#define SM_API_PORT_NAME L"\\SmApiPort"
|
||||
|
||||
@@ -18,17 +18,21 @@
|
||||
// in the checked build of SMSS, which is probably a close approximation. We add
|
||||
// "p" to use the similar nomenclature seen/leaked out in the Base CSRSS APIs.
|
||||
//
|
||||
// The enumeration finishes with an enumeratee holding the maximum API number.
|
||||
// Its name is based on BasepMaxApiNumber, UserpMaxApiNumber...
|
||||
//
|
||||
//
|
||||
typedef enum _SMSRV_API_NUMBER
|
||||
{
|
||||
SmCreateForeignSessionApi,
|
||||
SmSessionCompleteApi,
|
||||
SmTerminateForeignSessionApi,
|
||||
SmExecPgmApi,
|
||||
SmLoadDeferedSubsystemApi,
|
||||
SmStartCsrApi,
|
||||
SmStopCsrApi,
|
||||
SmMaxApiNumber // Based on BasepMaxApiNumber, UserpMaxApiNumber...
|
||||
SmpCreateForeignSessionApi,
|
||||
SmpSessionCompleteApi,
|
||||
SmpTerminateForeignSessionApi,
|
||||
SmpExecPgmApi,
|
||||
SmpLoadDeferedSubsystemApi,
|
||||
SmpStartCsrApi,
|
||||
SmpStopCsrApi,
|
||||
|
||||
SmpMaxApiNumber
|
||||
} SMSRV_API_NUMBER;
|
||||
|
||||
//
|
||||
@@ -108,7 +112,7 @@ C_ASSERT(sizeof(SM_API_MSG) == 0x130);
|
||||
#endif
|
||||
|
||||
//
|
||||
// There are the APIs that the SMSS Serve can send to a client (such as CSRSS)
|
||||
// There are the APIs that the SMSS Server can send to a client (such as CSRSS).
|
||||
//
|
||||
// These are called "SB" APIs.
|
||||
//
|
||||
@@ -117,6 +121,9 @@ C_ASSERT(sizeof(SM_API_MSG) == 0x130);
|
||||
// We add "p" to use the similar nomenclature seen/leaked out in the Base CSRSS
|
||||
// APIs.
|
||||
//
|
||||
// The enumeration finishes with an enumeratee holding the maximum API number.
|
||||
// Its name is based on BasepMaxApiNumber, UserpMaxApiNumber...
|
||||
//
|
||||
//
|
||||
typedef enum _SB_API_NUMBER
|
||||
{
|
||||
@@ -124,7 +131,8 @@ typedef enum _SB_API_NUMBER
|
||||
SbpTerminateSession,
|
||||
SbpForeignSessionComplete,
|
||||
SbpCreateProcess,
|
||||
SbpMaxApiNumber // Based on BasepMaxApiNumber, UserpMaxApiNumber...
|
||||
|
||||
SbpMaxApiNumber
|
||||
} SB_API_NUMBER;
|
||||
|
||||
//
|
||||
|
||||
@@ -1,16 +1,88 @@
|
||||
#if !defined(__INCLUDE_WIN_BASE_H)
|
||||
#define __INCLUDE_WIN_BASE_H
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Base API Server DLL
|
||||
* FILE: include/reactos/subsys/win/base.h
|
||||
* PURPOSE: Public definitions for Base API Clients
|
||||
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#include <csr/protocol.h>
|
||||
#ifndef _BASE_H
|
||||
#define _BASE_H
|
||||
|
||||
/* w32 base server */
|
||||
|
||||
#define WIN_SRV_BASE 1
|
||||
#pragma once
|
||||
|
||||
typedef VOID (CALLBACK * BASE_PROCESS_CREATE_NOTIFY_ROUTINE)(PVOID);
|
||||
|
||||
NTSTATUS WINAPI BaseSetProcessCreateNotify (BASE_PROCESS_CREATE_NOTIFY_ROUTINE);
|
||||
NTSTATUS WINAPI ServerDllInitialization (ULONG,LPWSTR*);
|
||||
NTSTATUS WINAPI BaseSetProcessCreateNotify(BASE_PROCESS_CREATE_NOTIFY_ROUTINE);
|
||||
|
||||
#endif /* ndef __INCLUDE_WIN_BASE_H */
|
||||
typedef struct _NLS_USER_INFO
|
||||
{
|
||||
WCHAR iCountry[80];
|
||||
WCHAR sCountry[80];
|
||||
WCHAR sList[80];
|
||||
WCHAR iMeasure[80];
|
||||
WCHAR iPaperSize[80];
|
||||
WCHAR sDecimal[80];
|
||||
WCHAR sThousand[80];
|
||||
WCHAR sGrouping[80];
|
||||
WCHAR iDigits[80];
|
||||
WCHAR iLZero[80];
|
||||
WCHAR iNegNumber[80];
|
||||
WCHAR sNativeDigits[80];
|
||||
WCHAR iDigitSubstitution[80];
|
||||
WCHAR sCurrency[80];
|
||||
WCHAR sMonDecSep[80];
|
||||
WCHAR sMonThouSep[80];
|
||||
WCHAR sMonGrouping[80];
|
||||
WCHAR iCurrDigits[80];
|
||||
WCHAR iCurrency[80];
|
||||
WCHAR iNegCurr[80];
|
||||
WCHAR sPosSign[80];
|
||||
WCHAR sNegSign[80];
|
||||
WCHAR sTimeFormat[80];
|
||||
WCHAR s1159[80];
|
||||
WCHAR s2359[80];
|
||||
WCHAR sShortDate[80];
|
||||
WCHAR sYearMonth[80];
|
||||
WCHAR sLongDate[80];
|
||||
WCHAR iCalType[80];
|
||||
WCHAR iFirstDay[80];
|
||||
WCHAR iFirstWeek[80];
|
||||
WCHAR sLocale[80];
|
||||
WCHAR sLocaleName[85];
|
||||
LCID UserLocaleId;
|
||||
LUID InteractiveUserLuid;
|
||||
CHAR InteractiveUserSid[68]; // SECURITY_MAX_SID_SIZE to make ROS happy
|
||||
ULONG ulCacheUpdateCount;
|
||||
} NLS_USER_INFO, *PNLS_USER_INFO;
|
||||
|
||||
|
||||
typedef struct _BASE_STATIC_SERVER_DATA
|
||||
{
|
||||
UNICODE_STRING WindowsDirectory;
|
||||
UNICODE_STRING WindowsSystemDirectory;
|
||||
UNICODE_STRING NamedObjectDirectory;
|
||||
USHORT WindowsMajorVersion;
|
||||
USHORT WindowsMinorVersion;
|
||||
USHORT BuildNumber;
|
||||
USHORT CSDNumber;
|
||||
USHORT RCNumber;
|
||||
WCHAR CSDVersion[128];
|
||||
SYSTEM_BASIC_INFORMATION SysInfo;
|
||||
SYSTEM_TIMEOFDAY_INFORMATION TimeOfDay;
|
||||
PVOID IniFileMapping;
|
||||
NLS_USER_INFO NlsUserInfo;
|
||||
BOOLEAN DefaultSeparateVDM;
|
||||
BOOLEAN IsWowTaskReady;
|
||||
UNICODE_STRING WindowsSys32x86Directory;
|
||||
BOOLEAN fTermsrvAppInstallMode;
|
||||
TIME_ZONE_INFORMATION tziTermsrvClientTimeZone;
|
||||
KSYSTEM_TIME ktTermsrvClientBias;
|
||||
ULONG TermsrvClientTimeZoneId;
|
||||
BOOLEAN LUIDDeviceMapsEnabled;
|
||||
ULONG TermsrvClientTimeZoneChangeNum;
|
||||
} BASE_STATIC_SERVER_DATA, *PBASE_STATIC_SERVER_DATA;
|
||||
|
||||
#endif // _BASE_H
|
||||
|
||||
/* EOF */
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Base API Server DLL
|
||||
* FILE: include/reactos/subsys/win/basemsg.h
|
||||
* PURPOSE: Public definitions for communication
|
||||
* between Base API Clients and Servers
|
||||
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#ifndef _BASEMSG_H
|
||||
#define _BASEMSG_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#define BASESRV_SERVERDLL_INDEX 1
|
||||
#define BASESRV_FIRST_API_NUMBER 0
|
||||
|
||||
// Windows Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
|
||||
typedef enum _BASESRV_API_NUMBER
|
||||
{
|
||||
BasepCreateProcess = BASESRV_FIRST_API_NUMBER,
|
||||
BasepCreateThread,
|
||||
BasepGetTempFile,
|
||||
BasepExitProcess,
|
||||
// BasepDebugProcess,
|
||||
// BasepCheckVDM,
|
||||
// BasepUpdateVDMEntry,
|
||||
// BasepGetNextVDMCommand,
|
||||
// BasepExitVDM,
|
||||
// BasepIsFirstVDM,
|
||||
// BasepGetVDMExitCode,
|
||||
// BasepSetReenterCount,
|
||||
BasepSetProcessShutdownParam,
|
||||
BasepGetProcessShutdownParam,
|
||||
// BasepNlsSetUserInfo,
|
||||
// BasepNlsSetMultipleUserInfo,
|
||||
// BasepNlsCreateSection,
|
||||
// BasepSetVDMCurDirs,
|
||||
// BasepGetVDMCurDirs,
|
||||
// BasepBatNotification,
|
||||
// BasepRegisterWowExec,
|
||||
BasepSoundSentryNotification,
|
||||
// BasepRefreshIniFileMapping,
|
||||
BasepDefineDosDevice,
|
||||
// BasepSetTermsrvAppInstallMode,
|
||||
// BasepNlsUpdateCacheCount,
|
||||
// BasepSetTermsrvClientTimeZone,
|
||||
// BasepSxsCreateActivationContext,
|
||||
// BasepRegisterThread,
|
||||
// BasepNlsGetUserInfo,
|
||||
|
||||
BasepMaxApiNumber
|
||||
} BASESRV_API_NUMBER, *PBASESRV_API_NUMBER;
|
||||
|
||||
typedef struct _BASE_SXS_CREATEPROCESS_MSG
|
||||
{
|
||||
ULONG Flags;
|
||||
ULONG ProcessParameterFlags;
|
||||
HANDLE FileHandle;
|
||||
UNICODE_STRING SxsWin32ExePath;
|
||||
UNICODE_STRING SxsNtExePath;
|
||||
SIZE_T OverrideManifestOffset;
|
||||
ULONG OverrideManifestSize;
|
||||
SIZE_T OverridePolicyOffset;
|
||||
ULONG OverridePolicySize;
|
||||
PVOID PEManifestAddress;
|
||||
ULONG PEManifestSize;
|
||||
UNICODE_STRING CultureFallbacks;
|
||||
ULONG Unknown[7];
|
||||
UNICODE_STRING AssemblyName;
|
||||
} BASE_SXS_CREATEPROCESS_MSG, *PBASE_SXS_CREATEPROCESS_MSG;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
//
|
||||
// NT-type structure (BASE_CREATEPROCESS_MSG)
|
||||
//
|
||||
HANDLE ProcessHandle;
|
||||
HANDLE ThreadHandle;
|
||||
CLIENT_ID ClientId;
|
||||
ULONG CreationFlags;
|
||||
ULONG VdmBinaryType;
|
||||
ULONG VdmTask;
|
||||
HANDLE hVDM;
|
||||
BASE_SXS_CREATEPROCESS_MSG Sxs;
|
||||
PVOID PebAddressNative;
|
||||
ULONG PebAddressWow64;
|
||||
USHORT ProcessorArchitecture;
|
||||
} BASE_CREATE_PROCESS, *PBASE_CREATE_PROCESS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIENT_ID ClientId;
|
||||
HANDLE ThreadHandle;
|
||||
} BASE_CREATE_THREAD, *PBASE_CREATE_THREAD;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT uExitCode;
|
||||
} BASE_EXIT_PROCESS, *PBASE_EXIT_PROCESS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT UniqueID;
|
||||
} BASE_GET_TEMP_FILE, *PBASE_GET_TEMP_FILE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG iTask;
|
||||
HANDLE ConsoleHandle;
|
||||
ULONG BinaryType;
|
||||
HANDLE WaitObjectForParent;
|
||||
HANDLE StdIn;
|
||||
HANDLE StdOut;
|
||||
HANDLE StdErr;
|
||||
ULONG CodePage;
|
||||
ULONG dwCreationFlags;
|
||||
PCHAR CmdLine;
|
||||
PCHAR appName;
|
||||
PCHAR PifFile;
|
||||
PCHAR CurDirectory;
|
||||
PCHAR Env;
|
||||
ULONG EnvLen;
|
||||
PVOID StartupInfo;
|
||||
PCHAR Desktop;
|
||||
ULONG DesktopLen;
|
||||
PCHAR Title;
|
||||
ULONG TitleLen;
|
||||
PCHAR Reserved;
|
||||
ULONG ReservedLen;
|
||||
USHORT CmdLen;
|
||||
USHORT AppLen;
|
||||
USHORT PifLen;
|
||||
USHORT CurDirectoryLen;
|
||||
USHORT CurDrive;
|
||||
USHORT VDMState;
|
||||
} BASE_CHECK_VDM, *PBASE_CHECK_VDM;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG iTask;
|
||||
ULONG BinaryType;
|
||||
HANDLE ConsoleHandle;
|
||||
HANDLE VDMProcessHandle;
|
||||
HANDLE WaitObjectForParent;
|
||||
USHORT EntryIndex;
|
||||
USHORT VDMCreationState;
|
||||
} BASE_UPDATE_VDM_ENTRY, *PBASE_UPDATE_VDM_ENTRY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
HANDLE hParent;
|
||||
ULONG ExitCode;
|
||||
} BASE_GET_VDM_EXIT_CODE, *PBASE_GET_VDM_EXIT_CODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Level;
|
||||
DWORD Flags;
|
||||
} BASE_SET_PROCESS_SHUTDOWN_PARAMS, *PBASE_SET_PROCESS_SHUTDOWN_PARAMS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Level;
|
||||
DWORD Flags;
|
||||
} BASE_GET_PROCESS_SHUTDOWN_PARAMS, *PBASE_GET_PROCESS_SHUTDOWN_PARAMS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG VideoMode;
|
||||
} BASE_SOUND_SENTRY, *PBASE_SOUND_SENTRY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING DeviceName;
|
||||
UNICODE_STRING TargetName;
|
||||
DWORD dwFlags;
|
||||
} BASE_DEFINE_DOS_DEVICE, *PBASE_DEFINE_DOS_DEVICE;
|
||||
|
||||
typedef struct _BASE_API_MESSAGE
|
||||
{
|
||||
PORT_MESSAGE Header;
|
||||
|
||||
PCSR_CAPTURE_BUFFER CsrCaptureData;
|
||||
CSR_API_NUMBER ApiNumber;
|
||||
NTSTATUS Status;
|
||||
ULONG Reserved;
|
||||
union
|
||||
{
|
||||
BASE_CREATE_PROCESS CreateProcessRequest;
|
||||
BASE_CREATE_THREAD CreateThreadRequest;
|
||||
BASE_EXIT_PROCESS ExitProcessRequest;
|
||||
BASE_GET_TEMP_FILE GetTempFile;
|
||||
BASE_CHECK_VDM CheckVdm;
|
||||
BASE_UPDATE_VDM_ENTRY UpdateVdmEntry;
|
||||
BASE_GET_VDM_EXIT_CODE GetVdmExitCode;
|
||||
BASE_SET_PROCESS_SHUTDOWN_PARAMS SetShutdownParametersRequest;
|
||||
BASE_GET_PROCESS_SHUTDOWN_PARAMS GetShutdownParametersRequest;
|
||||
BASE_SOUND_SENTRY SoundSentryRequest;
|
||||
BASE_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
|
||||
} Data;
|
||||
} BASE_API_MESSAGE, *PBASE_API_MESSAGE;
|
||||
|
||||
// Check that a BASE_API_MESSAGE can hold in a CSR_API_MESSAGE.
|
||||
CHECK_API_MSG_SIZE(BASE_API_MESSAGE);
|
||||
|
||||
#endif // _BASEMSG_H
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,675 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Console Server DLL
|
||||
* FILE: include/reactos/subsys/win/conmsg.h
|
||||
* PURPOSE: Public definitions for communication
|
||||
* between Console API Clients and Servers
|
||||
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#ifndef _CONMSG_H
|
||||
#define _CONMSG_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#define CONSRV_SERVERDLL_INDEX 2
|
||||
#define CONSRV_FIRST_API_NUMBER 512
|
||||
|
||||
// Windows Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
|
||||
// plus a little bit of Windows 7.
|
||||
typedef enum _CONSRV_API_NUMBER
|
||||
{
|
||||
ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
|
||||
ConsolepGetConsoleInput,
|
||||
ConsolepWriteConsoleInput,
|
||||
ConsolepReadConsoleOutput,
|
||||
ConsolepWriteConsoleOutput,
|
||||
ConsolepReadConsoleOutputString,
|
||||
ConsolepWriteConsoleOutputString,
|
||||
ConsolepFillConsoleOutput,
|
||||
ConsolepGetMode,
|
||||
// ConsolepGetNumberOfFonts,
|
||||
ConsolepGetNumberOfInputEvents,
|
||||
ConsolepGetScreenBufferInfo,
|
||||
ConsolepGetCursorInfo,
|
||||
// ConsolepGetMouseInfo,
|
||||
// ConsolepGetFontInfo,
|
||||
// ConsolepGetFontSize,
|
||||
// ConsolepGetCurrentFont,
|
||||
ConsolepSetMode,
|
||||
ConsolepSetActiveScreenBuffer,
|
||||
ConsolepFlushInputBuffer,
|
||||
ConsolepGetLargestWindowSize,
|
||||
ConsolepSetScreenBufferSize,
|
||||
ConsolepSetCursorPosition,
|
||||
ConsolepSetCursorInfo,
|
||||
ConsolepSetWindowInfo,
|
||||
ConsolepScrollScreenBuffer,
|
||||
ConsolepSetTextAttribute,
|
||||
// ConsolepSetFont,
|
||||
ConsolepSetIcon,
|
||||
ConsolepReadConsole,
|
||||
ConsolepWriteConsole,
|
||||
ConsolepDuplicateHandle,
|
||||
// ConsolepGetHandleInformation,
|
||||
// ConsolepSetHandleInformation,
|
||||
ConsolepCloseHandle,
|
||||
ConsolepVerifyIoHandle,
|
||||
ConsolepAlloc,
|
||||
ConsolepFree,
|
||||
ConsolepGetTitle,
|
||||
ConsolepSetTitle,
|
||||
ConsolepCreateScreenBuffer,
|
||||
// ConsolepInvalidateBitMapRect,
|
||||
// ConsolepVDMOperation,
|
||||
// ConsolepSetCursor,
|
||||
// ConsolepShowCursor,
|
||||
// ConsolepMenuControl,
|
||||
// ConsolepSetPalette,
|
||||
ConsolepSetDisplayMode,
|
||||
// ConsolepRegisterVDM,
|
||||
ConsolepGetHardwareState,
|
||||
ConsolepSetHardwareState,
|
||||
ConsolepGetDisplayMode,
|
||||
ConsolepAddAlias,
|
||||
ConsolepGetAlias,
|
||||
ConsolepGetAliasesLength,
|
||||
ConsolepGetAliasExesLength,
|
||||
ConsolepGetAliases,
|
||||
ConsolepGetAliasExes,
|
||||
ConsolepExpungeCommandHistory,
|
||||
ConsolepSetNumberOfCommands,
|
||||
ConsolepGetCommandHistoryLength,
|
||||
ConsolepGetCommandHistory,
|
||||
// ConsolepSetCommandHistoryMode,
|
||||
ConsolepGetCP,
|
||||
ConsolepSetCP,
|
||||
// ConsolepSetKeyShortcuts,
|
||||
// ConsolepSetMenuClose,
|
||||
// ConsolepNotifyLastClose,
|
||||
ConsolepGenerateCtrlEvent,
|
||||
// ConsolepGetKeyboardLayoutName,
|
||||
ConsolepGetConsoleWindow,
|
||||
// ConsolepCharType,
|
||||
// ConsolepSetLocalEUDC,
|
||||
// ConsolepSetCursorMode,
|
||||
// ConsolepGetCursorMode,
|
||||
// ConsolepRegisterOS2,
|
||||
// ConsolepSetOS2OemFormat,
|
||||
// ConsolepGetNlsMode,
|
||||
// ConsolepSetNlsMode,
|
||||
// ConsolepRegisterConsoleIME,
|
||||
// ConsolepUnregisterConsoleIME,
|
||||
// ConsolepGetLangId,
|
||||
ConsolepAttach,
|
||||
ConsolepGetSelectionInfo,
|
||||
ConsolepGetProcessList,
|
||||
ConsolepGetHistory,
|
||||
ConsolepSetHistory,
|
||||
|
||||
ConsolepMaxApiNumber
|
||||
} CONSRV_API_NUMBER, *PCONSRV_API_NUMBER;
|
||||
|
||||
|
||||
typedef struct _CONSOLE_START_INFO
|
||||
{
|
||||
DWORD dwStartupFlags;
|
||||
DWORD FillAttribute;
|
||||
COORD ScreenBufferSize;
|
||||
WORD ShowWindow;
|
||||
POINT ConsoleWindowOrigin;
|
||||
SIZE ConsoleWindowSize;
|
||||
// UNICODE_STRING ConsoleTitle;
|
||||
WCHAR ConsoleTitle[MAX_PATH + 1]; // Console title or full path to the startup shortcut
|
||||
WCHAR AppPath[MAX_PATH + 1]; // Full path of the launched app
|
||||
} CONSOLE_START_INFO, *PCONSOLE_START_INFO;
|
||||
|
||||
typedef struct _CONSOLE_CONNECTION_INFO
|
||||
{
|
||||
BOOL ConsoleNeeded; // Used for GUI apps only.
|
||||
|
||||
/* Adapted from CONSOLE_ALLOCCONSOLE */
|
||||
CONSOLE_START_INFO ConsoleStartInfo;
|
||||
|
||||
HANDLE Console; // ConsoleHandle // On ReactOS, it is a PCONSOLE
|
||||
HANDLE InputHandle;
|
||||
HANDLE OutputHandle;
|
||||
HANDLE ErrorHandle;
|
||||
HANDLE InputWaitHandle;
|
||||
LPTHREAD_START_ROUTINE CtrlDispatcher;
|
||||
LPTHREAD_START_ROUTINE PropDispatcher;
|
||||
} CONSOLE_CONNECTION_INFO, *PCONSOLE_CONNECTION_INFO;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG nMaxIds;
|
||||
ULONG nProcessIdsTotal;
|
||||
PDWORD pProcessIds;
|
||||
} CONSOLE_GETPROCESSLIST, *PCONSOLE_GETPROCESSLIST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
|
||||
BOOL Unicode;
|
||||
ULONG NrCharactersToWrite;
|
||||
ULONG NrCharactersWritten;
|
||||
|
||||
ULONG BufferSize;
|
||||
PVOID Buffer;
|
||||
} CONSOLE_WRITECONSOLE, *PCONSOLE_WRITECONSOLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE InputHandle;
|
||||
|
||||
BOOL Unicode;
|
||||
WORD NrCharactersToRead;
|
||||
WORD NrCharactersRead;
|
||||
|
||||
UNICODE_STRING ExeName;
|
||||
DWORD CtrlWakeupMask;
|
||||
DWORD ControlKeyState;
|
||||
|
||||
ULONG BufferSize;
|
||||
PVOID Buffer;
|
||||
} CONSOLE_READCONSOLE, *PCONSOLE_READCONSOLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
PCONSOLE_START_INFO ConsoleStartInfo;
|
||||
|
||||
HANDLE Console; // ConsoleHandle // On ReactOS, it is a PCONSOLE
|
||||
HANDLE InputHandle;
|
||||
HANDLE OutputHandle;
|
||||
HANDLE ErrorHandle;
|
||||
HANDLE InputWaitHandle;
|
||||
LPTHREAD_START_ROUTINE CtrlDispatcher;
|
||||
LPTHREAD_START_ROUTINE PropDispatcher;
|
||||
} CONSOLE_ALLOCCONSOLE, *PCONSOLE_ALLOCCONSOLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD ProcessId; // If ProcessId == ATTACH_PARENT_PROCESS == -1, then attach the current process to its parent process console.
|
||||
HANDLE Console; // ConsoleHandle // On ReactOS, it is a PCONSOLE
|
||||
HANDLE InputHandle;
|
||||
HANDLE OutputHandle;
|
||||
HANDLE ErrorHandle;
|
||||
HANDLE InputWaitHandle;
|
||||
LPTHREAD_START_ROUTINE CtrlDispatcher;
|
||||
LPTHREAD_START_ROUTINE PropDispatcher;
|
||||
} CONSOLE_ATTACHCONSOLE, *PCONSOLE_ATTACHCONSOLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG Dummy;
|
||||
} CONSOLE_FREECONSOLE, *PCONSOLE_FREECONSOLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
CONSOLE_SCREEN_BUFFER_INFO Info;
|
||||
} CONSOLE_GETSCREENBUFFERINFO, *PCONSOLE_GETSCREENBUFFERINFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
COORD Position;
|
||||
} CONSOLE_SETCURSORPOSITION, *PCONSOLE_SETCURSORPOSITION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
CONSOLE_CURSOR_INFO Info;
|
||||
} CONSOLE_GETSETCURSORINFO, *PCONSOLE_GETSETCURSORINFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
WORD Attrib;
|
||||
} CONSOLE_SETTEXTATTRIB, *PCONSOLE_SETTEXTATTRIB;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle; /* A valid input or output console handle */
|
||||
DWORD ConsoleMode;
|
||||
} CONSOLE_GETSETCONSOLEMODE, *PCONSOLE_GETSETCONSOLEMODE;
|
||||
|
||||
|
||||
#define CONSOLE_WINDOWED 0 /* Internal console hardware state */
|
||||
typedef struct
|
||||
{
|
||||
// HANDLE OutputHandle;
|
||||
DWORD DisplayMode;
|
||||
} CONSOLE_GETDISPLAYMODE, *PCONSOLE_GETDISPLAYMODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
DWORD DisplayMode;
|
||||
COORD NewSBDim;
|
||||
} CONSOLE_SETDISPLAYMODE, *PCONSOLE_SETDISPLAYMODE;
|
||||
|
||||
/*
|
||||
* Console hardware states.
|
||||
*/
|
||||
#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
|
||||
#define CONSOLE_HARDWARE_STATE_DIRECT 1
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
DWORD State;
|
||||
} CONSOLE_GETSETHWSTATE, *PCONSOLE_GETSETHWSTATE;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle; /* Handle to newly created screen buffer */
|
||||
|
||||
DWORD Access;
|
||||
DWORD ShareMode;
|
||||
BOOL Inheritable;
|
||||
} CONSOLE_CREATESCREENBUFFER, *PCONSOLE_CREATESCREENBUFFER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle; /* Handle to screen buffer to switch to */
|
||||
} CONSOLE_SETACTIVESCREENBUFFER, *PCONSOLE_SETACTIVESCREENBUFFER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Length;
|
||||
PWCHAR Title;
|
||||
} CONSOLE_GETSETCONSOLETITLE, *PCONSOLE_GETSETCONSOLETITLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
|
||||
BOOL Unicode;
|
||||
COORD BufferSize;
|
||||
COORD BufferCoord;
|
||||
SMALL_RECT WriteRegion;
|
||||
CHAR_INFO* CharInfo;
|
||||
} CONSOLE_WRITEOUTPUT, *PCONSOLE_WRITEOUTPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE InputHandle;
|
||||
} CONSOLE_FLUSHINPUTBUFFER, *PCONSOLE_FLUSHINPUTBUFFER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
|
||||
BOOL Unicode;
|
||||
SMALL_RECT ScrollRectangle;
|
||||
BOOL UseClipRectangle;
|
||||
SMALL_RECT ClipRectangle;
|
||||
COORD DestinationOrigin;
|
||||
CHAR_INFO Fill;
|
||||
} CONSOLE_SCROLLSCREENBUFFER, *PCONSOLE_SCROLLSCREENBUFFER;
|
||||
|
||||
|
||||
/*
|
||||
* An attribute or a character are instances of the same entity, namely
|
||||
* a "code" (what would be called an (ANSI) escape sequence). Therefore
|
||||
* encode them inside the same structure.
|
||||
*/
|
||||
typedef enum _CODE_TYPE
|
||||
{
|
||||
CODE_ASCII = 0x01,
|
||||
CODE_UNICODE = 0x02,
|
||||
CODE_ATTRIBUTE = 0x03
|
||||
} CODE_TYPE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
|
||||
DWORD NumCodesToRead;
|
||||
COORD ReadCoord;
|
||||
COORD EndCoord;
|
||||
|
||||
DWORD CodesRead;
|
||||
|
||||
CODE_TYPE CodeType;
|
||||
union
|
||||
{
|
||||
PVOID pCode;
|
||||
PCHAR AsciiChar;
|
||||
PWCHAR UnicodeChar;
|
||||
PWORD Attribute;
|
||||
} pCode; // Either a pointer to a character or to an attribute.
|
||||
} CONSOLE_READOUTPUTCODE, *PCONSOLE_READOUTPUTCODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
|
||||
ULONG BufferSize;
|
||||
WORD Length;
|
||||
COORD Coord;
|
||||
COORD EndCoord;
|
||||
|
||||
ULONG NrCharactersWritten;
|
||||
|
||||
USHORT CodeType;
|
||||
union
|
||||
{
|
||||
// PVOID String;
|
||||
PVOID pCode;
|
||||
PCHAR AsciiChar;
|
||||
PWCHAR UnicodeChar;
|
||||
PWORD Attribute;
|
||||
} pCode; // Either a pointer to a character or to an attribute.
|
||||
} CONSOLE_WRITEOUTPUTCODE, *PCONSOLE_WRITEOUTPUTCODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
|
||||
CODE_TYPE CodeType;
|
||||
union
|
||||
{
|
||||
CHAR AsciiChar;
|
||||
WCHAR UnicodeChar;
|
||||
WORD Attribute;
|
||||
} Code; // Either a character or an attribute.
|
||||
|
||||
COORD Coord;
|
||||
ULONG Length;
|
||||
|
||||
ULONG NrCharactersWritten; // FIXME: Only for chars, is it removable ?
|
||||
} CONSOLE_FILLOUTPUTCODE, *PCONSOLE_FILLOUTPUTCODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE InputHandle;
|
||||
BOOL Unicode;
|
||||
BOOL bRead; // TRUE --> Read ; FALSE --> Peek
|
||||
|
||||
ULONG InputsRead;
|
||||
|
||||
ULONG Length;
|
||||
PINPUT_RECORD InputRecord;
|
||||
} CONSOLE_GETINPUT, *PCONSOLE_GETINPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
|
||||
BOOL Unicode;
|
||||
COORD BufferSize;
|
||||
COORD BufferCoord;
|
||||
SMALL_RECT ReadRegion;
|
||||
CHAR_INFO* CharInfo;
|
||||
} CONSOLE_READOUTPUT, *PCONSOLE_READOUTPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE InputHandle;
|
||||
BOOL Unicode;
|
||||
DWORD Length;
|
||||
INPUT_RECORD* InputRecord;
|
||||
} CONSOLE_WRITEINPUT, *PCONSOLE_WRITEINPUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
} CONSOLE_CLOSEHANDLE, *PCONSOLE_CLOSEHANDLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
} CONSOLE_VERIFYHANDLE, *PCONSOLE_VERIFYHANDLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
DWORD Access;
|
||||
BOOL Inheritable;
|
||||
DWORD Options;
|
||||
} CONSOLE_DUPLICATEHANDLE, *PCONSOLE_DUPLICATEHANDLE;
|
||||
|
||||
/*
|
||||
* Type of handles.
|
||||
*/
|
||||
typedef enum _CONSOLE_HANDLE_TYPE
|
||||
{
|
||||
HANDLE_INPUT = 0x01,
|
||||
HANDLE_OUTPUT = 0x02
|
||||
} CONSOLE_HANDLE_TYPE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE ConsoleHandle;
|
||||
CONSOLE_HANDLE_TYPE HandleType;
|
||||
DWORD Access;
|
||||
BOOL Inheritable;
|
||||
DWORD ShareMode;
|
||||
} CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
COORD Size;
|
||||
} CONSOLE_GETLARGESTWINDOWSIZE, *PCONSOLE_GETLARGESTWINDOWSIZE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
BOOL Absolute;
|
||||
SMALL_RECT WindowRect; // New console window position in the screen-buffer frame (Absolute == TRUE)
|
||||
// or in the old window position frame (Absolute == FALSE).
|
||||
} CONSOLE_SETWINDOWINFO, *PCONSOLE_SETWINDOWINFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HWND WindowHandle;
|
||||
} CONSOLE_GETWINDOW, *PCONSOLE_GETWINDOW;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HICON WindowIcon;
|
||||
} CONSOLE_SETICON, *PCONSOLE_SETICON;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG SourceLength;
|
||||
ULONG TargetLength; // Also used for storing the number of bytes written.
|
||||
ULONG ExeLength;
|
||||
LPWSTR Source;
|
||||
LPWSTR Target;
|
||||
LPWSTR Exe;
|
||||
} CONSOLE_ADDGETALIAS, *PCONSOLE_ADDGETALIAS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD ExeLength;
|
||||
DWORD AliasesBufferLength;
|
||||
LPWSTR ExeName;
|
||||
LPWSTR AliasesBuffer;
|
||||
} CONSOLE_GETALLALIASES, *PCONSOLE_GETALLALIASES;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Length;
|
||||
DWORD ExeLength;
|
||||
LPWSTR ExeName;
|
||||
} CONSOLE_GETALLALIASESLENGTH, *PCONSOLE_GETALLALIASESLENGTH;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Length;
|
||||
LPWSTR ExeNames;
|
||||
} CONSOLE_GETALIASESEXES, *PCONSOLE_GETALIASESEXES;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Length;
|
||||
} CONSOLE_GETALIASESEXESLENGTH, *PCONSOLE_GETALIASESEXESLENGTH;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING ExeName;
|
||||
PWCHAR History;
|
||||
DWORD Length;
|
||||
} CONSOLE_GETCOMMANDHISTORY, *PCONSOLE_GETCOMMANDHISTORY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING ExeName;
|
||||
DWORD Length;
|
||||
} CONSOLE_GETCOMMANDHISTORYLENGTH, *PCONSOLE_GETCOMMANDHISTORYLENGTH;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING ExeName;
|
||||
} CONSOLE_EXPUNGECOMMANDHISTORY, *PCONSOLE_EXPUNGECOMMANDHISTORY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UNICODE_STRING ExeName;
|
||||
DWORD NumCommands;
|
||||
} CONSOLE_SETHISTORYNUMBERCOMMANDS, *PCONSOLE_SETHISTORYNUMBERCOMMANDS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT HistoryBufferSize;
|
||||
UINT NumberOfHistoryBuffers;
|
||||
DWORD dwFlags;
|
||||
} CONSOLE_GETSETHISTORYINFO, *PCONSOLE_GETSETHISTORYINFO;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD Event;
|
||||
DWORD ProcessGroup;
|
||||
} CONSOLE_GENERATECTRLEVENT, *PCONSOLE_GENERATECTRLEVENT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE InputHandle;
|
||||
DWORD NumInputEvents;
|
||||
} CONSOLE_GETNUMINPUTEVENTS, *PCONSOLE_GETNUMINPUTEVENTS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
COORD Size;
|
||||
} CONSOLE_SETSCREENBUFFERSIZE, *PCONSOLE_SETSCREENBUFFERSIZE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CONSOLE_SELECTION_INFO Info;
|
||||
} CONSOLE_GETSELECTIONINFO, *PCONSOLE_GETSELECTIONINFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BOOL InputCP; // TRUE : Input Code Page ; FALSE : Output Code Page
|
||||
UINT CodePage;
|
||||
} CONSOLE_GETSETINPUTOUTPUTCP, *PCONSOLE_GETSETINPUTOUTPUTCP;
|
||||
|
||||
typedef struct _CONSOLE_API_MESSAGE
|
||||
{
|
||||
PORT_MESSAGE Header;
|
||||
|
||||
PCSR_CAPTURE_BUFFER CsrCaptureData;
|
||||
CSR_API_NUMBER ApiNumber;
|
||||
NTSTATUS Status;
|
||||
ULONG Reserved;
|
||||
union
|
||||
{
|
||||
/* Console initialization and uninitialization */
|
||||
CONSOLE_ALLOCCONSOLE AllocConsoleRequest;
|
||||
CONSOLE_ATTACHCONSOLE AttachConsoleRequest;
|
||||
CONSOLE_FREECONSOLE FreeConsoleRequest;
|
||||
|
||||
/* Process list */
|
||||
CONSOLE_GETPROCESSLIST GetProcessListRequest;
|
||||
|
||||
/* Handles */
|
||||
CONSOLE_OPENCONSOLE OpenConsoleRequest;
|
||||
CONSOLE_CLOSEHANDLE CloseHandleRequest;
|
||||
CONSOLE_VERIFYHANDLE VerifyHandleRequest;
|
||||
CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest;
|
||||
|
||||
/* Cursor */
|
||||
CONSOLE_GETSETCURSORINFO CursorInfoRequest;
|
||||
CONSOLE_SETCURSORPOSITION SetCursorPositionRequest;
|
||||
|
||||
/* Screen-buffer */
|
||||
CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest;
|
||||
CONSOLE_SETACTIVESCREENBUFFER SetScreenBufferRequest;
|
||||
CONSOLE_GETSCREENBUFFERINFO ScreenBufferInfoRequest;
|
||||
CONSOLE_SETSCREENBUFFERSIZE SetScreenBufferSizeRequest;
|
||||
CONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest;
|
||||
|
||||
CONSOLE_GETSELECTIONINFO GetSelectionInfoRequest;
|
||||
CONSOLE_FLUSHINPUTBUFFER FlushInputBufferRequest;
|
||||
|
||||
/* Console mode */
|
||||
CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest;
|
||||
CONSOLE_GETDISPLAYMODE GetDisplayModeRequest;
|
||||
CONSOLE_SETDISPLAYMODE SetDisplayModeRequest;
|
||||
CONSOLE_GETSETHWSTATE HardwareStateRequest;
|
||||
|
||||
/* Console window */
|
||||
CONSOLE_GETSETCONSOLETITLE TitleRequest;
|
||||
CONSOLE_GETLARGESTWINDOWSIZE GetLargestWindowSizeRequest;
|
||||
CONSOLE_SETWINDOWINFO SetWindowInfoRequest;
|
||||
CONSOLE_GETWINDOW GetWindowRequest;
|
||||
CONSOLE_SETICON SetIconRequest;
|
||||
|
||||
/* Read */
|
||||
CONSOLE_READCONSOLE ReadConsoleRequest; // SrvReadConsole / ReadConsole
|
||||
CONSOLE_GETINPUT GetInputRequest; // SrvGetConsoleInput / PeekConsoleInput & ReadConsoleInput
|
||||
CONSOLE_READOUTPUT ReadOutputRequest; // SrvReadConsoleOutput / ReadConsoleOutput
|
||||
CONSOLE_READOUTPUTCODE ReadOutputCodeRequest; // SrvReadConsoleOutputString / ReadConsoleOutputAttribute & ReadConsoleOutputCharacter
|
||||
|
||||
/* Write */
|
||||
CONSOLE_WRITECONSOLE WriteConsoleRequest; // SrvWriteConsole / WriteConsole
|
||||
CONSOLE_WRITEINPUT WriteInputRequest;
|
||||
CONSOLE_WRITEOUTPUT WriteOutputRequest;
|
||||
CONSOLE_WRITEOUTPUTCODE WriteOutputCodeRequest;
|
||||
|
||||
CONSOLE_FILLOUTPUTCODE FillOutputRequest;
|
||||
CONSOLE_SETTEXTATTRIB SetTextAttribRequest;
|
||||
|
||||
/* Aliases */
|
||||
CONSOLE_ADDGETALIAS ConsoleAliasRequest;
|
||||
CONSOLE_GETALLALIASES GetAllAliasesRequest;
|
||||
CONSOLE_GETALLALIASESLENGTH GetAllAliasesLengthRequest;
|
||||
CONSOLE_GETALIASESEXES GetAliasesExesRequest;
|
||||
CONSOLE_GETALIASESEXESLENGTH GetAliasesExesLengthRequest;
|
||||
|
||||
/* History */
|
||||
CONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest;
|
||||
CONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest;
|
||||
CONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest;
|
||||
CONSOLE_SETHISTORYNUMBERCOMMANDS SetHistoryNumberCommandsRequest;
|
||||
CONSOLE_GETSETHISTORYINFO HistoryInfoRequest;
|
||||
|
||||
CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest;
|
||||
CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest;
|
||||
|
||||
/* Input and Output Code Pages */
|
||||
CONSOLE_GETSETINPUTOUTPUTCP ConsoleCPRequest;
|
||||
} Data;
|
||||
} CONSOLE_API_MESSAGE, *PCONSOLE_API_MESSAGE;
|
||||
|
||||
// Check that a CONSOLE_API_MESSAGE can hold in a CSR_API_MESSAGE.
|
||||
CHECK_API_MSG_SIZE(CONSOLE_API_MESSAGE);
|
||||
|
||||
#endif // _CONMSG_H
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Console Server DLL
|
||||
* FILE: include/reactos/subsys/win/console.h
|
||||
* PURPOSE: Public definitions for Console API Clients
|
||||
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#ifndef _CONSOLE_H
|
||||
#define _CONSOLE_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#define IsConsoleHandle(h) \
|
||||
(((ULONG_PTR)(h) & 0x10000003) == 0x3)
|
||||
|
||||
/* Console-reserved device "file" names */
|
||||
#define CONSOLE_FILE_NAME L"CON"
|
||||
#define CONSOLE_INPUT_FILE_NAME L"CONIN$"
|
||||
#define CONSOLE_OUTPUT_FILE_NAME L"CONOUT$"
|
||||
|
||||
#endif // _CONSOLE_H
|
||||
|
||||
/* EOF */
|
||||
@@ -1,16 +0,0 @@
|
||||
#if !defined(__INCLUDE_WIN_WINDOWS_H)
|
||||
#define __INCLUDE_WIN_WINDOWS_H
|
||||
|
||||
#include <csr/protocol.h>
|
||||
|
||||
/* w32 console server */
|
||||
#define WIN_SRV_WIN_CONSOLE 2
|
||||
NTSTATUS WINAPI ConServerDllInitialization (ULONG,LPWSTR*);
|
||||
|
||||
/* w32 user server */
|
||||
#define WIN_SRV_WIN_USER 3
|
||||
NTSTATUS WINAPI UserServerDllInitialization (ULONG,LPWSTR*);
|
||||
|
||||
#endif /* ndef __INCLUDE_WIN_WINDOWS_H */
|
||||
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS User API Server DLL
|
||||
* FILE: include/reactos/subsys/win/winmsg.h
|
||||
* PURPOSE: Public definitions for communication
|
||||
* between User-Mode API Clients and Servers
|
||||
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#ifndef _WINMSG_H
|
||||
#define _WINMSG_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#define USERSRV_SERVERDLL_INDEX 3
|
||||
#define USERSRV_FIRST_API_NUMBER 1024
|
||||
|
||||
// Windows Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
|
||||
typedef enum _USERSRV_API_NUMBER
|
||||
{
|
||||
UserpExitWindowsEx = USERSRV_FIRST_API_NUMBER,
|
||||
// UserpEndTask,
|
||||
// UserpLogon,
|
||||
UserpRegisterServicesProcess, // Not present in Win7
|
||||
// UserpActivateDebugger,
|
||||
// UserpGetThreadConsoleDesktop, // Not present in Win7
|
||||
// UserpDeviceEvent,
|
||||
UserpRegisterLogonProcess, // Not present in Win7
|
||||
// UserpCreateSystemThreads,
|
||||
// UserpRecordShutdownReason,
|
||||
// UserpCancelShutdown, // Added in Vista
|
||||
// UserpConsoleHandleOperation, // Added in Win7
|
||||
// UserpGetSetShutdownBlockReason, // Added in Vista
|
||||
|
||||
UserpMaxApiNumber
|
||||
} USERSRV_API_NUMBER, *PUSERSRV_API_NUMBER;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT Flags;
|
||||
DWORD Reserved;
|
||||
} USER_EXIT_REACTOS, *PUSER_EXIT_REACTOS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG_PTR ProcessId;
|
||||
} USER_REGISTER_SERVICES_PROCESS, *PUSER_REGISTER_SERVICES_PROCESS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG_PTR ProcessId;
|
||||
BOOL Register;
|
||||
} USER_REGISTER_LOGON_PROCESS, *PUSER_REGISTER_LOGON_PROCESS;
|
||||
|
||||
|
||||
typedef struct _USER_API_MESSAGE
|
||||
{
|
||||
PORT_MESSAGE Header;
|
||||
|
||||
PCSR_CAPTURE_BUFFER CsrCaptureData;
|
||||
CSR_API_NUMBER ApiNumber;
|
||||
NTSTATUS Status;
|
||||
ULONG Reserved;
|
||||
union
|
||||
{
|
||||
USER_EXIT_REACTOS ExitReactosRequest;
|
||||
USER_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
|
||||
USER_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
|
||||
} Data;
|
||||
} USER_API_MESSAGE, *PUSER_API_MESSAGE;
|
||||
|
||||
// Check that a USER_API_MESSAGE can hold in a CSR_API_MESSAGE.
|
||||
CHECK_API_MSG_SIZE(USER_API_MESSAGE);
|
||||
|
||||
#endif // _WINMSG_H
|
||||
|
||||
/* EOF */
|
||||
@@ -38,7 +38,7 @@ SmExecPgm(IN HANDLE SmApiPort,
|
||||
SmApiMsg.h.u1.s1.TotalLength = sizeof(SmApiMsg);
|
||||
|
||||
/* Initialize this specific API's parameters */
|
||||
SmApiMsg.ApiNumber = SmExecPgmApi;
|
||||
SmApiMsg.ApiNumber = SmpExecPgmApi;
|
||||
RtlCopyMemory(&SmApiMsg.u.ExecPgm.ProcessInformation,
|
||||
ProcessInformation,
|
||||
sizeof(SmApiMsg.u.ExecPgm.ProcessInformation));
|
||||
@@ -144,7 +144,7 @@ SmSessionComplete(IN HANDLE SmApiPort,
|
||||
SessionComplete->SessionStatus = SessionStatus;
|
||||
|
||||
/* Set the API Message Port Message header */
|
||||
ApiMessage.ApiNumber = SmSessionCompleteApi;
|
||||
ApiMessage.ApiNumber = SmpSessionCompleteApi;
|
||||
ApiMessage.h.u1.s1.DataLength = sizeof(SM_SESSION_COMPLETE_MSG) + 8;
|
||||
ApiMessage.h.u1.s1.TotalLength = sizeof(SM_API_MSG);
|
||||
ApiMessage.h.u2.ZeroInit = 0;
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
|
||||
if(ARCH STREQUAL "i386")
|
||||
add_subdirectory(ntvdm)
|
||||
endif()
|
||||
add_subdirectory(win)
|
||||
add_subdirectory(win32)
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
|
||||
include_directories(
|
||||
include
|
||||
${REACTOS_SOURCE_DIR}/include/reactos/subsys
|
||||
${REACTOS_SOURCE_DIR}/include/reactos/drivers)
|
||||
|
||||
add_executable(csrss2 main.c csr.rc)
|
||||
|
||||
set_module_type(csrss2 nativecui)
|
||||
target_link_libraries(csrss2 nt)
|
||||
add_importlibs(csrss2 ntdll csrsrv2)
|
||||
add_dependencies(csrss2 psdk bugcodes)
|
||||
add_cd_file(TARGET csrss2 DESTINATION reactos/system32 FOR all)
|
||||
|
||||
add_subdirectory(csrsrv)
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "Client/Server Runtime Process\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "csrss\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "csrss.exe\0"
|
||||
#include <reactos/version.rc>
|
||||
@@ -1,30 +0,0 @@
|
||||
|
||||
include_directories(${REACTOS_SOURCE_DIR}/subsystems/win32/csrss/include)
|
||||
include_directories(${REACTOS_SOURCE_DIR}/include/reactos/subsys)
|
||||
|
||||
spec2def(csrsrv2.dll csrsrv2.spec ADD_IMPORTLIB)
|
||||
|
||||
list(APPEND SOURCE
|
||||
api.c
|
||||
init.c
|
||||
process.c
|
||||
server.c
|
||||
session.c
|
||||
thread.c
|
||||
wait.c
|
||||
csrsrv.rc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/csrsrv2.def)
|
||||
|
||||
add_library(csrsrv2 SHARED ${SOURCE})
|
||||
|
||||
target_link_libraries(csrsrv2 ${PSEH_LIB} smlib)
|
||||
|
||||
set_module_type(csrsrv2 nativedll)
|
||||
|
||||
add_importlibs(csrsrv2 ntdll)
|
||||
|
||||
add_pch(csrsrv2 srv.h)
|
||||
|
||||
add_dependencies(csrsrv2 psdk bugcodes)
|
||||
add_cd_file(TARGET csrsrv2 DESTINATION reactos/system32 FOR all)
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#define REACTOS_VERSION_DLL
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS CSR Core Server\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "csrsrv\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "csrsrv.dll\0"
|
||||
#include <reactos/version.rc>
|
||||
@@ -1,988 +0,0 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS CSR Sub System
|
||||
* FILE: subsys/csr/csrsrv/init.c
|
||||
* PURPOSE: CSR Server DLL Initialization
|
||||
* PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include "srv.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* DATA **********************************************************************/
|
||||
|
||||
HANDLE CsrObjectDirectory;
|
||||
ULONG SessionId;
|
||||
BOOLEAN CsrProfileControl;
|
||||
UNICODE_STRING CsrDirectoryName;
|
||||
HANDLE CsrHeap;
|
||||
HANDLE BNOLinksDirectory;
|
||||
HANDLE SessionObjectDirectory;
|
||||
HANDLE DosDevicesDirectory;
|
||||
HANDLE CsrInitializationEvent;
|
||||
SYSTEM_BASIC_INFORMATION CsrNtSysInfo;
|
||||
ULONG CsrDebug;
|
||||
|
||||
/* PRIVATE FUNCTIONS *********************************************************/
|
||||
|
||||
/*++
|
||||
* @name CsrParseServerCommandLine
|
||||
*
|
||||
* The CsrParseServerCommandLine routine parses the CSRSS command-line in the
|
||||
* registry and performs operations for each entry found.
|
||||
*
|
||||
* @param ArgumentCount
|
||||
* Number of arguments on the command line.
|
||||
*
|
||||
* @param Arguments
|
||||
* Array of arguments.
|
||||
*
|
||||
* @return STATUS_SUCCESS in case of success, STATUS_UNSUCCESSFUL
|
||||
* othwerwise.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
FASTCALL
|
||||
CsrParseServerCommandLine(IN ULONG ArgumentCount,
|
||||
IN PCHAR Arguments[])
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PCHAR ParameterName = NULL, ParameterValue = NULL, EntryPoint, ServerString;
|
||||
ULONG i, DllIndex;
|
||||
ANSI_STRING AnsiString;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
|
||||
/* Set the Defaults */
|
||||
CsrTotalPerProcessDataLength = 0;
|
||||
CsrObjectDirectory = 0;
|
||||
CsrMaxApiRequestThreads = 16;
|
||||
|
||||
/* Save our Session ID, and create a Directory for it */
|
||||
SessionId = NtCurrentPeb()->SessionId;
|
||||
Status = CsrCreateSessionObjectDirectory(SessionId);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSS: CsrCreateSessionObjectDirectory failed (%lx)\n",
|
||||
Status);
|
||||
|
||||
/* It's not fatal if the session ID isn't zero */
|
||||
if (SessionId) return Status;
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
}
|
||||
|
||||
/* Loop through every argument */
|
||||
for (i = 1; i < ArgumentCount; i++)
|
||||
{
|
||||
/* Split Name and Value */
|
||||
ParameterName = Arguments[i];
|
||||
ParameterValue = NULL;
|
||||
ParameterValue = strchr(ParameterName, '=');
|
||||
if (ParameterValue) *ParameterValue++ = ANSI_NULL;
|
||||
DPRINT1("Name=%s, Value=%s\n", ParameterName, ParameterValue);
|
||||
|
||||
/* Check for Object Directory */
|
||||
if (!_stricmp(ParameterName, "ObjectDirectory"))
|
||||
{
|
||||
/* Check if a session ID is specified */
|
||||
if (SessionId)
|
||||
{
|
||||
DPRINT1("Sessions not yet implemented\n");
|
||||
ASSERT(SessionId);
|
||||
}
|
||||
|
||||
/* Initialize the directory name */
|
||||
RtlInitAnsiString(&AnsiString, ParameterValue);
|
||||
Status = RtlAnsiStringToUnicodeString(&CsrDirectoryName,
|
||||
&AnsiString,
|
||||
TRUE);
|
||||
ASSERT(NT_SUCCESS(Status) || SessionId != 0);
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
|
||||
/* Create it */
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&CsrDirectoryName,
|
||||
OBJ_OPENIF | OBJ_CASE_INSENSITIVE | OBJ_PERMANENT,
|
||||
NULL,
|
||||
NULL);
|
||||
Status = NtCreateDirectoryObject(&CsrObjectDirectory,
|
||||
DIRECTORY_ALL_ACCESS,
|
||||
&ObjectAttributes);
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
|
||||
/* Secure it */
|
||||
Status = CsrSetDirectorySecurity(CsrObjectDirectory);
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
}
|
||||
else if (!_stricmp(ParameterName, "SubSystemType"))
|
||||
{
|
||||
/* Ignored */
|
||||
}
|
||||
else if (!_stricmp(ParameterName, "MaxRequestThreads"))
|
||||
{
|
||||
Status = RtlCharToInteger(ParameterValue,
|
||||
0,
|
||||
&CsrMaxApiRequestThreads);
|
||||
}
|
||||
else if (!_stricmp(ParameterName, "RequestThreads"))
|
||||
{
|
||||
/* Ignored */
|
||||
Status = STATUS_SUCCESS;
|
||||
}
|
||||
else if (!_stricmp(ParameterName, "ProfileControl"))
|
||||
{
|
||||
/* Ignored */
|
||||
}
|
||||
else if (!_stricmp(ParameterName, "SharedSection"))
|
||||
{
|
||||
/* Craete the Section */
|
||||
Status = CsrSrvCreateSharedSection(ParameterValue);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSS: *** Invalid syntax for %s=%s (Status == %X)\n",
|
||||
ParameterName, ParameterValue, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Load us */
|
||||
Status = CsrLoadServerDll("CSRSS", NULL, CSR_SRV_SERVER);
|
||||
}
|
||||
else if (!_stricmp(ParameterName, "ServerDLL"))
|
||||
{
|
||||
/* Loop the command line */
|
||||
EntryPoint = NULL;
|
||||
Status = STATUS_INVALID_PARAMETER;
|
||||
ServerString = ParameterValue;
|
||||
while (*ServerString)
|
||||
{
|
||||
/* Check for the Entry Point */
|
||||
if ((*ServerString == ':') && (!EntryPoint))
|
||||
{
|
||||
/* Found it. Add a nullchar and save it */
|
||||
*ServerString++ = ANSI_NULL;
|
||||
EntryPoint = ServerString;
|
||||
}
|
||||
|
||||
/* Check for the Dll Index */
|
||||
if (*ServerString++ == ',') break;
|
||||
}
|
||||
|
||||
/* Did we find something to load? */
|
||||
if (!*ServerString)
|
||||
{
|
||||
DPRINT1("CSRSS: *** Invalid syntax for ServerDll=%s (Status == %X)\n",
|
||||
ParameterValue, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Convert it to a ULONG */
|
||||
Status = RtlCharToInteger(ServerString, 10, &DllIndex);
|
||||
|
||||
/* Add a null char if it was valid */
|
||||
if (NT_SUCCESS(Status)) ServerString[-1] = ANSI_NULL;
|
||||
|
||||
/* Load it */
|
||||
if (CsrDebug & 1) DPRINT1("CSRSS: Loading ServerDll=%s:%s\n", ParameterValue, EntryPoint);
|
||||
Status = CsrLoadServerDll(ParameterValue, EntryPoint, DllIndex);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSS: *** Failed loading ServerDll=%s (Status == 0x%x)\n",
|
||||
ParameterValue, Status);
|
||||
return Status;
|
||||
}
|
||||
}
|
||||
else if (!_stricmp(ParameterName, "Windows"))
|
||||
{
|
||||
/* Ignored */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Invalid parameter on the command line */
|
||||
Status = STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
/* Return status */
|
||||
return Status;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrCreateLocalSystemSD
|
||||
*
|
||||
* The CsrCreateLocalSystemSD routine creates a Security Descriptor for
|
||||
* the local account with PORT_ALL_ACCESS.
|
||||
*
|
||||
* @param LocalSystemSd
|
||||
* Pointer to a pointer to the security descriptor to create.
|
||||
*
|
||||
* @return STATUS_SUCCESS in case of success, STATUS_UNSUCCESSFUL
|
||||
* othwerwise.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCreateLocalSystemSD(OUT PSECURITY_DESCRIPTOR *LocalSystemSd)
|
||||
{
|
||||
SID_IDENTIFIER_AUTHORITY NtSidAuthority = {SECURITY_NT_AUTHORITY};
|
||||
PSID SystemSid;
|
||||
ULONG Length;
|
||||
PSECURITY_DESCRIPTOR SystemSd;
|
||||
PACL Dacl;
|
||||
NTSTATUS Status;
|
||||
|
||||
/* Initialize the System SID */
|
||||
RtlAllocateAndInitializeSid(&NtSidAuthority, 1,
|
||||
SECURITY_LOCAL_SYSTEM_RID,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
&SystemSid);
|
||||
|
||||
/* Get the length of the SID */
|
||||
Length = RtlLengthSid(SystemSid) + sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE);
|
||||
|
||||
/* Allocate a buffer for the Security Descriptor, with SID and DACL */
|
||||
SystemSd = RtlAllocateHeap(CsrHeap, 0, SECURITY_DESCRIPTOR_MIN_LENGTH + Length);
|
||||
|
||||
/* Set the pointer to the DACL */
|
||||
Dacl = (PACL)((ULONG_PTR)SystemSd + SECURITY_DESCRIPTOR_MIN_LENGTH);
|
||||
|
||||
/* Now create the SD itself */
|
||||
Status = RtlCreateSecurityDescriptor(SystemSd, SECURITY_DESCRIPTOR_REVISION);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Fail */
|
||||
RtlFreeHeap(CsrHeap, 0, SystemSd);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Create the DACL for it*/
|
||||
RtlCreateAcl(Dacl, Length, ACL_REVISION2);
|
||||
|
||||
/* Create the ACE */
|
||||
Status = RtlAddAccessAllowedAce(Dacl, ACL_REVISION, PORT_ALL_ACCESS, SystemSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Fail */
|
||||
RtlFreeHeap(CsrHeap, 0, SystemSd);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Clear the DACL in the SD */
|
||||
Status = RtlSetDaclSecurityDescriptor(SystemSd, TRUE, Dacl, FALSE);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Fail */
|
||||
RtlFreeHeap(CsrHeap, 0, SystemSd);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Free the SID and return*/
|
||||
RtlFreeSid(SystemSid);
|
||||
*LocalSystemSd = SystemSd;
|
||||
return Status;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name GetDosDevicesProtection
|
||||
*
|
||||
* The GetDosDevicesProtection creates a security descriptor for the DOS Devices
|
||||
* Object Directory.
|
||||
*
|
||||
* @param DosDevicesSd
|
||||
* Pointer to the Security Descriptor to return.
|
||||
*
|
||||
* @return STATUS_SUCCESS in case of success, STATUS_UNSUCCESSFUL
|
||||
* othwerwise.
|
||||
*
|
||||
* @remarks Depending on the DOS Devices Protection Mode (set in the registry),
|
||||
* regular users may or may not have full access to the directory.
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
GetDosDevicesProtection(OUT PSECURITY_DESCRIPTOR DosDevicesSd)
|
||||
{
|
||||
SID_IDENTIFIER_AUTHORITY WorldAuthority = {SECURITY_WORLD_SID_AUTHORITY};
|
||||
SID_IDENTIFIER_AUTHORITY CreatorAuthority = {SECURITY_CREATOR_SID_AUTHORITY};
|
||||
SID_IDENTIFIER_AUTHORITY NtSidAuthority = {SECURITY_NT_AUTHORITY};
|
||||
PSID WorldSid, CreatorSid, AdminSid, SystemSid;
|
||||
UCHAR KeyValueBuffer[0x40];
|
||||
PKEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInfo;
|
||||
UNICODE_STRING KeyName;
|
||||
ULONG ProtectionMode = 0;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
PACL Dacl;
|
||||
PACCESS_ALLOWED_ACE Ace;
|
||||
HANDLE hKey;
|
||||
NTSTATUS Status;
|
||||
ULONG ResultLength, SidLength, AclLength;
|
||||
|
||||
/* Create the SD */
|
||||
Status = RtlCreateSecurityDescriptor(DosDevicesSd, SECURITY_DESCRIPTOR_REVISION);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Initialize the System SID */
|
||||
Status = RtlAllocateAndInitializeSid(&NtSidAuthority, 1,
|
||||
SECURITY_LOCAL_SYSTEM_RID,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
&SystemSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Initialize the World SID */
|
||||
Status = RtlAllocateAndInitializeSid(&WorldAuthority, 1,
|
||||
SECURITY_WORLD_RID,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
&WorldSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Initialize the Admin SID */
|
||||
Status = RtlAllocateAndInitializeSid(&NtSidAuthority, 2,
|
||||
SECURITY_BUILTIN_DOMAIN_RID,
|
||||
DOMAIN_ALIAS_RID_ADMINS,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
&AdminSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Initialize the Creator SID */
|
||||
Status = RtlAllocateAndInitializeSid(&CreatorAuthority, 1,
|
||||
SECURITY_CREATOR_OWNER_RID,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
&CreatorSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Open the Session Manager Key */
|
||||
RtlInitUnicodeString(&KeyName, SM_REG_KEY);
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&KeyName,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
NULL,
|
||||
NULL);
|
||||
Status = NtOpenKey(&hKey, KEY_READ, &ObjectAttributes);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
/* Read the key value */
|
||||
RtlInitUnicodeString(&KeyName, L"ProtectionMode");
|
||||
Status = NtQueryValueKey(hKey,
|
||||
&KeyName,
|
||||
KeyValuePartialInformation,
|
||||
KeyValueBuffer,
|
||||
sizeof(KeyValueBuffer),
|
||||
&ResultLength);
|
||||
|
||||
/* Make sure it's what we expect it to be */
|
||||
KeyValuePartialInfo = (PKEY_VALUE_PARTIAL_INFORMATION)KeyValueBuffer;
|
||||
if ((NT_SUCCESS(Status)) && (KeyValuePartialInfo->Type == REG_DWORD) &&
|
||||
(*(PULONG)KeyValuePartialInfo->Data))
|
||||
{
|
||||
/* Save the Protection Mode */
|
||||
ProtectionMode = *(PULONG)KeyValuePartialInfo->Data;
|
||||
}
|
||||
|
||||
/* Close the handle */
|
||||
NtClose(hKey);
|
||||
}
|
||||
|
||||
/* Check the Protection Mode */
|
||||
if (ProtectionMode & 3)
|
||||
{
|
||||
/* Calculate SID Lengths */
|
||||
SidLength = RtlLengthSid(CreatorSid) + RtlLengthSid(SystemSid) +
|
||||
RtlLengthSid(AdminSid);
|
||||
AclLength = sizeof(ACL) + 3 * sizeof(ACCESS_ALLOWED_ACE) + SidLength;
|
||||
|
||||
/* Allocate memory for the DACL */
|
||||
Dacl = RtlAllocateHeap(CsrHeap, HEAP_ZERO_MEMORY, AclLength);
|
||||
ASSERT(Dacl != NULL);
|
||||
|
||||
/* Build the ACL and add 3 ACEs */
|
||||
Status = RtlCreateAcl(Dacl, AclLength, ACL_REVISION2);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(Dacl, ACL_REVISION, GENERIC_ALL, SystemSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(Dacl, ACL_REVISION, GENERIC_ALL, AdminSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(Dacl, ACL_REVISION, GENERIC_ALL, CreatorSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Edit the ACEs to make them inheritable */
|
||||
Status = RtlGetAce(Dacl, 0, (PVOID*)&Ace);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Ace->Header.AceFlags |= OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE;
|
||||
Status = RtlGetAce(Dacl, 1, (PVOID*)&Ace);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Ace->Header.AceFlags |= OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE;
|
||||
Status = RtlGetAce(Dacl, 2, (PVOID*)&Ace);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Ace->Header.AceFlags |= OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE | INHERIT_ONLY_ACE;
|
||||
|
||||
/* Set this DACL with the SD */
|
||||
Status = RtlSetDaclSecurityDescriptor(DosDevicesSd, TRUE, Dacl, FALSE);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
goto Quickie;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Calculate SID Lengths */
|
||||
SidLength = RtlLengthSid(WorldSid) + RtlLengthSid(SystemSid);
|
||||
AclLength = sizeof(ACL) + 3 * sizeof(ACCESS_ALLOWED_ACE) + SidLength;
|
||||
|
||||
/* Allocate memory for the DACL */
|
||||
Dacl = RtlAllocateHeap(CsrHeap, HEAP_ZERO_MEMORY, AclLength);
|
||||
ASSERT(Dacl != NULL);
|
||||
|
||||
/* Build the ACL and add 3 ACEs */
|
||||
Status = RtlCreateAcl(Dacl, AclLength, ACL_REVISION2);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(Dacl, ACL_REVISION, GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE, WorldSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(Dacl, ACL_REVISION, GENERIC_ALL, SystemSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(Dacl, ACL_REVISION, GENERIC_ALL, WorldSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Edit the last ACE to make it inheritable */
|
||||
Status = RtlGetAce(Dacl, 2, (PVOID*)&Ace);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Ace->Header.AceFlags |= OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE | INHERIT_ONLY_ACE;
|
||||
|
||||
/* Set this DACL with the SD */
|
||||
Status = RtlSetDaclSecurityDescriptor(DosDevicesSd, TRUE, Dacl, FALSE);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
goto Quickie;
|
||||
}
|
||||
|
||||
/* FIXME: failure cases! Fail: */
|
||||
/* Free the memory */
|
||||
RtlFreeHeap(CsrHeap, 0, Dacl);
|
||||
|
||||
/* FIXME: semi-failure cases! Quickie: */
|
||||
Quickie:
|
||||
/* Free the SIDs */
|
||||
RtlFreeSid(SystemSid);
|
||||
RtlFreeSid(WorldSid);
|
||||
RtlFreeSid(AdminSid);
|
||||
RtlFreeSid(CreatorSid);
|
||||
|
||||
/* Return */
|
||||
return Status;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name FreeDosDevicesProtection
|
||||
*
|
||||
* The FreeDosDevicesProtection frees the security descriptor that was created
|
||||
* by GetDosDevicesProtection
|
||||
*
|
||||
* @param DosDevicesSd
|
||||
* Pointer to the security descriptor to free.
|
||||
|
||||
* @return None.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
NTAPI
|
||||
FreeDosDevicesProtection(IN PSECURITY_DESCRIPTOR DosDevicesSd)
|
||||
{
|
||||
PACL Dacl;
|
||||
BOOLEAN Present, Default;
|
||||
NTSTATUS Status;
|
||||
|
||||
/* Get the DACL corresponding to this SD */
|
||||
Status = RtlGetDaclSecurityDescriptor(DosDevicesSd, &Present, &Dacl, &Default);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
ASSERT(Present);
|
||||
ASSERT(Dacl != NULL);
|
||||
|
||||
/* Free it */
|
||||
if ((NT_SUCCESS(Status)) && (Dacl)) RtlFreeHeap(CsrHeap, 0, Dacl);
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrCreateSessionObjectDirectory
|
||||
*
|
||||
* The CsrCreateSessionObjectDirectory routine creates the BaseNamedObjects,
|
||||
* Session and Dos Devices directories for the specified session.
|
||||
*
|
||||
* @param Session
|
||||
* Session ID for which to create the directories.
|
||||
*
|
||||
* @return STATUS_SUCCESS in case of success, STATUS_UNSUCCESSFUL
|
||||
* othwerwise.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCreateSessionObjectDirectory(IN ULONG Session)
|
||||
{
|
||||
WCHAR SessionBuffer[512], BnoBuffer[512];
|
||||
UNICODE_STRING SessionString, BnoString;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
HANDLE BnoHandle;
|
||||
SECURITY_DESCRIPTOR DosDevicesSd;
|
||||
NTSTATUS Status;
|
||||
|
||||
/* Generate the Session BNOLINKS Directory name */
|
||||
swprintf(SessionBuffer, L"%ws\\BNOLINKS", SESSION_ROOT);
|
||||
RtlInitUnicodeString(&SessionString, SessionBuffer);
|
||||
|
||||
/* Create it */
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&SessionString,
|
||||
OBJ_OPENIF | OBJ_CASE_INSENSITIVE,
|
||||
NULL,
|
||||
NULL);
|
||||
Status = NtCreateDirectoryObject(&BNOLinksDirectory,
|
||||
DIRECTORY_ALL_ACCESS,
|
||||
&ObjectAttributes);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSS: NtCreateDirectoryObject failed in "
|
||||
"CsrCreateSessionObjectDirectory - status = %lx\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Now add the Session ID */
|
||||
swprintf(SessionBuffer, L"%ld", Session);
|
||||
RtlInitUnicodeString(&SessionString, SessionBuffer);
|
||||
|
||||
/* Check if this is the first Session */
|
||||
if (Session)
|
||||
{
|
||||
/* Not the first, so the name will be slighly more complex */
|
||||
swprintf(BnoBuffer, L"%ws\\%ld\\BaseNamedObjects", SESSION_ROOT, Session);
|
||||
RtlInitUnicodeString(&BnoString, BnoBuffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Use the direct name */
|
||||
RtlInitUnicodeString(&BnoString, L"\\BaseNamedObjects");
|
||||
}
|
||||
|
||||
/* Create the symlink */
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&SessionString,
|
||||
OBJ_OPENIF | OBJ_CASE_INSENSITIVE,
|
||||
BNOLinksDirectory,
|
||||
NULL);
|
||||
Status = NtCreateSymbolicLinkObject(&BnoHandle,
|
||||
SYMBOLIC_LINK_ALL_ACCESS,
|
||||
&ObjectAttributes,
|
||||
&BnoString);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSS: NtCreateSymbolicLinkObject failed in "
|
||||
"CsrCreateSessionObjectDirectory - status = %lx\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Create the \DosDevices Security Descriptor */
|
||||
Status = GetDosDevicesProtection(&DosDevicesSd);
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
|
||||
/* Now create a directory for this session */
|
||||
swprintf(SessionBuffer, L"%ws\\%ld", SESSION_ROOT, Session);
|
||||
RtlInitUnicodeString(&SessionString, SessionBuffer);
|
||||
|
||||
/* Create the directory */
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&SessionString,
|
||||
OBJ_OPENIF | OBJ_CASE_INSENSITIVE,
|
||||
0,
|
||||
&DosDevicesSd);
|
||||
Status = NtCreateDirectoryObject(&SessionObjectDirectory,
|
||||
DIRECTORY_ALL_ACCESS,
|
||||
&ObjectAttributes);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSS: NtCreateDirectoryObject failed in "
|
||||
"CsrCreateSessionObjectDirectory - status = %lx\n", Status);
|
||||
FreeDosDevicesProtection(&DosDevicesSd);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Next, create a directory for this session's DOS Devices */
|
||||
RtlInitUnicodeString(&SessionString, L"DosDevices");
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&SessionString,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
SessionObjectDirectory,
|
||||
&DosDevicesSd);
|
||||
Status = NtCreateDirectoryObject(&DosDevicesDirectory,
|
||||
DIRECTORY_ALL_ACCESS,
|
||||
&ObjectAttributes);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSS: NtCreateDirectoryObject failed in "
|
||||
"CsrCreateSessionObjectDirectory - status = %lx\n", Status);
|
||||
}
|
||||
|
||||
/* Release the Security Descriptor */
|
||||
FreeDosDevicesProtection(&DosDevicesSd);
|
||||
|
||||
/* Return */
|
||||
return Status;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrSetProcessSecurity
|
||||
*
|
||||
* The CsrSetProcessSecurity routine protects access to the CSRSS process
|
||||
* from unauthorized tampering.
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return STATUS_SUCCESS in case of success, STATUS_UNSUCCESSFUL
|
||||
* othwerwise.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSetProcessSecurity(VOID)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
HANDLE hToken, hProcess = NtCurrentProcess();
|
||||
ULONG ReturnLength, Length;
|
||||
PTOKEN_USER TokenInfo = NULL;
|
||||
PSECURITY_DESCRIPTOR ProcSd = NULL;
|
||||
PACL Dacl;
|
||||
PSID UserSid;
|
||||
|
||||
/* Open our token */
|
||||
Status = NtOpenProcessToken(hProcess, TOKEN_QUERY, &hToken);
|
||||
if (!NT_SUCCESS(Status)) goto Quickie;
|
||||
|
||||
/* Get the Token User Length */
|
||||
NtQueryInformationToken(hToken, TokenUser, NULL, 0, &Length);
|
||||
|
||||
/* Allocate space for it */
|
||||
TokenInfo = RtlAllocateHeap(CsrHeap, HEAP_ZERO_MEMORY, Length);
|
||||
if (!TokenInfo)
|
||||
{
|
||||
Status = STATUS_NO_MEMORY;
|
||||
goto Quickie;
|
||||
}
|
||||
|
||||
/* Now query the data */
|
||||
Status = NtQueryInformationToken(hToken, TokenUser, TokenInfo, Length, &Length);
|
||||
NtClose(hToken);
|
||||
if (!NT_SUCCESS(Status)) goto Quickie;
|
||||
|
||||
/* Now check the SID Length */
|
||||
UserSid = TokenInfo->User.Sid;
|
||||
ReturnLength = RtlLengthSid(UserSid) + sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE);
|
||||
|
||||
/* Allocate a buffer for the Security Descriptor, with SID and DACL */
|
||||
ProcSd = RtlAllocateHeap(CsrHeap, HEAP_ZERO_MEMORY, SECURITY_DESCRIPTOR_MIN_LENGTH + Length);
|
||||
if (!ProcSd)
|
||||
{
|
||||
Status = STATUS_NO_MEMORY;
|
||||
goto Quickie;
|
||||
}
|
||||
|
||||
/* Set the pointer to the DACL */
|
||||
Dacl = (PACL)((ULONG_PTR)ProcSd + SECURITY_DESCRIPTOR_MIN_LENGTH);
|
||||
|
||||
/* Now create the SD itself */
|
||||
Status = RtlCreateSecurityDescriptor(ProcSd, SECURITY_DESCRIPTOR_REVISION);
|
||||
if (!NT_SUCCESS(Status)) goto Quickie;
|
||||
|
||||
/* Create the DACL for it*/
|
||||
RtlCreateAcl(Dacl, Length, ACL_REVISION2);
|
||||
|
||||
/* Create the ACE */
|
||||
Status = RtlAddAccessAllowedAce(Dacl,
|
||||
ACL_REVISION,
|
||||
PROCESS_VM_READ | PROCESS_VM_WRITE |
|
||||
PROCESS_VM_OPERATION | PROCESS_DUP_HANDLE |
|
||||
PROCESS_TERMINATE | PROCESS_SUSPEND_RESUME |
|
||||
PROCESS_QUERY_INFORMATION | READ_CONTROL,
|
||||
UserSid);
|
||||
if (!NT_SUCCESS(Status)) goto Quickie;
|
||||
|
||||
/* Clear the DACL in the SD */
|
||||
Status = RtlSetDaclSecurityDescriptor(ProcSd, TRUE, Dacl, FALSE);
|
||||
if (!NT_SUCCESS(Status)) goto Quickie;
|
||||
|
||||
/* Write the SD into the Process */
|
||||
Status = NtSetSecurityObject(hProcess, DACL_SECURITY_INFORMATION, ProcSd);
|
||||
|
||||
/* Free the memory and return */
|
||||
Quickie:
|
||||
if (ProcSd) RtlFreeHeap(CsrHeap, 0, ProcSd);
|
||||
RtlFreeHeap(CsrHeap, 0, TokenInfo);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrSetDirectorySecurity
|
||||
*
|
||||
* The CsrSetDirectorySecurity routine sets the security descriptor for the
|
||||
* specified Object Directory.
|
||||
*
|
||||
* @param ObjectDirectory
|
||||
* Handle fo the Object Directory to protect.
|
||||
*
|
||||
* @return STATUS_SUCCESS in case of success, STATUS_UNSUCCESSFUL
|
||||
* othwerwise.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSetDirectorySecurity(IN HANDLE ObjectDirectory)
|
||||
{
|
||||
/* FIXME: Implement */
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/* PUBLIC FUNCTIONS **********************************************************/
|
||||
|
||||
/*++
|
||||
* @name CsrServerInitialization
|
||||
* @implemented NT4
|
||||
*
|
||||
* The CsrServerInitialization routine is the native (not Server) entrypoint
|
||||
* of this Server DLL. It serves as the entrypoint for csrss.
|
||||
*
|
||||
* @param ArgumentCount
|
||||
* Number of arguments on the command line.
|
||||
*
|
||||
* @param Arguments
|
||||
* Array of arguments from the command line.
|
||||
*
|
||||
* @return STATUS_SUCCESS in case of success, STATUS_UNSUCCESSFUL
|
||||
* othwerwise.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrServerInitialization(IN ULONG ArgumentCount,
|
||||
IN PCHAR Arguments[])
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
ULONG i = 0;
|
||||
PVOID ProcessData;
|
||||
PCSR_SERVER_DLL ServerDll;
|
||||
DPRINT("CSRSRV: %s called\n", __FUNCTION__);
|
||||
|
||||
/* Create the Init Event */
|
||||
Status = NtCreateEvent(&CsrInitializationEvent,
|
||||
EVENT_ALL_ACCESS,
|
||||
NULL,
|
||||
SynchronizationEvent,
|
||||
FALSE);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: NtCreateEvent failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Cache System Basic Information so we don't always request it */
|
||||
Status = NtQuerySystemInformation(SystemBasicInformation,
|
||||
&CsrNtSysInfo,
|
||||
sizeof(SYSTEM_BASIC_INFORMATION),
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: NtQuerySystemInformation failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Save our Heap */
|
||||
CsrHeap = RtlGetProcessHeap();
|
||||
|
||||
/* Set our Security Descriptor to protect the process */
|
||||
Status = CsrSetProcessSecurity();
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: CsrSetProcessSecurity failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Set up Session Support */
|
||||
Status = CsrInitializeNtSessionList();
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: CsrInitializeSessions failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Set up Process Support */
|
||||
Status = CsrInitializeProcessStructure();
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: CsrInitializeProcessStructure failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Parse the command line */
|
||||
Status = CsrParseServerCommandLine(ArgumentCount, Arguments);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: CsrParseServerCommandLine failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* All Server DLLs are now loaded, allocate a heap for the Root Process */
|
||||
ProcessData = RtlAllocateHeap(CsrHeap,
|
||||
HEAP_ZERO_MEMORY,
|
||||
CsrTotalPerProcessDataLength);
|
||||
if (!ProcessData)
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: RtlAllocateHeap failed (Status=%08lx)\n",
|
||||
__FUNCTION__, STATUS_NO_MEMORY);
|
||||
return STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
/*
|
||||
* Our Root Process was never officially initalized, so write the data
|
||||
* for each Server DLL manually.
|
||||
*/
|
||||
for (i = 0; i < CSR_SERVER_DLL_MAX; i++)
|
||||
{
|
||||
/* Get the current Server */
|
||||
ServerDll = CsrLoadedServerDll[i];
|
||||
|
||||
/* Is it loaded, and does it have per process data? */
|
||||
if ((ServerDll) && (ServerDll->SizeOfProcessData))
|
||||
{
|
||||
/* It does, give it part of our allocated heap */
|
||||
CsrRootProcess->ServerData[i] = ProcessData;
|
||||
|
||||
/* Move to the next heap position */
|
||||
ProcessData = (PVOID)((ULONG_PTR)ProcessData +
|
||||
ServerDll->SizeOfProcessData);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Nothing for this Server DLL */
|
||||
CsrRootProcess->ServerData[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Now initialize the Root Process manually as well */
|
||||
for (i = 0; i < CSR_SERVER_DLL_MAX; i++)
|
||||
{
|
||||
/* Get the current Server */
|
||||
ServerDll = CsrLoadedServerDll[i];
|
||||
|
||||
/* Is it loaded, and does it a callback for new processes? */
|
||||
if ((ServerDll) && (ServerDll->NewProcessCallback))
|
||||
{
|
||||
/* Call the callback */
|
||||
ServerDll->NewProcessCallback(NULL, CsrRootProcess);
|
||||
}
|
||||
}
|
||||
|
||||
/* Now initialize our API Port */
|
||||
Status = CsrApiPortInitialize();
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: CsrApiPortInitialize failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Initialize the API Port for SM communication */
|
||||
Status = CsrSbApiPortInitialize();
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: CsrSbApiPortInitialize failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* We're all set! Connect to SM! */
|
||||
Status = SmConnectToSm(&CsrSbApiPortName,
|
||||
CsrSbApiPort,
|
||||
IMAGE_SUBSYSTEM_WINDOWS_GUI,
|
||||
&CsrSmApiPort);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: SmConnectToSm failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Finito! Signal the event */
|
||||
Status = NtSetEvent(CsrInitializationEvent, NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: NtSetEvent failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Close the event handle now */
|
||||
NtClose(CsrInitializationEvent);
|
||||
|
||||
/* Have us handle Hard Errors */
|
||||
Status = NtSetDefaultHardErrorPort(CsrApiPort);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CSRSRV:%s: NtSetDefaultHardErrorPort failed (Status=%08lx)\n",
|
||||
__FUNCTION__, Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Return status */
|
||||
return Status;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrPopulateDosDevices
|
||||
* @unimplemented NT5.1
|
||||
*
|
||||
* The CsrPopulateDosDevices routine uses the DOS Device Map from the Kernel
|
||||
* to populate the Dos Devices Object Directory for the session.
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrPopulateDosDevices(VOID)
|
||||
{
|
||||
DPRINT1("Deprecated API\n");
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL
|
||||
NTAPI
|
||||
DllMain(IN HANDLE hDll,
|
||||
IN DWORD dwReason,
|
||||
IN LPVOID lpReserved)
|
||||
{
|
||||
/* We don't do much */
|
||||
UNREFERENCED_PARAMETER(hDll);
|
||||
UNREFERENCED_PARAMETER(dwReason);
|
||||
UNREFERENCED_PARAMETER(lpReserved);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,407 +0,0 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS CSR Sub System
|
||||
* FILE: subsys/csr/csrsrv/session.c
|
||||
* PURPOSE: CSR Server DLL Session Implementation
|
||||
* PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include "srv.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* DATA **********************************************************************/
|
||||
|
||||
RTL_CRITICAL_SECTION CsrNtSessionLock;
|
||||
LIST_ENTRY CsrNtSessionList;
|
||||
HANDLE CsrSmApiPort;
|
||||
|
||||
PSB_API_ROUTINE CsrServerSbApiDispatch[5] =
|
||||
{
|
||||
CsrSbCreateSession,
|
||||
CsrSbTerminateSession,
|
||||
CsrSbForeignSessionComplete,
|
||||
CsrSbCreateProcess,
|
||||
NULL
|
||||
};
|
||||
|
||||
PCHAR CsrServerSbApiName[5] =
|
||||
{
|
||||
"SbCreateSession",
|
||||
"SbTerminateSession",
|
||||
"SbForeignSessionComplete",
|
||||
"SbCreateProcess",
|
||||
"Unknown Csr Sb Api Number"
|
||||
};
|
||||
|
||||
/* PRIVATE FUNCTIONS *********************************************************/
|
||||
|
||||
/*++
|
||||
* @name CsrInitializeNtSessionList
|
||||
*
|
||||
* The CsrInitializeNtSessionList routine sets up support for CSR Sessions.
|
||||
*
|
||||
* @param None
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrInitializeNtSessionList(VOID)
|
||||
{
|
||||
DPRINT("CSRSRV: %s called\n", __FUNCTION__);
|
||||
|
||||
/* Initialize the Session List */
|
||||
InitializeListHead(&CsrNtSessionList);
|
||||
|
||||
/* Initialize the Session Lock */
|
||||
return RtlInitializeCriticalSection(&CsrNtSessionLock);
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrAllocateNtSession
|
||||
*
|
||||
* The CsrAllocateNtSession routine allocates a new CSR NT Session.
|
||||
*
|
||||
* @param SessionId
|
||||
* Session ID of the CSR NT Session to allocate.
|
||||
*
|
||||
* @return Pointer to the newly allocated CSR NT Session.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
PCSR_NT_SESSION
|
||||
NTAPI
|
||||
CsrAllocateNtSession(IN ULONG SessionId)
|
||||
{
|
||||
PCSR_NT_SESSION NtSession;
|
||||
|
||||
/* Allocate an NT Session Object */
|
||||
NtSession = RtlAllocateHeap(CsrHeap, 0, sizeof(CSR_NT_SESSION));
|
||||
if (NtSession)
|
||||
{
|
||||
/* Setup the Session Object */
|
||||
NtSession->SessionId = SessionId;
|
||||
NtSession->ReferenceCount = 1;
|
||||
|
||||
/* Insert it into the Session List */
|
||||
CsrAcquireNtSessionLock();
|
||||
InsertHeadList(&CsrNtSessionList, &NtSession->SessionLink);
|
||||
CsrReleaseNtSessionLock();
|
||||
}
|
||||
else
|
||||
{
|
||||
ASSERT(NtSession != NULL);
|
||||
}
|
||||
|
||||
/* Return the Session (or NULL) */
|
||||
return NtSession;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrReferenceNtSession
|
||||
*
|
||||
* The CsrReferenceNtSession increases the reference count of a CSR NT Session.
|
||||
*
|
||||
* @param Session
|
||||
* Pointer to the CSR NT Session to reference.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrReferenceNtSession(IN PCSR_NT_SESSION Session)
|
||||
{
|
||||
/* Acquire the lock */
|
||||
CsrAcquireNtSessionLock();
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(!IsListEmpty(&Session->SessionLink));
|
||||
ASSERT(Session->SessionId != 0);
|
||||
ASSERT(Session->ReferenceCount != 0);
|
||||
|
||||
/* Increase the reference count */
|
||||
Session->ReferenceCount++;
|
||||
|
||||
/* Release the lock */
|
||||
CsrReleaseNtSessionLock();
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrDereferenceNtSession
|
||||
*
|
||||
* The CsrDereferenceNtSession decreases the reference count of a
|
||||
* CSR NT Session.
|
||||
*
|
||||
* @param Session
|
||||
* Pointer to the CSR NT Session to reference.
|
||||
*
|
||||
* @param ExitStatus
|
||||
* If this is the last reference to the session, this argument
|
||||
* specifies the exit status.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @remarks CsrDereferenceNtSession will complete the session if
|
||||
* the last reference to it has been closed.
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrDereferenceNtSession(IN PCSR_NT_SESSION Session,
|
||||
IN NTSTATUS ExitStatus)
|
||||
{
|
||||
/* Acquire the lock */
|
||||
CsrAcquireNtSessionLock();
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(!IsListEmpty(&Session->SessionLink));
|
||||
ASSERT(Session->SessionId != 0);
|
||||
ASSERT(Session->ReferenceCount != 0);
|
||||
|
||||
/* Dereference the Session Object */
|
||||
if (!(--Session->ReferenceCount))
|
||||
{
|
||||
/* Remove it from the list */
|
||||
RemoveEntryList(&Session->SessionLink);
|
||||
|
||||
/* Release the lock */
|
||||
CsrReleaseNtSessionLock();
|
||||
|
||||
/* Tell SM that we're done here */
|
||||
SmSessionComplete(CsrSmApiPort, Session->SessionId, ExitStatus);
|
||||
|
||||
/* Free the Session Object */
|
||||
RtlFreeHeap(CsrHeap, 0, Session);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Release the lock, the Session is still active */
|
||||
CsrReleaseNtSessionLock();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* SESSION MANAGER FUNCTIONS**************************************************/
|
||||
|
||||
/*++
|
||||
* @name CsrSbCreateSession
|
||||
*
|
||||
* The CsrSbCreateSession API is called by the Session Manager whenever a new
|
||||
* session is created.
|
||||
*
|
||||
* @param ApiMessage
|
||||
* Pointer to the Session Manager API Message.
|
||||
*
|
||||
* @return TRUE in case of success, FALSE othwerwise.
|
||||
*
|
||||
* @remarks The CsrSbCreateSession routine will initialize a new CSR NT
|
||||
* Session and allocate a new CSR Process for the subsystem process.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrSbCreateSession(IN PSB_API_MSG ApiMessage)
|
||||
{
|
||||
PSB_CREATE_SESSION_MSG CreateSession = &ApiMessage->CreateSession;
|
||||
HANDLE hProcess, hThread;
|
||||
PCSR_PROCESS CsrProcess;
|
||||
NTSTATUS Status;
|
||||
KERNEL_USER_TIMES KernelTimes;
|
||||
PCSR_THREAD CsrThread;
|
||||
PVOID ProcessData;
|
||||
ULONG i;
|
||||
|
||||
/* Save the Process and Thread Handles */
|
||||
hProcess = CreateSession->ProcessInfo.ProcessHandle;
|
||||
hThread = CreateSession->ProcessInfo.ThreadHandle;
|
||||
|
||||
/* Lock the Processes */
|
||||
CsrAcquireProcessLock();
|
||||
|
||||
/* Allocate a new process */
|
||||
CsrProcess = CsrAllocateProcess();
|
||||
if (!CsrProcess)
|
||||
{
|
||||
/* Fail */
|
||||
ApiMessage->ReturnValue = STATUS_NO_MEMORY;
|
||||
CsrReleaseProcessLock();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Set the exception port */
|
||||
Status = NtSetInformationProcess(hProcess,
|
||||
ProcessExceptionPort,
|
||||
&CsrApiPort,
|
||||
sizeof(HANDLE));
|
||||
|
||||
/* Check for success */
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Fail the request */
|
||||
CsrDeallocateProcess(CsrProcess);
|
||||
CsrReleaseProcessLock();
|
||||
|
||||
/* Strange as it seems, NTSTATUSes are actually returned */
|
||||
return (BOOLEAN)STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
/* Get the Create Time */
|
||||
Status = NtQueryInformationThread(hThread,
|
||||
ThreadTimes,
|
||||
&KernelTimes,
|
||||
sizeof(KERNEL_USER_TIMES),
|
||||
NULL);
|
||||
|
||||
/* Check for success */
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Fail the request */
|
||||
CsrDeallocateProcess(CsrProcess);
|
||||
CsrReleaseProcessLock();
|
||||
|
||||
/* Strange as it seems, NTSTATUSes are actually returned */
|
||||
return (BOOLEAN)Status;
|
||||
}
|
||||
|
||||
/* Allocate a new Thread */
|
||||
CsrThread = CsrAllocateThread(CsrProcess);
|
||||
if (!CsrThread)
|
||||
{
|
||||
/* Fail the request */
|
||||
CsrDeallocateProcess(CsrProcess);
|
||||
ApiMessage->ReturnValue = STATUS_NO_MEMORY;
|
||||
CsrReleaseProcessLock();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Setup the Thread Object */
|
||||
CsrThread->CreateTime = KernelTimes.CreateTime;
|
||||
CsrThread->ClientId = CreateSession->ProcessInfo.ClientId;
|
||||
CsrThread->ThreadHandle = hThread;
|
||||
ProtectHandle(hThread);
|
||||
CsrThread->Flags = 0;
|
||||
|
||||
/* Insert it into the Process List */
|
||||
CsrInsertThread(CsrProcess, CsrThread);
|
||||
|
||||
/* Setup Process Data */
|
||||
CsrProcess->ClientId = CreateSession->ProcessInfo.ClientId;
|
||||
CsrProcess->ProcessHandle = hProcess;
|
||||
CsrProcess->NtSession = CsrAllocateNtSession(CreateSession->SessionId);
|
||||
|
||||
/* Set the Process Priority */
|
||||
CsrSetBackgroundPriority(CsrProcess);
|
||||
|
||||
/* Get the first data location */
|
||||
ProcessData = &CsrProcess->ServerData[CSR_SERVER_DLL_MAX];
|
||||
|
||||
/* Loop every DLL */
|
||||
for (i = 0; i < CSR_SERVER_DLL_MAX; i++)
|
||||
{
|
||||
/* Check if the DLL is loaded and has Process Data */
|
||||
if (CsrLoadedServerDll[i] && CsrLoadedServerDll[i]->SizeOfProcessData)
|
||||
{
|
||||
/* Write the pointer to the data */
|
||||
CsrProcess->ServerData[i] = ProcessData;
|
||||
|
||||
/* Move to the next data location */
|
||||
ProcessData = (PVOID)((ULONG_PTR)ProcessData +
|
||||
CsrLoadedServerDll[i]->SizeOfProcessData);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Nothing for this Process */
|
||||
CsrProcess->ServerData[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Insert the Process */
|
||||
CsrInsertProcess(NULL, NULL, CsrProcess);
|
||||
|
||||
/* Activate the Thread */
|
||||
ApiMessage->ReturnValue = NtResumeThread(hThread, NULL);
|
||||
|
||||
/* Release lock and return */
|
||||
CsrReleaseProcessLock();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrSbForeignSessionComplete
|
||||
*
|
||||
* The CsrSbForeignSessionComplete API is called by the Session Manager
|
||||
* whenever a foreign session is completed (ie: terminated).
|
||||
*
|
||||
* @param ApiMessage
|
||||
* Pointer to the Session Manager API Message.
|
||||
*
|
||||
* @return TRUE in case of success, FALSE othwerwise.
|
||||
*
|
||||
* @remarks The CsrSbForeignSessionComplete API is not yet implemented.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrSbForeignSessionComplete(IN PSB_API_MSG ApiMessage)
|
||||
{
|
||||
/* Deprecated/Unimplemented in NT */
|
||||
ApiMessage->ReturnValue = STATUS_NOT_IMPLEMENTED;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrSbTerminateSession
|
||||
*
|
||||
* The CsrSbTerminateSession API is called by the Session Manager
|
||||
* whenever a foreign session should be destroyed.
|
||||
*
|
||||
* @param ApiMessage
|
||||
* Pointer to the Session Manager API Message.
|
||||
*
|
||||
* @return TRUE in case of success, FALSE othwerwise.
|
||||
*
|
||||
* @remarks The CsrSbTerminateSession API is not yet implemented.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrSbTerminateSession(IN PSB_API_MSG ApiMessage)
|
||||
{
|
||||
ApiMessage->ReturnValue = STATUS_NOT_IMPLEMENTED;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrSbCreateProcess
|
||||
*
|
||||
* The CsrSbCreateProcess API is called by the Session Manager
|
||||
* whenever a foreign session is created and a new process should be started.
|
||||
*
|
||||
* @param ApiMessage
|
||||
* Pointer to the Session Manager API Message.
|
||||
*
|
||||
* @return TRUE in case of success, FALSE othwerwise.
|
||||
*
|
||||
* @remarks The CsrSbCreateProcess API is not yet implemented.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrSbCreateProcess(IN PSB_API_MSG ApiMessage)
|
||||
{
|
||||
ApiMessage->ReturnValue = STATUS_NOT_IMPLEMENTED;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
@@ -1,395 +0,0 @@
|
||||
#ifndef _SRV_H
|
||||
#define _SRV_H
|
||||
|
||||
/* PSDK/NDK Headers */
|
||||
#define NTOS_MODE_USER
|
||||
#include <stdio.h>
|
||||
#define WIN32_NO_STATUS
|
||||
#include <windows.h>
|
||||
#include <winnt.h>
|
||||
#include <ndk/ntndk.h>
|
||||
|
||||
/* CSR Header */
|
||||
#include <csr/server.h>
|
||||
#include <sm/smmsg.h>
|
||||
|
||||
/* PSEH for SEH Support */
|
||||
#include <pseh/pseh2.h>
|
||||
|
||||
/* DEFINES *******************************************************************/
|
||||
|
||||
#define CSR_SERVER_DLL_MAX 4
|
||||
|
||||
#define CsrAcquireProcessLock() \
|
||||
RtlEnterCriticalSection(&CsrProcessLock);
|
||||
|
||||
#define CsrReleaseProcessLock() \
|
||||
RtlLeaveCriticalSection(&CsrProcessLock);
|
||||
|
||||
#define CsrAcquireWaitLock() \
|
||||
RtlEnterCriticalSection(&CsrWaitListsLock);
|
||||
|
||||
#define CsrReleaseWaitLock() \
|
||||
RtlLeaveCriticalSection(&CsrWaitListsLock);
|
||||
|
||||
#define CsrAcquireNtSessionLock() \
|
||||
RtlEnterCriticalSection(&CsrNtSessionLock)
|
||||
|
||||
#define CsrReleaseNtSessionLock() \
|
||||
RtlLeaveCriticalSection(&CsrNtSessionLock)
|
||||
|
||||
#define CsrHashThread(t) \
|
||||
(HandleToUlong(t)&(256 - 1))
|
||||
|
||||
#define ProcessStructureListLocked() \
|
||||
(CsrProcessLock.OwningThread == NtCurrentTeb()->ClientId.UniqueThread)
|
||||
|
||||
#define SM_REG_KEY \
|
||||
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Session Manager"
|
||||
|
||||
#define SESSION_ROOT L"\\Sessions"
|
||||
#define GLOBAL_ROOT L"\\GLOBAL??"
|
||||
#define SYMLINK_NAME L"SymbolicLink"
|
||||
#define SB_PORT_NAME L"SbAbiPort"
|
||||
#define CSR_PORT_NAME L"ApiPort"
|
||||
#define UNICODE_PATH_SEP L"\\"
|
||||
|
||||
#define ROUND_UP(n, align) ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
|
||||
#define ROUND_DOWN(n, align) (((ULONG)n) & ~((align) - 1l))
|
||||
|
||||
/* DATA **********************************************************************/
|
||||
|
||||
extern ULONG CsrTotalPerProcessDataLength;
|
||||
extern ULONG CsrMaxApiRequestThreads;
|
||||
extern PCSR_SERVER_DLL CsrLoadedServerDll[CSR_SERVER_DLL_MAX];
|
||||
extern PCSR_PROCESS CsrRootProcess;
|
||||
extern UNICODE_STRING CsrSbApiPortName;
|
||||
extern UNICODE_STRING CsrApiPortName;
|
||||
extern HANDLE CsrSbApiPort;
|
||||
extern HANDLE CsrSmApiPort;
|
||||
extern HANDLE CsrApiPort;
|
||||
extern HANDLE CsrHeap;
|
||||
extern RTL_CRITICAL_SECTION CsrProcessLock;
|
||||
extern RTL_CRITICAL_SECTION CsrWaitListsLock;
|
||||
extern LIST_ENTRY CsrThreadHashTable[256];
|
||||
extern HANDLE CsrInitializationEvent;
|
||||
extern SYSTEM_BASIC_INFORMATION CsrNtSysInfo;
|
||||
extern UNICODE_STRING CsrDirectoryName;
|
||||
extern HANDLE CsrObjectDirectory;
|
||||
extern PSB_API_ROUTINE CsrServerSbApiDispatch[5];
|
||||
extern ULONG CsrDebug;
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/* FIXME: Public APIs should go in the CSR Server Include */
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrCaptureArguments(
|
||||
IN PCSR_THREAD CsrThread,
|
||||
IN PCSR_API_MESSAGE ApiMessage
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrLoadServerDll(
|
||||
IN PCHAR DllString,
|
||||
IN PCHAR EntryPoint,
|
||||
IN ULONG ServerId
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrServerInitialization(
|
||||
ULONG ArgumentCount,
|
||||
PCHAR Arguments[]
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
UnProtectHandle(IN HANDLE ObjectHandle);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrLockedReferenceProcess(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrLockedReferenceThread(IN PCSR_THREAD CsrThread);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCreateSessionObjectDirectory(IN ULONG SessionId);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCreateObjectDirectory(IN PCHAR ObjectDirectory);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSrvCreateSharedSection(IN PCHAR ParameterValue);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrInitializeNtSessionList(VOID);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrInitializeProcessStructure(VOID);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrApiPortInitialize(VOID);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSbApiPortInitialize(VOID);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrSbCreateSession(IN PSB_API_MSG ApiMessage);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrSbTerminateSession(IN PSB_API_MSG ApiMessage);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrSbForeignSessionComplete(IN PSB_API_MSG ApiMessage);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrSbCreateProcess(IN PSB_API_MSG ApiMessage);
|
||||
|
||||
PCSR_PROCESS
|
||||
NTAPI
|
||||
CsrAllocateProcess(VOID);
|
||||
|
||||
PCSR_THREAD
|
||||
NTAPI
|
||||
CsrAllocateThread(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrInsertThread(
|
||||
IN PCSR_PROCESS Process,
|
||||
IN PCSR_THREAD Thread
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrSetBackgroundPriority(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrDeallocateProcess(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrGetProcessLuid(
|
||||
HANDLE hProcess,
|
||||
PLUID Luid
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrImpersonateClient(IN PCSR_THREAD CsrThread);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrRevertToSelf(VOID);
|
||||
|
||||
PCSR_THREAD
|
||||
NTAPI
|
||||
CsrLocateThreadByClientId(
|
||||
OUT PCSR_PROCESS *Process,
|
||||
IN PCLIENT_ID ClientId
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrDereferenceNtSession(
|
||||
IN PCSR_NT_SESSION Session,
|
||||
NTSTATUS ExitStatus
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrReferenceNtSession(PCSR_NT_SESSION Session);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrLockedDereferenceThread(PCSR_THREAD CsrThread);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrLockedDereferenceProcess(PCSR_PROCESS CsrProcess);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrLockProcessByClientId(
|
||||
IN HANDLE Pid,
|
||||
OUT PCSR_PROCESS *CsrProcess OPTIONAL
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrUnlockProcess(PCSR_PROCESS CsrProcess);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSrvClientConnect(
|
||||
IN OUT PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PULONG Reply
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSrvUnusedFunction(
|
||||
IN OUT PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PULONG Reply
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSrvIdentifyAlertableThread(
|
||||
IN OUT PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PULONG Reply
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSrvSetPriorityClass(
|
||||
IN OUT PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PULONG Reply
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrServerDllInitialization(IN PCSR_SERVER_DLL LoadedServerDll);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrDereferenceThread(PCSR_THREAD CsrThread);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrSbApiRequestThread(IN PVOID Parameter);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrApiRequestThread(IN PVOID Parameter);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
ProtectHandle(IN HANDLE ObjectHandle);
|
||||
|
||||
PCSR_THREAD
|
||||
NTAPI
|
||||
CsrAddStaticServerThread(
|
||||
IN HANDLE hThread,
|
||||
IN PCLIENT_ID ClientId,
|
||||
IN ULONG ThreadFlags
|
||||
);
|
||||
|
||||
PCSR_THREAD
|
||||
NTAPI
|
||||
CsrConnectToUser(VOID);
|
||||
|
||||
PCSR_THREAD
|
||||
NTAPI
|
||||
CsrLocateThreadInProcess(
|
||||
IN PCSR_PROCESS CsrProcess OPTIONAL,
|
||||
IN PCLIENT_ID Cid
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSbApiHandleConnectionRequest(IN PSB_API_MSG Message);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrApiHandleConnectionRequest(IN PCSR_API_MESSAGE ApiMessage);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSrvAttachSharedSection(
|
||||
IN PCSR_PROCESS CsrProcess OPTIONAL,
|
||||
OUT PCSR_CONNECTION_INFO ConnectInfo
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrReleaseCapturedArguments(IN PCSR_API_MESSAGE ApiMessage);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrNotifyWaitBlock(
|
||||
IN PCSR_WAIT_BLOCK WaitBlock,
|
||||
IN PLIST_ENTRY WaitList,
|
||||
IN PVOID WaitArgument1,
|
||||
IN PVOID WaitArgument2,
|
||||
IN ULONG WaitFlags,
|
||||
IN BOOLEAN DereferenceThread
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrDereferenceProcess(PCSR_PROCESS CsrProcess);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrInsertProcess(
|
||||
IN PCSR_PROCESS Parent OPTIONAL,
|
||||
IN PCSR_PROCESS CurrentProcess OPTIONAL,
|
||||
IN PCSR_PROCESS CsrProcess
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrPopulateDosDevicesDirectory(
|
||||
IN HANDLE DosDevicesDirectory,
|
||||
IN PPROCESS_DEVICEMAP_INFORMATION DeviceMap
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrValidateMessageBuffer(
|
||||
IN PCSR_API_MESSAGE ApiMessage,
|
||||
IN PVOID *Buffer,
|
||||
IN ULONG ArgumentSize,
|
||||
IN ULONG ArgumentCount
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCreateLocalSystemSD(OUT PSECURITY_DESCRIPTOR *LocalSystemSd);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrDestroyThread(IN PCLIENT_ID Cid);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrDestroyProcess(
|
||||
IN PCLIENT_ID Cid,
|
||||
IN NTSTATUS ExitStatus
|
||||
);
|
||||
|
||||
LONG
|
||||
NTAPI
|
||||
CsrUnhandledExceptionFilter(
|
||||
IN PEXCEPTION_POINTERS ExceptionInfo
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrProcessRefcountZero(IN PCSR_PROCESS CsrProcess);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrThreadRefcountZero(IN PCSR_THREAD CsrThread);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSetDirectorySecurity(IN HANDLE ObjectDirectory);
|
||||
#endif
|
||||
@@ -1,111 +0,0 @@
|
||||
/*
|
||||
* CSRSRV Status
|
||||
*/
|
||||
|
||||
/* Organization
|
||||
*
|
||||
* api.c - Handles the LPC Reply/Request Threads which wait on Sb and Csr APIs.
|
||||
* Also in charge of creating those threads and setting up the ports.
|
||||
* Finally, it provides external APIs for validating the API buffers
|
||||
* and doing server-to-server API calls.
|
||||
*
|
||||
* init.c - Handles initialization of CSRSRV, including command-line parsing,
|
||||
* loading the Server DLLs, creating the Session Directories, setting
|
||||
* up the DosDevices Object Directory, and initializing each component.
|
||||
*
|
||||
* process.c - Handles all internal functions dealing with the CSR Process Object,
|
||||
* including de/allocation, de/referencing, un/locking, prority, and
|
||||
* lookups. Also handles all external APIs which touch the CSR Process Object.
|
||||
*
|
||||
* server.c - Handles all internal functions related to loading and managing Server
|
||||
* DLLs, as well as the routines handling the Shared Static Memory Section.
|
||||
* Holds the API Dispatch/Valid/Name Tables and the public CSR_SERVER API
|
||||
* interface. Also home of the SEH handler.
|
||||
*
|
||||
* session.c - Handles all internal functions dealing with the CSR Session Object,
|
||||
* including de/allocation, de/referencing, and un/locking. Holds the SB API
|
||||
* Dispatch/Name Tables and the public CsrSv API Interface for commmunication
|
||||
* with the Session Manager.
|
||||
*
|
||||
* thread.c - Handles all internal functions dealing with the CSR Thread Object,
|
||||
* including de/allocation, de/referencing, un/locking, impersonation, and
|
||||
* lookups. Also handles all external APIs which touch the CSR Thread Object.
|
||||
*
|
||||
* wait.c - Handles all internal functions dealing with the CSR Wait Object,
|
||||
* including de/allocation, de/referencing and un/locking. Also implements
|
||||
* the external Wait API for creating, removing and/or notifying waits.
|
||||
*/
|
||||
|
||||
/* Exported APIs, their location, and their status
|
||||
* CsrAddStaticServerThread 753E679E 1 - server.c - IMPLEMENTED
|
||||
* CsrCallServerFromServer 753E4FD9 2 - api.c - IMPLEMENTED
|
||||
* CsrConnectToUser 753E4E48 3 - api.c - IMPLEMENTED
|
||||
* CsrCreateProcess 753E6FD3 4 - process.c - IMPLEMENTED
|
||||
* CsrCreateRemoteThread 753E73BD 5 - thread.c - IMPLEMENTED
|
||||
* CsrCreateThread 753E72DA 6 - thread.c - IMPLEMENTED
|
||||
* CsrCreateWait 753E770E 7 - wait.c - IMPLEMENTED
|
||||
* CsrDebugProcess 753E7682 8 - process.c - IMPLEMENTED
|
||||
* CsrDebugProcessStop 753E768A 9 - process.c - IMPLEMENTED
|
||||
* CsrDereferenceProcess 753E6281 10 - process.c - IMPLEMENTED
|
||||
* CsrDereferenceThread 753E6964 11 - thread.c - IMPLEMENTED
|
||||
* CsrDereferenceWait 753E7886 12 - wait.c - IMPLEMENTED
|
||||
* CsrDestroyProcess 753E7225 13 - process.c - IMPLEMENTED
|
||||
* CsrDestroyThread 753E7478 14 - thread.c - IMPLEMENTED
|
||||
* CsrExecServerThread 753E6841 15 - thread.c - IMPLEMENTED
|
||||
* CsrGetProcessLuid 753E632F 16 - process.c - IMPLEMENTED
|
||||
* CsrImpersonateClient 753E60F8 17 - thread.c - IMPLEMENTED
|
||||
* CsrLockProcessByClientId 753E668F 18 - process.c - IMPLEMENTED
|
||||
* CsrLockThreadByClientId 753E6719 19 - thread.c - IMPLEMENTED
|
||||
* CsrMoveSatisfiedWait 753E7909 20 - wait.c - IMPLEMENTED
|
||||
* CsrNotifyWait 753E782F 21 - wait.c - IMPLEMENTED
|
||||
* CsrPopulateDosDevices 753E37A5 22 - init.c - IMPLEMENTED
|
||||
* CsrQueryApiPort 753E4E42 23 - api.c - IMPLEMENTED
|
||||
* CsrReferenceThread 753E61E5 24 - thread.c - IMPLEMENTED
|
||||
* CsrRevertToSelf 753E615A 25 - thread.c - IMPLEMENTED
|
||||
* CsrServerInitialization 753E3D75 26 - server.c - IMPLEMENTED
|
||||
* CsrSetBackgroundPriority 753E5E87 27 - process.c - IMPLEMENTED
|
||||
* CsrSetCallingSpooler 753E6425 28 - server.c - IMPLEMENTED
|
||||
* CsrSetForegroundPriority 753E5E67 29 - process.c - IMPLEMENTED
|
||||
* CsrShutdownProcesses 753E7547 30 - process.c - IMPLEMENTED
|
||||
* CsrUnhandledExceptionFilter 753E3FE3 31 - server.c - IMPLEMENTED
|
||||
* CsrUnlockProcess 753E66FD 32 - process.c - IMPLEMENTED
|
||||
* CsrUnlockThread 753E7503 33 - thread.c - IMPLEMENTED
|
||||
* CsrValidateMessageBuffer 753E528D 34 - api.c - IMPLEMENTED
|
||||
* CsrValidateMessageString 753E5323 35 - api.c - UNIMPLEMENTED
|
||||
*/
|
||||
|
||||
/* Public CSR API Interface Status (server.c)
|
||||
* CsrSrvClientConnect - IMPLEMENTED
|
||||
* CsrSrvUnusedFunction - IMPLEMENTED
|
||||
* CsrSrvIdentifyAlertableThread - IMPLEMENTED
|
||||
* CsrSrvSetPriorityClass - IMPLEMENTED
|
||||
*/
|
||||
|
||||
/* Public SB API Interface Status (session.c)
|
||||
* CsrSbCreateSession - IMPLEMENTED
|
||||
* CsrSbForeignSessionComplete - IMPLEMENTED
|
||||
* CsrSbTerminateSession - UNIMPLEMENTED
|
||||
* CsrSbCreateProcess - UNIMPLEMENTED
|
||||
*/
|
||||
|
||||
/* What's missing:
|
||||
*
|
||||
* - SMSS needs to be partly re-written to match some things done here.
|
||||
* Among other things, SmConnectToSm, SmCompleteSession and the other
|
||||
* Sm* Exported APIs have to be properly implemented, as well as the
|
||||
* callback calling and SM LPC APIs. [DONE!]
|
||||
*
|
||||
* - NTDLL needs to get the Csr* routines properly implemented. [DONE!]
|
||||
*
|
||||
* - KERNEL32, USER32 need to register with their servers properly.
|
||||
* Additionally, user32 needs to have ClientThreadStartup implemented
|
||||
* properly and do the syscall NtUserInitialize (I think) which also
|
||||
* needs to be implemented in win32k.sys. All this should be less then
|
||||
* 100 lines of code. [KERNEL32 50% DONE, USER32 NOT DONE]
|
||||
*
|
||||
* - The skeleton code for winsrv and basesrv which connects with CSR/CSRSRV
|
||||
* needs to be written. [NOT DONE]
|
||||
*
|
||||
* - The kernel's LPC implementation needs to be made compatible. [DONE!]
|
||||
*/
|
||||
|
||||
@@ -1,449 +0,0 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS CSR Sub System
|
||||
* FILE: subsys/csr/csrsrv/wait.c
|
||||
* PURPOSE: CSR Server DLL Wait Implementation
|
||||
* PROGRAMMERS: Emanuele Aliberti
|
||||
* Alex Ionescu (alex@relsoft.net)
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include "srv.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* DATA **********************************************************************/
|
||||
|
||||
RTL_CRITICAL_SECTION CsrWaitListsLock;
|
||||
|
||||
/* PRIVATE FUNCTIONS *********************************************************/
|
||||
|
||||
/*++
|
||||
* @name CsrInitializeWait
|
||||
*
|
||||
* The CsrInitializeWait routine initializes a CSR Wait Object.
|
||||
*
|
||||
* @param WaitFunction
|
||||
* Pointer to the function that will handle this wait.
|
||||
*
|
||||
* @param CsrWaitThread
|
||||
* Pointer to the CSR Thread that will perform the wait.
|
||||
*
|
||||
* @param WaitApiMessage
|
||||
* Pointer to the CSR API Message associated to this wait.
|
||||
*
|
||||
* @param WaitContext
|
||||
* Pointer to a user-defined parameter associated to this wait.
|
||||
*
|
||||
* @param NewWaitBlock
|
||||
* Pointed to the initialized CSR Wait Block for this wait.
|
||||
*
|
||||
* @return TRUE in case of success, FALSE othwerwise.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrInitializeWait(IN CSR_WAIT_FUNCTION WaitFunction,
|
||||
IN PCSR_THREAD CsrWaitThread,
|
||||
IN OUT PCSR_API_MESSAGE WaitApiMessage,
|
||||
IN PVOID WaitContext,
|
||||
OUT PCSR_WAIT_BLOCK *NewWaitBlock)
|
||||
{
|
||||
ULONG Size;
|
||||
PCSR_WAIT_BLOCK WaitBlock;
|
||||
|
||||
/* Calculate the size of the wait block */
|
||||
Size = sizeof(CSR_WAIT_BLOCK) -
|
||||
sizeof(WaitBlock->WaitApiMessage) +
|
||||
WaitApiMessage->Header.u1.s1.TotalLength;
|
||||
|
||||
/* Allocate the Wait Block */
|
||||
WaitBlock = RtlAllocateHeap(CsrHeap, 0, Size);
|
||||
if (!WaitBlock)
|
||||
{
|
||||
/* Fail */
|
||||
WaitApiMessage->Status = STATUS_NO_MEMORY;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Initialize it */
|
||||
WaitBlock->Size = Size;
|
||||
WaitBlock->WaitThread = CsrWaitThread;
|
||||
WaitBlock->WaitContext = WaitContext;
|
||||
WaitBlock->WaitFunction = WaitFunction;
|
||||
WaitBlock->UserWaitList.Flink = NULL;
|
||||
WaitBlock->UserWaitList.Blink = NULL;
|
||||
WaitBlock->WaitList = WaitBlock->UserWaitList;
|
||||
|
||||
/* Copy the message */
|
||||
RtlMoveMemory(&WaitBlock->WaitApiMessage,
|
||||
WaitApiMessage,
|
||||
WaitApiMessage->Header.u1.s1.TotalLength);
|
||||
|
||||
/* Return the block */
|
||||
*NewWaitBlock = WaitBlock;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrNotifyWaitBlock
|
||||
*
|
||||
* The CsrNotifyWaitBlock routine calls the wait function for a registered
|
||||
* CSR Wait Block, and replies to the attached CSR API Message, if any.
|
||||
*
|
||||
* @param WaitBlock
|
||||
* Pointer to the CSR Wait Block
|
||||
*
|
||||
* @param WaitList
|
||||
* Pointer to the wait list for this wait.
|
||||
*
|
||||
* @param WaitArgument[1-2]
|
||||
* User-defined values to pass to the wait function.
|
||||
*
|
||||
* @param WaitFlags
|
||||
* Wait flags for this wait.
|
||||
*
|
||||
* @param DereferenceThread
|
||||
* Specifies whether the CSR Thread should be dereferenced at the
|
||||
* end of this wait.
|
||||
*
|
||||
* @return TRUE in case of success, FALSE otherwise.
|
||||
*
|
||||
* @remarks After a wait block is notified, the wait function becomes invalid.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrNotifyWaitBlock(IN PCSR_WAIT_BLOCK WaitBlock,
|
||||
IN PLIST_ENTRY WaitList,
|
||||
IN PVOID WaitArgument1,
|
||||
IN PVOID WaitArgument2,
|
||||
IN ULONG WaitFlags,
|
||||
IN BOOLEAN DereferenceThread)
|
||||
{
|
||||
/* Call the wait function */
|
||||
if ((WaitBlock->WaitFunction)(WaitList,
|
||||
WaitBlock->WaitThread,
|
||||
&WaitBlock->WaitApiMessage,
|
||||
WaitBlock->WaitContext,
|
||||
WaitArgument1,
|
||||
WaitArgument2,
|
||||
WaitFlags))
|
||||
{
|
||||
/* The wait is done, clear the block */
|
||||
WaitBlock->WaitThread->WaitBlock = NULL;
|
||||
|
||||
/* Check for captured arguments */
|
||||
if (WaitBlock->WaitApiMessage.CsrCaptureData)
|
||||
{
|
||||
/* Release them */
|
||||
CsrReleaseCapturedArguments(&WaitBlock->WaitApiMessage);
|
||||
}
|
||||
|
||||
/* Reply to the port */
|
||||
NtReplyPort(WaitBlock->WaitThread->Process->ClientPort,
|
||||
(PPORT_MESSAGE)&WaitBlock->WaitApiMessage);
|
||||
|
||||
/* Check if we should dereference the thread */
|
||||
if (DereferenceThread)
|
||||
{
|
||||
/* Remove it from the Wait List */
|
||||
if (WaitBlock->WaitList.Flink)
|
||||
{
|
||||
RemoveEntryList(&WaitBlock->WaitList);
|
||||
}
|
||||
|
||||
/* Remove it from the User Wait List */
|
||||
if (WaitBlock->UserWaitList.Flink)
|
||||
{
|
||||
RemoveEntryList(&WaitBlock->UserWaitList);
|
||||
}
|
||||
|
||||
/* Dereference teh thread */
|
||||
CsrDereferenceThread(WaitBlock->WaitThread);
|
||||
|
||||
/* Free the wait block */
|
||||
RtlFreeHeap(CsrHeap, 0, WaitBlock);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The wait is complete, but the thread is being kept alive */
|
||||
WaitBlock->WaitFunction = NULL;
|
||||
}
|
||||
|
||||
/* The wait suceeded */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* The wait failed */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* PUBLIC FUNCTIONS **********************************************************/
|
||||
|
||||
/*++
|
||||
* @name CsrCreateWait
|
||||
* @implemented NT4
|
||||
*
|
||||
* The CsrCreateWait routine creates a CSR Wait.
|
||||
*
|
||||
* @param WaitList
|
||||
* Pointer to a list entry of the waits to associate.
|
||||
*
|
||||
* @param WaitFunction
|
||||
* Pointer to the function that will handle this wait.
|
||||
*
|
||||
* @param CsrWaitThread
|
||||
* Pointer to the CSR Thread that will perform the wait.
|
||||
*
|
||||
* @param WaitApiMessage
|
||||
* Pointer to the CSR API Message associated to this wait.
|
||||
*
|
||||
* @param WaitContext
|
||||
* Pointer to a user-defined parameter associated to this wait.
|
||||
*
|
||||
* @param UserWaitList
|
||||
* Pointer to a list entry of the user-defined waits to associate.
|
||||
*
|
||||
* @return TRUE in case of success, FALSE otherwise.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrCreateWait(IN PLIST_ENTRY WaitList,
|
||||
IN CSR_WAIT_FUNCTION WaitFunction,
|
||||
IN PCSR_THREAD CsrWaitThread,
|
||||
IN OUT PCSR_API_MESSAGE WaitApiMessage,
|
||||
IN PVOID WaitContext,
|
||||
IN PLIST_ENTRY UserWaitList OPTIONAL)
|
||||
{
|
||||
PCSR_WAIT_BLOCK WaitBlock;
|
||||
|
||||
/* Initialize the wait */
|
||||
if (!CsrInitializeWait(WaitFunction,
|
||||
CsrWaitThread,
|
||||
WaitApiMessage,
|
||||
WaitContext,
|
||||
&WaitBlock))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Acquire the Wait Lock */
|
||||
CsrAcquireWaitLock();
|
||||
|
||||
/* Make sure the thread wasn't destroyed */
|
||||
if (CsrWaitThread->Flags & CsrThreadTerminated)
|
||||
{
|
||||
/* Fail the wait */
|
||||
RtlFreeHeap(CsrHeap, 0, WaitBlock);
|
||||
CsrReleaseWaitLock();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Insert the wait in the queue */
|
||||
InsertTailList(WaitList, &WaitBlock->WaitList);
|
||||
|
||||
/* Insert the User Wait too, if one was given */
|
||||
if (UserWaitList) InsertTailList(UserWaitList, &WaitBlock->UserWaitList);
|
||||
|
||||
/* Return */
|
||||
CsrReleaseWaitLock();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrDereferenceWait
|
||||
* @implemented NT4
|
||||
*
|
||||
* The CsrDereferenceWait routine derefences a CSR Wait Block.
|
||||
*
|
||||
* @param WaitList
|
||||
* Pointer to the Wait List associated to the wait.
|
||||
|
||||
* @return None.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrDereferenceWait(IN PLIST_ENTRY WaitList)
|
||||
{
|
||||
PLIST_ENTRY NextEntry;
|
||||
PCSR_WAIT_BLOCK WaitBlock;
|
||||
|
||||
/* Acquire the Process and Wait Locks */
|
||||
CsrAcquireProcessLock();
|
||||
CsrAcquireWaitLock();
|
||||
|
||||
/* Set the list pointers */
|
||||
NextEntry = WaitList->Flink;
|
||||
|
||||
/* Start the loop */
|
||||
while (NextEntry != WaitList)
|
||||
{
|
||||
/* Get the wait block */
|
||||
WaitBlock = CONTAINING_RECORD(NextEntry, CSR_WAIT_BLOCK, WaitList);
|
||||
|
||||
/* Move to the next entry */
|
||||
NextEntry = NextEntry->Flink;
|
||||
|
||||
/* Check if there's no Wait Routine */
|
||||
if (!WaitBlock->WaitFunction)
|
||||
{
|
||||
/* Remove it from the Wait List */
|
||||
if (WaitBlock->WaitList.Flink)
|
||||
{
|
||||
RemoveEntryList(&WaitBlock->WaitList);
|
||||
}
|
||||
|
||||
/* Remove it from the User Wait List */
|
||||
if (WaitBlock->UserWaitList.Flink)
|
||||
{
|
||||
RemoveEntryList(&WaitBlock->UserWaitList);
|
||||
}
|
||||
|
||||
/* Dereference the thread waiting on it */
|
||||
CsrDereferenceThread(WaitBlock->WaitThread);
|
||||
|
||||
/* Free the block */
|
||||
RtlFreeHeap(CsrHeap, 0, WaitBlock);
|
||||
}
|
||||
}
|
||||
|
||||
/* Release the locks */
|
||||
CsrReleaseWaitLock();
|
||||
CsrReleaseProcessLock();
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrMoveSatisfiedWait
|
||||
* @implemented NT5
|
||||
*
|
||||
* The CsrMoveSatisfiedWait routine moves satisfied waits from a wait list
|
||||
* to another list entry.
|
||||
*
|
||||
* @param NewEntry
|
||||
* Pointer to a list entry where the satisfied waits will be added.
|
||||
*
|
||||
* @param WaitList
|
||||
* Pointer to a list entry to analyze for satisfied waits.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrMoveSatisfiedWait(IN PLIST_ENTRY NewEntry,
|
||||
IN PLIST_ENTRY WaitList)
|
||||
{
|
||||
PLIST_ENTRY NextEntry;
|
||||
PCSR_WAIT_BLOCK WaitBlock;
|
||||
|
||||
/* Acquire the Wait Lock */
|
||||
CsrAcquireWaitLock();
|
||||
|
||||
/* Set the List pointers */
|
||||
NextEntry = WaitList->Flink;
|
||||
|
||||
/* Start looping */
|
||||
while (NextEntry != WaitList)
|
||||
{
|
||||
/* Get the Wait block */
|
||||
WaitBlock = CONTAINING_RECORD(NextEntry, CSR_WAIT_BLOCK, WaitList);
|
||||
|
||||
/* Go to the next entry */
|
||||
NextEntry = NextEntry->Flink;
|
||||
|
||||
/* Check if there is a Wait Callback */
|
||||
if (WaitBlock->WaitFunction)
|
||||
{
|
||||
/* Remove it from the Wait Block Queue */
|
||||
RemoveEntryList(&WaitBlock->WaitList);
|
||||
|
||||
/* Insert the new entry */
|
||||
InsertTailList(&WaitBlock->WaitList, NewEntry);
|
||||
}
|
||||
}
|
||||
|
||||
/* Release the wait lock */
|
||||
CsrReleaseWaitLock();
|
||||
}
|
||||
|
||||
/*++
|
||||
* @name CsrNotifyWait
|
||||
* @implemented NT4
|
||||
*
|
||||
* The CsrNotifyWait notifies a CSR Wait Block.
|
||||
*
|
||||
* @param WaitList
|
||||
* Pointer to the list entry for this wait.
|
||||
*
|
||||
* @param WaitType
|
||||
* Type of the wait to perform, either WaitAny or WaitAll.
|
||||
*
|
||||
* @param WaitArgument[1-2]
|
||||
* User-defined argument to pass on to the wait function.
|
||||
*
|
||||
* @return TRUE in case of success, FALSE othwerwise.
|
||||
*
|
||||
* @remarks None.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
CsrNotifyWait(IN PLIST_ENTRY WaitList,
|
||||
IN ULONG WaitType,
|
||||
IN PVOID WaitArgument1,
|
||||
IN PVOID WaitArgument2)
|
||||
{
|
||||
PLIST_ENTRY NextEntry;
|
||||
PCSR_WAIT_BLOCK WaitBlock;
|
||||
BOOLEAN NotifySuccess = FALSE;
|
||||
|
||||
/* Acquire the Wait Lock */
|
||||
CsrAcquireWaitLock();
|
||||
|
||||
/* Set the List pointers */
|
||||
NextEntry = WaitList->Flink;
|
||||
|
||||
/* Start looping */
|
||||
while (NextEntry != WaitList)
|
||||
{
|
||||
/* Get the Wait block */
|
||||
WaitBlock = CONTAINING_RECORD(NextEntry, CSR_WAIT_BLOCK, WaitList);
|
||||
|
||||
/* Go to the next entry */
|
||||
NextEntry = NextEntry->Flink;
|
||||
|
||||
/* Check if there is a Wait Callback */
|
||||
if (WaitBlock->WaitFunction)
|
||||
{
|
||||
/* Notify the Waiter */
|
||||
NotifySuccess |= CsrNotifyWaitBlock(WaitBlock,
|
||||
WaitList,
|
||||
WaitArgument1,
|
||||
WaitArgument2,
|
||||
0,
|
||||
FALSE);
|
||||
|
||||
/* We've already done a wait, so leave unless this is a Wait All */
|
||||
if (WaitType != WaitAll) break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Release the wait lock and return */
|
||||
CsrReleaseWaitLock();
|
||||
return NotifySuccess;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
@@ -1,97 +0,0 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS CSR Sub System
|
||||
* FILE: subsys/csr/csrss.c
|
||||
* PURPOSE: CSR Executable
|
||||
* PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <windows.h>
|
||||
#define NTOS_MODE_USER
|
||||
#include <ndk/ntndk.h>
|
||||
#include <csr/server.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* PRIVATE FUNCTIONS *********************************************************/
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrpSetDefaultProcessHardErrorMode (VOID)
|
||||
{
|
||||
ULONG DefaultHardErrorMode = 0;
|
||||
|
||||
/* Disable hard errors */
|
||||
NtSetInformationProcess(NtCurrentProcess(),
|
||||
ProcessDefaultHardErrorMode,
|
||||
&DefaultHardErrorMode,
|
||||
sizeof(DefaultHardErrorMode));
|
||||
}
|
||||
|
||||
/*
|
||||
* Note: Standard entrypoint for Native C Programs.
|
||||
* The OS backend (NtProcessStartup) which calls this routine is
|
||||
* implemented in a CRT-like static library (much like mainCRTStartup).
|
||||
* Do NOT manually add the NtProcessStartup entrypoint or anything else.
|
||||
*/
|
||||
int
|
||||
_cdecl
|
||||
_main(int argc,
|
||||
char *argv[],
|
||||
char *envp[],
|
||||
int DebugFlag)
|
||||
{
|
||||
KPRIORITY BasePriority = (8 + 1) + 4;
|
||||
NTSTATUS Status;
|
||||
ULONG Response;
|
||||
UNREFERENCED_PARAMETER(envp);
|
||||
UNREFERENCED_PARAMETER(DebugFlag);
|
||||
|
||||
/* Set the Priority */
|
||||
NtSetInformationProcess(NtCurrentProcess(),
|
||||
ProcessBasePriority,
|
||||
&BasePriority,
|
||||
sizeof(KPRIORITY));
|
||||
|
||||
/* Give us IOPL so that we can access the VGA registers */
|
||||
Status = NtSetInformationProcess(NtCurrentProcess(),
|
||||
ProcessUserModeIOPL,
|
||||
NULL,
|
||||
0);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Raise a hard error */
|
||||
DPRINT1("CSRSS: Could not raise IOPL: %x\n", Status);
|
||||
Status = NtRaiseHardError(STATUS_IO_PRIVILEGE_FAILED,
|
||||
0,
|
||||
0,
|
||||
NULL,
|
||||
OptionOk,
|
||||
&Response);
|
||||
}
|
||||
|
||||
/* Initialize CSR through CSRSRV */
|
||||
Status = CsrServerInitialization(argc, argv);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Kill us */
|
||||
DPRINT1("CSRSS: CsrServerInitialization failed:% lx\n", Status);
|
||||
NtTerminateProcess(NtCurrentProcess(), Status);
|
||||
}
|
||||
|
||||
/* Disable errors */
|
||||
CsrpSetDefaultProcessHardErrorMode();
|
||||
|
||||
/* If this is Session 0, make sure killing us bugchecks the system */
|
||||
if (!NtCurrentPeb()->SessionId) RtlSetProcessIsCritical(TRUE, NULL, FALSE);
|
||||
|
||||
/* Kill this thread. CSRSRV keeps us going */
|
||||
NtTerminateThread(NtCurrentThread(), Status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
add_subdirectory(basesrv)
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
include_directories(${REACTOS_SOURCE_DIR}/include/reactos/subsys)
|
||||
|
||||
spec2def(basesrv.dll basesrv.spec)
|
||||
|
||||
list(APPEND SOURCE
|
||||
dosdev.c
|
||||
init.c
|
||||
proc.c
|
||||
sndsntry.c
|
||||
basesrv.rc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/basesrv.def)
|
||||
|
||||
add_library(basesrv SHARED ${SOURCE})
|
||||
|
||||
target_link_libraries(basesrv ${PSEH_LIB})
|
||||
|
||||
set_module_type(basesrv nativedll) # win32dll
|
||||
|
||||
add_importlibs(basesrv ntdll csrsrv)
|
||||
|
||||
add_dependencies(basesrv bugcodes)
|
||||
add_cd_file(TARGET basesrv DESTINATION reactos/system32 FOR all)
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Base API Server DLL
|
||||
* FILE: subsystems/win/basesrv/api.h
|
||||
* PURPOSE: Public server APIs definitions
|
||||
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* dosdev.c */
|
||||
VOID BaseInitDefineDosDevice(VOID);
|
||||
VOID BaseCleanupDefineDosDevice(VOID);
|
||||
|
||||
CSR_API(BaseSrvDefineDosDevice);
|
||||
|
||||
/* proc.c */
|
||||
CSR_API(BaseSrvGetTempFile);
|
||||
CSR_API(BaseSrvCreateProcess);
|
||||
CSR_API(BaseSrvCreateThread);
|
||||
CSR_API(BaseSrvExitProcess);
|
||||
CSR_API(BaseSrvGetProcessShutdownParam);
|
||||
CSR_API(BaseSrvSetProcessShutdownParam);
|
||||
|
||||
/* sndsntry.c */
|
||||
CSR_API(BaseSrvSoundSentryNotification);
|
||||
|
||||
/* EOF */
|
||||
@@ -1,6 +0,0 @@
|
||||
|
||||
LIBRARY basesrv.dll
|
||||
EXPORTS
|
||||
BaseSetProcessCreateNotify@4
|
||||
ServerDllInitialization@8
|
||||
; EOF
|
||||
@@ -1,11 +1,35 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Base API Server DLL
|
||||
* FILE: subsystems/win/basesrv/basesrv.h
|
||||
* PURPOSE: Main header - Definitions
|
||||
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
#ifndef __BASESRV_H__
|
||||
#define __BASESRV_H__
|
||||
|
||||
#pragma once
|
||||
|
||||
/* PSDK/NDK Headers */
|
||||
#include <stdio.h>
|
||||
#define WIN32_NO_STATUS
|
||||
#include <windows.h>
|
||||
|
||||
#define NTOS_MODE_USER
|
||||
#include <ndk/ntndk.h>
|
||||
|
||||
#include <csr/server.h>
|
||||
/* CSRSS Header */
|
||||
#include <csr/csrsrv.h>
|
||||
|
||||
/* BASE Headers */
|
||||
#include <win/basemsg.h>
|
||||
#include <win/base.h>
|
||||
|
||||
|
||||
/* Globals */
|
||||
extern HANDLE BaseSrvHeap;
|
||||
extern HANDLE BaseSrvSharedHeap;
|
||||
extern PBASE_STATIC_SERVER_DATA BaseStaticServerData;
|
||||
|
||||
#endif // __BASESRV_H__
|
||||
|
||||
/* EOF */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#define REACTOS_VERSION_DLL
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS/Win32 base usermode server\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "basesrv\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "basesrv.dll\0"
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Base API Server DLL"
|
||||
#define REACTOS_STR_INTERNAL_NAME "basesrv"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "basesrv.dll"
|
||||
#include <reactos/version.rc>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
@ stdcall BaseSetProcessCreateNotify(ptr)
|
||||
@ stdcall ServerDllInitialization(ptr)
|
||||
@@ -1,90 +1,84 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: subsys/csrss/win32csr/file.c
|
||||
* PURPOSE: File handling
|
||||
* PROJECT: ReactOS Base API Server DLL
|
||||
* FILE: subsystems/win/basesrv/dosdev.c
|
||||
* PURPOSE: DOS Devices Management
|
||||
* PROGRAMMERS: Pierre Schweitzer (pierre.schweitzer@reactos.org)
|
||||
* NOTE: Belongs to basesrv.dll
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include "basesrv.h"
|
||||
|
||||
#include <w32csr.h>
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
#include "file.h"
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
/* GLOBALS ********************************************************************/
|
||||
|
||||
typedef BOOL (WINAPI *PUSER_SOUND_SENTRY)(VOID);
|
||||
BOOL
|
||||
WINAPI
|
||||
FirstSoundSentry(VOID);
|
||||
|
||||
UINT CsrGetTempFileUnique;
|
||||
LIST_ENTRY DosDeviceHistory;
|
||||
RTL_CRITICAL_SECTION Win32CsrDefineDosDeviceCritSec;
|
||||
PUSER_SOUND_SENTRY _UserSoundSentry = FirstSoundSentry;
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
FailSoundSentry(VOID)
|
||||
typedef struct _BASE_DOS_DEVICE_HISTORY_ENTRY
|
||||
{
|
||||
/* In case the function can't be found/is unimplemented */
|
||||
return FALSE;
|
||||
LIST_ENTRY Entry;
|
||||
UNICODE_STRING Device;
|
||||
UNICODE_STRING Target;
|
||||
} BASE_DOS_DEVICE_HISTORY_ENTRY, *PBASE_DOS_DEVICE_HISTORY_ENTRY;
|
||||
|
||||
static RTL_CRITICAL_SECTION BaseDefineDosDeviceCritSec;
|
||||
static LIST_ENTRY DosDeviceHistory;
|
||||
|
||||
/* PRIVATE FUNCTIONS **********************************************************/
|
||||
|
||||
VOID BaseInitDefineDosDevice(VOID)
|
||||
{
|
||||
RtlInitializeCriticalSection(&BaseDefineDosDeviceCritSec);
|
||||
InitializeListHead(&DosDeviceHistory);
|
||||
}
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
FirstSoundSentry(VOID)
|
||||
VOID BaseCleanupDefineDosDevice(VOID)
|
||||
{
|
||||
UNICODE_STRING DllString = RTL_CONSTANT_STRING(L"winsrv");
|
||||
STRING FuncString = RTL_CONSTANT_STRING("_UserSoundSentry");
|
||||
HANDLE DllHandle;
|
||||
NTSTATUS Status;
|
||||
PUSER_SOUND_SENTRY NewSoundSentry = FailSoundSentry;
|
||||
PLIST_ENTRY Entry, ListHead;
|
||||
PBASE_DOS_DEVICE_HISTORY_ENTRY HistoryEntry;
|
||||
|
||||
/* Load winsrv manually */
|
||||
Status = LdrGetDllHandle(NULL, NULL, &DllString, &DllHandle);
|
||||
if (NT_SUCCESS(Status))
|
||||
RtlDeleteCriticalSection(&BaseDefineDosDeviceCritSec);
|
||||
|
||||
ListHead = &DosDeviceHistory;
|
||||
Entry = ListHead->Flink;
|
||||
while (Entry != ListHead)
|
||||
{
|
||||
/* If it was found, get SoundSentry export */
|
||||
Status = LdrGetProcedureAddress(DllHandle,
|
||||
&FuncString,
|
||||
0,
|
||||
(PVOID*)&NewSoundSentry);
|
||||
HistoryEntry = (PBASE_DOS_DEVICE_HISTORY_ENTRY)
|
||||
CONTAINING_RECORD(Entry,
|
||||
BASE_DOS_DEVICE_HISTORY_ENTRY,
|
||||
Entry);
|
||||
Entry = Entry->Flink;
|
||||
|
||||
if (HistoryEntry)
|
||||
{
|
||||
if (HistoryEntry->Target.Buffer)
|
||||
{
|
||||
RtlFreeHeap(BaseSrvHeap,
|
||||
0,
|
||||
HistoryEntry->Target.Buffer);
|
||||
}
|
||||
if (HistoryEntry->Device.Buffer)
|
||||
{
|
||||
RtlFreeHeap(BaseSrvHeap,
|
||||
0,
|
||||
HistoryEntry->Device.Buffer);
|
||||
}
|
||||
RtlFreeHeap(BaseSrvHeap,
|
||||
0,
|
||||
HistoryEntry);
|
||||
}
|
||||
}
|
||||
|
||||
/* Set it as the callback for the future, and call it */
|
||||
_UserSoundSentry = NewSoundSentry;
|
||||
return _UserSoundSentry();
|
||||
}
|
||||
|
||||
CSR_API(CsrSoundSentry)
|
||||
{
|
||||
/* Call the API and see if it suceeds */
|
||||
return _UserSoundSentry() ? STATUS_SUCCESS : STATUS_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
CSR_API(CsrGetTempFile)
|
||||
{
|
||||
DPRINT("CsrGetTempFile entered\n");
|
||||
|
||||
/* Return 16-bits ID */
|
||||
Request->Data.GetTempFile.UniqueID = (++CsrGetTempFileUnique & 0xFFFF);
|
||||
|
||||
DPRINT("Returning: %u\n", Request->Data.GetTempFile.UniqueID);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
CSR_API(CsrDefineDosDevice)
|
||||
/* PUBLIC SERVER APIS *********************************************************/
|
||||
|
||||
CSR_API(BaseSrvDefineDosDevice)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PBASE_DEFINE_DOS_DEVICE DefineDosDeviceRequest = &((PBASE_API_MESSAGE)ApiMessage)->Data.DefineDosDeviceRequest;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
HANDLE LinkHandle = NULL;
|
||||
NTSTATUS Status;
|
||||
UNICODE_STRING DeviceName = {0};
|
||||
UNICODE_STRING RequestDeviceName = {0};
|
||||
UNICODE_STRING LinkTarget = {0};
|
||||
@@ -98,35 +92,35 @@ CSR_API(CsrDefineDosDevice)
|
||||
PSID SystemSid;
|
||||
PSID WorldSid;
|
||||
ULONG SidLength;
|
||||
PCSRSS_DOS_DEVICE_HISTORY_ENTRY HistoryEntry;
|
||||
PBASE_DOS_DEVICE_HISTORY_ENTRY HistoryEntry;
|
||||
PLIST_ENTRY Entry;
|
||||
PLIST_ENTRY ListHead;
|
||||
BOOLEAN Matched, AddHistory;
|
||||
DWORD dwFlags;
|
||||
PWSTR lpBuffer;
|
||||
|
||||
DPRINT("CsrDefineDosDevice entered, Flags:%d, DeviceName:%wZ, TargetName:%wZ\n",
|
||||
Request->Data.DefineDosDeviceRequest.dwFlags,
|
||||
&Request->Data.DefineDosDeviceRequest.DeviceName,
|
||||
&Request->Data.DefineDosDeviceRequest.TargetName);
|
||||
DPRINT("BaseSrvDefineDosDevice entered, Flags:%d, DeviceName:%wZ, TargetName:%wZ\n",
|
||||
DefineDosDeviceRequest->dwFlags,
|
||||
&DefineDosDeviceRequest->DeviceName,
|
||||
&DefineDosDeviceRequest->TargetName);
|
||||
|
||||
Matched = AddHistory = FALSE;
|
||||
HistoryEntry = NULL;
|
||||
AdminSid = SystemSid = WorldSid = NULL;
|
||||
SecurityDescriptor = NULL;
|
||||
ListHead = &DosDeviceHistory;
|
||||
dwFlags = Request->Data.DefineDosDeviceRequest.dwFlags;
|
||||
dwFlags = DefineDosDeviceRequest->dwFlags;
|
||||
|
||||
/* Validate the flags */
|
||||
if ( (dwFlags & 0xFFFFFFF0) ||
|
||||
((dwFlags & DDD_EXACT_MATCH_ON_REMOVE) &&
|
||||
! (dwFlags & DDD_REMOVE_DEFINITION)) )
|
||||
!(dwFlags & DDD_REMOVE_DEFINITION)) )
|
||||
{
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
Status = RtlEnterCriticalSection(&Win32CsrDefineDosDeviceCritSec);
|
||||
if (! NT_SUCCESS(Status))
|
||||
Status = RtlEnterCriticalSection(&BaseDefineDosDeviceCritSec);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("RtlEnterCriticalSection() failed (Status %lx)\n",
|
||||
Status);
|
||||
@@ -137,17 +131,16 @@ CSR_API(CsrDefineDosDevice)
|
||||
{
|
||||
Status =
|
||||
RtlUpcaseUnicodeString(&RequestDeviceName,
|
||||
&Request->Data.DefineDosDeviceRequest.DeviceName,
|
||||
&DefineDosDeviceRequest->DeviceName,
|
||||
TRUE);
|
||||
if (! NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
_SEH2_LEAVE;
|
||||
|
||||
RequestLinkTarget =
|
||||
&Request->Data.DefineDosDeviceRequest.TargetName;
|
||||
lpBuffer = (PWSTR) RtlAllocateHeap(Win32CsrApiHeap,
|
||||
RequestLinkTarget = &DefineDosDeviceRequest->TargetName;
|
||||
lpBuffer = (PWSTR) RtlAllocateHeap(BaseSrvHeap,
|
||||
HEAP_ZERO_MEMORY,
|
||||
RequestDeviceName.MaximumLength + 5 * sizeof(WCHAR));
|
||||
if (! lpBuffer)
|
||||
if (!lpBuffer)
|
||||
{
|
||||
DPRINT1("Failed to allocate memory\n");
|
||||
Status = STATUS_NO_MEMORY;
|
||||
@@ -172,16 +165,16 @@ CSR_API(CsrDefineDosDevice)
|
||||
Status = NtQuerySymbolicLinkObject(LinkHandle,
|
||||
&LinkTarget,
|
||||
&Length);
|
||||
if (! NT_SUCCESS(Status) &&
|
||||
if (!NT_SUCCESS(Status) &&
|
||||
Status == STATUS_BUFFER_TOO_SMALL)
|
||||
{
|
||||
LinkTarget.Length = 0;
|
||||
LinkTarget.MaximumLength = Length;
|
||||
LinkTarget.Buffer = (PWSTR)
|
||||
RtlAllocateHeap(Win32CsrApiHeap,
|
||||
RtlAllocateHeap(BaseSrvHeap,
|
||||
HEAP_ZERO_MEMORY,
|
||||
Length);
|
||||
if (! LinkTarget.Buffer)
|
||||
if (!LinkTarget.Buffer)
|
||||
{
|
||||
DPRINT1("Failed to allocate memory\n");
|
||||
Status = STATUS_NO_MEMORY;
|
||||
@@ -193,7 +186,7 @@ CSR_API(CsrDefineDosDevice)
|
||||
&Length);
|
||||
}
|
||||
|
||||
if (! NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtQuerySymbolicLinkObject(%wZ) failed (Status %lx)\n",
|
||||
&DeviceName, Status);
|
||||
@@ -208,9 +201,9 @@ CSR_API(CsrDefineDosDevice)
|
||||
else
|
||||
{
|
||||
if (dwFlags & DDD_EXACT_MATCH_ON_REMOVE)
|
||||
Matched = ! RtlCompareUnicodeString(RequestLinkTarget,
|
||||
&LinkTarget,
|
||||
TRUE);
|
||||
Matched = !RtlCompareUnicodeString(RequestLinkTarget,
|
||||
&LinkTarget,
|
||||
TRUE);
|
||||
else
|
||||
Matched = RtlPrefixUnicodeString(RequestLinkTarget,
|
||||
&LinkTarget,
|
||||
@@ -222,22 +215,24 @@ CSR_API(CsrDefineDosDevice)
|
||||
/* Current symlink target macthed and there is nothing to revert to */
|
||||
RequestLinkTarget = NULL;
|
||||
}
|
||||
else if (Matched && ! IsListEmpty(ListHead))
|
||||
else if (Matched && !IsListEmpty(ListHead))
|
||||
{
|
||||
/* Fetch the first history entry we come across for the device name */
|
||||
/* This will become the current symlink target for the device name */
|
||||
/*
|
||||
* Fetch the first history entry we come across for the device name.
|
||||
* This will become the current symlink target for the device name.
|
||||
*/
|
||||
Matched = FALSE;
|
||||
Entry = ListHead->Flink;
|
||||
while (Entry != ListHead)
|
||||
{
|
||||
HistoryEntry = (PCSRSS_DOS_DEVICE_HISTORY_ENTRY)
|
||||
HistoryEntry = (PBASE_DOS_DEVICE_HISTORY_ENTRY)
|
||||
CONTAINING_RECORD(Entry,
|
||||
CSRSS_DOS_DEVICE_HISTORY_ENTRY,
|
||||
BASE_DOS_DEVICE_HISTORY_ENTRY,
|
||||
Entry);
|
||||
Matched =
|
||||
! RtlCompareUnicodeString(&RequestDeviceName,
|
||||
&HistoryEntry->Device,
|
||||
FALSE);
|
||||
!RtlCompareUnicodeString(&RequestDeviceName,
|
||||
&HistoryEntry->Device,
|
||||
FALSE);
|
||||
if (Matched)
|
||||
{
|
||||
RemoveEntryList(&HistoryEntry->Entry);
|
||||
@@ -249,25 +244,27 @@ CSR_API(CsrDefineDosDevice)
|
||||
}
|
||||
|
||||
/* Nothing to revert to so delete the symlink */
|
||||
if (! Matched)
|
||||
if (!Matched)
|
||||
RequestLinkTarget = NULL;
|
||||
}
|
||||
else if (! Matched)
|
||||
else if (!Matched)
|
||||
{
|
||||
/* Locate a previous symlink target as we did not get a hit earlier */
|
||||
/* If we find one we need to remove it */
|
||||
/*
|
||||
* Locate a previous symlink target as we did not get
|
||||
* a hit earlier. If we find one we need to remove it.
|
||||
*/
|
||||
Entry = ListHead->Flink;
|
||||
while (Entry != ListHead)
|
||||
{
|
||||
HistoryEntry = (PCSRSS_DOS_DEVICE_HISTORY_ENTRY)
|
||||
HistoryEntry = (PBASE_DOS_DEVICE_HISTORY_ENTRY)
|
||||
CONTAINING_RECORD(Entry,
|
||||
CSRSS_DOS_DEVICE_HISTORY_ENTRY,
|
||||
BASE_DOS_DEVICE_HISTORY_ENTRY,
|
||||
Entry);
|
||||
Matched =
|
||||
! RtlCompareUnicodeString(&RequestDeviceName,
|
||||
&HistoryEntry->Device,
|
||||
FALSE);
|
||||
if (! Matched)
|
||||
!RtlCompareUnicodeString(&RequestDeviceName,
|
||||
&HistoryEntry->Device,
|
||||
FALSE);
|
||||
if (!Matched)
|
||||
{
|
||||
HistoryEntry = NULL;
|
||||
Entry = Entry->Flink;
|
||||
@@ -277,9 +274,9 @@ CSR_API(CsrDefineDosDevice)
|
||||
Matched = FALSE;
|
||||
if (dwFlags & DDD_EXACT_MATCH_ON_REMOVE)
|
||||
{
|
||||
if (! RtlCompareUnicodeString(RequestLinkTarget,
|
||||
&HistoryEntry->Target,
|
||||
TRUE))
|
||||
if (!RtlCompareUnicodeString(RequestLinkTarget,
|
||||
&HistoryEntry->Target,
|
||||
TRUE))
|
||||
{
|
||||
Matched = TRUE;
|
||||
}
|
||||
@@ -301,7 +298,7 @@ CSR_API(CsrDefineDosDevice)
|
||||
}
|
||||
|
||||
/* Leave existing symlink as is */
|
||||
if (! Matched)
|
||||
if (!Matched)
|
||||
Status = STATUS_OBJECT_NAME_NOT_FOUND;
|
||||
else
|
||||
Status = STATUS_SUCCESS;
|
||||
@@ -314,7 +311,7 @@ CSR_API(CsrDefineDosDevice)
|
||||
}
|
||||
|
||||
Status = NtMakeTemporaryObject(LinkHandle);
|
||||
if (! NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtMakeTemporaryObject(%wZ) failed (Status %lx)\n",
|
||||
&DeviceName, Status);
|
||||
@@ -323,7 +320,7 @@ CSR_API(CsrDefineDosDevice)
|
||||
|
||||
Status = NtClose(LinkHandle);
|
||||
LinkHandle = NULL;
|
||||
if (! NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtClose(%wZ) failed (Status %lx)\n",
|
||||
&DeviceName, Status);
|
||||
@@ -332,16 +329,16 @@ CSR_API(CsrDefineDosDevice)
|
||||
}
|
||||
|
||||
/* Don't create symlink if we don't have a target */
|
||||
if (! RequestLinkTarget || RequestLinkTarget->Length == 0)
|
||||
if (!RequestLinkTarget || RequestLinkTarget->Length == 0)
|
||||
_SEH2_LEAVE;
|
||||
|
||||
if (AddHistory)
|
||||
{
|
||||
HistoryEntry = (PCSRSS_DOS_DEVICE_HISTORY_ENTRY)
|
||||
RtlAllocateHeap(Win32CsrApiHeap,
|
||||
HistoryEntry = (PBASE_DOS_DEVICE_HISTORY_ENTRY)
|
||||
RtlAllocateHeap(BaseSrvHeap,
|
||||
HEAP_ZERO_MEMORY,
|
||||
sizeof(CSRSS_DOS_DEVICE_HISTORY_ENTRY));
|
||||
if (! HistoryEntry)
|
||||
sizeof(BASE_DOS_DEVICE_HISTORY_ENTRY));
|
||||
if (!HistoryEntry)
|
||||
{
|
||||
DPRINT1("Failed to allocate memory\n");
|
||||
Status = STATUS_NO_MEMORY;
|
||||
@@ -349,10 +346,10 @@ CSR_API(CsrDefineDosDevice)
|
||||
}
|
||||
|
||||
HistoryEntry->Target.Buffer =
|
||||
RtlAllocateHeap(Win32CsrApiHeap,
|
||||
RtlAllocateHeap(BaseSrvHeap,
|
||||
HEAP_ZERO_MEMORY,
|
||||
LinkTarget.Length);
|
||||
if (! HistoryEntry->Target.Buffer)
|
||||
if (!HistoryEntry->Target.Buffer)
|
||||
{
|
||||
DPRINT1("Failed to allocate memory\n");
|
||||
Status = STATUS_NO_MEMORY;
|
||||
@@ -365,10 +362,10 @@ CSR_API(CsrDefineDosDevice)
|
||||
&LinkTarget);
|
||||
|
||||
HistoryEntry->Device.Buffer =
|
||||
RtlAllocateHeap(Win32CsrApiHeap,
|
||||
RtlAllocateHeap(BaseSrvHeap,
|
||||
HEAP_ZERO_MEMORY,
|
||||
RequestDeviceName.Length);
|
||||
if (! HistoryEntry->Device.Buffer)
|
||||
if (!HistoryEntry->Device.Buffer)
|
||||
{
|
||||
DPRINT1("Failed to allocate memory\n");
|
||||
Status = STATUS_NO_MEMORY;
|
||||
@@ -423,14 +420,14 @@ CSR_API(CsrDefineDosDevice)
|
||||
&AdminSid);
|
||||
|
||||
SidLength = RtlLengthSid(SystemSid) +
|
||||
RtlLengthSid(AdminSid) +
|
||||
RtlLengthSid(WorldSid);
|
||||
RtlLengthSid(AdminSid) +
|
||||
RtlLengthSid(WorldSid);
|
||||
Length = sizeof(ACL) + SidLength + 3 * sizeof(ACCESS_ALLOWED_ACE);
|
||||
|
||||
SecurityDescriptor = RtlAllocateHeap(Win32CsrApiHeap,
|
||||
SecurityDescriptor = RtlAllocateHeap(BaseSrvHeap,
|
||||
0,
|
||||
SECURITY_DESCRIPTOR_MIN_LENGTH + Length);
|
||||
if (! SecurityDescriptor)
|
||||
if (!SecurityDescriptor)
|
||||
{
|
||||
DPRINT1("Failed to allocate memory\n");
|
||||
Status = STATUS_NO_MEMORY;
|
||||
@@ -440,44 +437,41 @@ CSR_API(CsrDefineDosDevice)
|
||||
Dacl = (PACL)((ULONG_PTR)SecurityDescriptor + SECURITY_DESCRIPTOR_MIN_LENGTH);
|
||||
Status = RtlCreateSecurityDescriptor(SecurityDescriptor,
|
||||
SECURITY_DESCRIPTOR_REVISION);
|
||||
if (! NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("RtlCreateSecurityDescriptor() failed (Status %lx)\n",
|
||||
Status);
|
||||
DPRINT1("RtlCreateSecurityDescriptor() failed (Status %lx)\n", Status);
|
||||
_SEH2_LEAVE;
|
||||
}
|
||||
|
||||
Status = RtlCreateAcl(Dacl,
|
||||
Length,
|
||||
ACL_REVISION);
|
||||
if (! NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("RtlCreateAcl() failed (Status %lx)\n",
|
||||
Status);
|
||||
DPRINT1("RtlCreateAcl() failed (Status %lx)\n", Status);
|
||||
_SEH2_LEAVE;
|
||||
}
|
||||
|
||||
(void) RtlAddAccessAllowedAce(Dacl,
|
||||
ACL_REVISION,
|
||||
GENERIC_ALL,
|
||||
SystemSid);
|
||||
(void) RtlAddAccessAllowedAce(Dacl,
|
||||
ACL_REVISION,
|
||||
GENERIC_ALL,
|
||||
AdminSid);
|
||||
(void) RtlAddAccessAllowedAce(Dacl,
|
||||
ACL_REVISION,
|
||||
STANDARD_RIGHTS_READ,
|
||||
WorldSid);
|
||||
RtlAddAccessAllowedAce(Dacl,
|
||||
ACL_REVISION,
|
||||
GENERIC_ALL,
|
||||
SystemSid);
|
||||
RtlAddAccessAllowedAce(Dacl,
|
||||
ACL_REVISION,
|
||||
GENERIC_ALL,
|
||||
AdminSid);
|
||||
RtlAddAccessAllowedAce(Dacl,
|
||||
ACL_REVISION,
|
||||
STANDARD_RIGHTS_READ,
|
||||
WorldSid);
|
||||
|
||||
Status = RtlSetDaclSecurityDescriptor(SecurityDescriptor,
|
||||
TRUE,
|
||||
Dacl,
|
||||
FALSE);
|
||||
if (! NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("RtlSetDaclSecurityDescriptor() failed (Status %lx)\n",
|
||||
Status);
|
||||
DPRINT1("RtlSetDaclSecurityDescriptor() failed (Status %lx)\n", Status);
|
||||
_SEH2_LEAVE;
|
||||
}
|
||||
|
||||
@@ -493,10 +487,10 @@ CSR_API(CsrDefineDosDevice)
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
Status = NtMakePermanentObject(LinkHandle);
|
||||
if (! NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtMakePermanentObject(%wZ) failed (Status %lx)\n",
|
||||
&DeviceName, Status);
|
||||
&DeviceName, Status);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -507,80 +501,56 @@ CSR_API(CsrDefineDosDevice)
|
||||
}
|
||||
_SEH2_FINALLY
|
||||
{
|
||||
(void) RtlLeaveCriticalSection(&Win32CsrDefineDosDeviceCritSec);
|
||||
RtlLeaveCriticalSection(&BaseDefineDosDeviceCritSec);
|
||||
if (DeviceName.Buffer)
|
||||
(void) RtlFreeHeap(Win32CsrApiHeap,
|
||||
0,
|
||||
DeviceName.Buffer);
|
||||
{
|
||||
RtlFreeHeap(BaseSrvHeap,
|
||||
0,
|
||||
DeviceName.Buffer);
|
||||
}
|
||||
if (LinkTarget.Buffer)
|
||||
(void) RtlFreeHeap(Win32CsrApiHeap,
|
||||
0,
|
||||
LinkTarget.Buffer);
|
||||
{
|
||||
RtlFreeHeap(BaseSrvHeap,
|
||||
0,
|
||||
LinkTarget.Buffer);
|
||||
}
|
||||
if (SecurityDescriptor)
|
||||
(void) RtlFreeHeap(Win32CsrApiHeap,
|
||||
0,
|
||||
SecurityDescriptor);
|
||||
if (LinkHandle)
|
||||
(void) NtClose(LinkHandle);
|
||||
if (SystemSid)
|
||||
(void) RtlFreeSid(SystemSid);
|
||||
if (AdminSid)
|
||||
(void) RtlFreeSid(AdminSid);
|
||||
if (WorldSid)
|
||||
(void) RtlFreeSid(WorldSid);
|
||||
{
|
||||
RtlFreeHeap(BaseSrvHeap,
|
||||
0,
|
||||
SecurityDescriptor);
|
||||
}
|
||||
|
||||
if (LinkHandle) NtClose(LinkHandle);
|
||||
if (SystemSid) RtlFreeSid(SystemSid);
|
||||
if (AdminSid) RtlFreeSid(AdminSid);
|
||||
if (WorldSid) RtlFreeSid(WorldSid);
|
||||
|
||||
RtlFreeUnicodeString(&RequestDeviceName);
|
||||
|
||||
if (HistoryEntry)
|
||||
{
|
||||
if (HistoryEntry->Target.Buffer)
|
||||
(void) RtlFreeHeap(Win32CsrApiHeap,
|
||||
0,
|
||||
HistoryEntry->Target.Buffer);
|
||||
{
|
||||
RtlFreeHeap(BaseSrvHeap,
|
||||
0,
|
||||
HistoryEntry->Target.Buffer);
|
||||
}
|
||||
if (HistoryEntry->Device.Buffer)
|
||||
(void) RtlFreeHeap(Win32CsrApiHeap,
|
||||
0,
|
||||
HistoryEntry->Device.Buffer);
|
||||
(void) RtlFreeHeap(Win32CsrApiHeap,
|
||||
0,
|
||||
HistoryEntry);
|
||||
{
|
||||
RtlFreeHeap(BaseSrvHeap,
|
||||
0,
|
||||
HistoryEntry->Device.Buffer);
|
||||
}
|
||||
RtlFreeHeap(BaseSrvHeap,
|
||||
0,
|
||||
HistoryEntry);
|
||||
}
|
||||
}
|
||||
_SEH2_END
|
||||
|
||||
DPRINT("CsrDefineDosDevice Exit, Statux: 0x%x\n", Status);
|
||||
DPRINT("BaseSrvDefineDosDevice exit, Status: 0x%x\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
void CsrCleanupDefineDosDevice(void)
|
||||
{
|
||||
PLIST_ENTRY Entry, ListHead;
|
||||
PCSRSS_DOS_DEVICE_HISTORY_ENTRY HistoryEntry;
|
||||
|
||||
(void) RtlDeleteCriticalSection(&Win32CsrDefineDosDeviceCritSec);
|
||||
|
||||
ListHead = &DosDeviceHistory;
|
||||
Entry = ListHead->Flink;
|
||||
while (Entry != ListHead)
|
||||
{
|
||||
HistoryEntry = (PCSRSS_DOS_DEVICE_HISTORY_ENTRY)
|
||||
CONTAINING_RECORD(Entry,
|
||||
CSRSS_DOS_DEVICE_HISTORY_ENTRY,
|
||||
Entry);
|
||||
Entry = Entry->Flink;
|
||||
|
||||
if (HistoryEntry)
|
||||
{
|
||||
if (HistoryEntry->Target.Buffer)
|
||||
(void) RtlFreeHeap(Win32CsrApiHeap,
|
||||
0,
|
||||
HistoryEntry->Target.Buffer);
|
||||
if (HistoryEntry->Device.Buffer)
|
||||
(void) RtlFreeHeap(Win32CsrApiHeap,
|
||||
0,
|
||||
HistoryEntry->Device.Buffer);
|
||||
(void) RtlFreeHeap(Win32CsrApiHeap,
|
||||
0,
|
||||
HistoryEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* EOF */
|
||||
@@ -1,72 +1,565 @@
|
||||
/*
|
||||
* init.c - ReactOS/Win32 base enviroment subsystem server
|
||||
*
|
||||
* ReactOS Operating System
|
||||
*
|
||||
* --------------------------------------------------------------------
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* --------------------------------------------------------------------
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Base API Server DLL
|
||||
* FILE: subsystems/win/basesrv/init.c
|
||||
* PURPOSE: Initialization
|
||||
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
*/
|
||||
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include "basesrv.h"
|
||||
#include "api.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
HANDLE BaseApiPort = (HANDLE) 0;
|
||||
/* GLOBALS ********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
* NAME PRIVATE
|
||||
* BaseStaticServerThread/1
|
||||
*/
|
||||
VOID WINAPI BaseStaticServerThread (PVOID x)
|
||||
HANDLE BaseSrvDllInstance = NULL;
|
||||
|
||||
/* Memory */
|
||||
HANDLE BaseSrvHeap = NULL; // Our own heap.
|
||||
HANDLE BaseSrvSharedHeap = NULL; // Shared heap with CSR. (CsrSrvSharedSectionHeap)
|
||||
PBASE_STATIC_SERVER_DATA BaseStaticServerData = NULL; // Data that we can share amongst processes. Initialized inside BaseSrvSharedHeap.
|
||||
|
||||
// Windows Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
|
||||
PCSR_API_ROUTINE BaseServerApiDispatchTable[BasepMaxApiNumber - BASESRV_FIRST_API_NUMBER] =
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
PPORT_MESSAGE Request = (PPORT_MESSAGE) x;
|
||||
PPORT_MESSAGE Reply = NULL;
|
||||
ULONG MessageType = 0;
|
||||
BaseSrvCreateProcess,
|
||||
BaseSrvCreateThread,
|
||||
BaseSrvGetTempFile,
|
||||
BaseSrvExitProcess,
|
||||
// BaseSrvDebugProcess,
|
||||
// BaseSrvCheckVDM,
|
||||
// BaseSrvUpdateVDMEntry,
|
||||
// BaseSrvGetNextVDMCommand,
|
||||
// BaseSrvExitVDM,
|
||||
// BaseSrvIsFirstVDM,
|
||||
// BaseSrvGetVDMExitCode,
|
||||
// BaseSrvSetReenterCount,
|
||||
BaseSrvSetProcessShutdownParam,
|
||||
BaseSrvGetProcessShutdownParam,
|
||||
// BaseSrvNlsSetUserInfo,
|
||||
// BaseSrvNlsSetMultipleUserInfo,
|
||||
// BaseSrvNlsCreateSection,
|
||||
// BaseSrvSetVDMCurDirs,
|
||||
// BaseSrvGetVDMCurDirs,
|
||||
// BaseSrvBatNotification,
|
||||
// BaseSrvRegisterWowExec,
|
||||
BaseSrvSoundSentryNotification,
|
||||
// BaseSrvRefreshIniFileMapping,
|
||||
BaseSrvDefineDosDevice,
|
||||
// BaseSrvSetTermsrvAppInstallMode,
|
||||
// BaseSrvNlsUpdateCacheCount,
|
||||
// BaseSrvSetTermsrvClientTimeZone,
|
||||
// BaseSrvSxsCreateActivationContext,
|
||||
// BaseSrvRegisterThread,
|
||||
// BaseSrvNlsGetUserInfo,
|
||||
};
|
||||
|
||||
DPRINT("BASESRV: %s called\n", __FUNCTION__);
|
||||
BOOLEAN BaseServerApiServerValidTable[BasepMaxApiNumber - BASESRV_FIRST_API_NUMBER] =
|
||||
{
|
||||
TRUE, // BaseSrvCreateProcess
|
||||
TRUE, // BaseSrvCreateThread
|
||||
TRUE, // BaseSrvGetTempFile
|
||||
FALSE, // BaseSrvExitProcess
|
||||
// FALSE, // BaseSrvDebugProcess
|
||||
// TRUE, // BaseSrvCheckVDM
|
||||
// TRUE, // BaseSrvUpdateVDMEntry
|
||||
// TRUE, // BaseSrvGetNextVDMCommand
|
||||
// TRUE, // BaseSrvExitVDM
|
||||
// TRUE, // BaseSrvIsFirstVDM
|
||||
// TRUE, // BaseSrvGetVDMExitCode
|
||||
// TRUE, // BaseSrvSetReenterCount
|
||||
TRUE, // BaseSrvSetProcessShutdownParam
|
||||
TRUE, // BaseSrvGetProcessShutdownParam
|
||||
// TRUE, // BaseSrvNlsSetUserInfo
|
||||
// TRUE, // BaseSrvNlsSetMultipleUserInfo
|
||||
// TRUE, // BaseSrvNlsCreateSection
|
||||
// TRUE, // BaseSrvSetVDMCurDirs
|
||||
// TRUE, // BaseSrvGetVDMCurDirs
|
||||
// TRUE, // BaseSrvBatNotification
|
||||
// TRUE, // BaseSrvRegisterWowExec
|
||||
TRUE, // BaseSrvSoundSentryNotification
|
||||
// TRUE, // BaseSrvRefreshIniFileMapping
|
||||
TRUE, // BaseSrvDefineDosDevice
|
||||
// FALSE, // BaseSrvSetTermsrvAppInstallMode
|
||||
// FALSE, // BaseSrvNlsUpdateCacheCount
|
||||
// FALSE, // BaseSrvSetTermsrvClientTimeZone
|
||||
// FALSE, // BaseSrvSxsCreateActivationContext
|
||||
// FALSE, // BaseSrvRegisterThread
|
||||
// FALSE, // BaseSrvNlsGetUserInfo
|
||||
};
|
||||
|
||||
MessageType = Request->u2.s2.Type;
|
||||
DPRINT("BASESRV: %s received a message (Type=%d)\n",
|
||||
__FUNCTION__, MessageType);
|
||||
switch (MessageType)
|
||||
{
|
||||
default:
|
||||
Reply = Request;
|
||||
Status = NtReplyPort (BaseApiPort, Reply);
|
||||
break;
|
||||
}
|
||||
PCHAR BaseServerApiNameTable[BasepMaxApiNumber - BASESRV_FIRST_API_NUMBER] =
|
||||
{
|
||||
"BaseCreateProcess",
|
||||
"BaseCreateThread",
|
||||
"BaseGetTempFile",
|
||||
"BaseExitProcess",
|
||||
// "BaseDebugProcess",
|
||||
// "BaseCheckVDM",
|
||||
// "BaseUpdateVDMEntry",
|
||||
// "BaseGetNextVDMCommand",
|
||||
// "BaseExitVDM",
|
||||
// "BaseIsFirstVDM",
|
||||
// "BaseGetVDMExitCode",
|
||||
// "BaseSetReenterCount",
|
||||
"BaseSetProcessShutdownParam",
|
||||
"BaseGetProcessShutdownParam",
|
||||
// "BaseNlsSetUserInfo",
|
||||
// "BaseNlsSetMultipleUserInfo",
|
||||
// "BaseNlsCreateSection",
|
||||
// "BaseSetVDMCurDirs",
|
||||
// "BaseGetVDMCurDirs",
|
||||
// "BaseBatNotification",
|
||||
// "BaseRegisterWowExec",
|
||||
"BaseSoundSentryNotification",
|
||||
// "BaseRefreshIniFileMapping",
|
||||
"BaseDefineDosDevice",
|
||||
// "BaseSetTermsrvAppInstallMode",
|
||||
// "BaseNlsUpdateCacheCount",
|
||||
// "BaseSetTermsrvClientTimeZone",
|
||||
// "BaseSxsCreateActivationContext",
|
||||
// "BaseRegisterThread",
|
||||
// "BaseNlsGetUserInfo",
|
||||
};
|
||||
|
||||
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CreateBaseAcls(OUT PACL* Dacl,
|
||||
OUT PACL* RestrictedDacl)
|
||||
{
|
||||
PSID SystemSid, WorldSid, RestrictedSid;
|
||||
SID_IDENTIFIER_AUTHORITY NtAuthority = {SECURITY_NT_AUTHORITY};
|
||||
SID_IDENTIFIER_AUTHORITY WorldAuthority = {SECURITY_WORLD_SID_AUTHORITY};
|
||||
NTSTATUS Status;
|
||||
#if 0 // Unused code
|
||||
UCHAR KeyValueBuffer[0x40];
|
||||
PKEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInfo;
|
||||
UNICODE_STRING KeyName;
|
||||
ULONG ProtectionMode = 0;
|
||||
#endif
|
||||
ULONG AclLength;
|
||||
#if 0 // Unused code
|
||||
ULONG ResultLength;
|
||||
HANDLE hKey;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
|
||||
/* Open the Session Manager Key */
|
||||
RtlInitUnicodeString(&KeyName, SM_REG_KEY);
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&KeyName,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
NULL,
|
||||
NULL);
|
||||
Status = NtOpenKey(&hKey, KEY_READ, &ObjectAttributes);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
/* Read the key value */
|
||||
RtlInitUnicodeString(&KeyName, L"ProtectionMode");
|
||||
Status = NtQueryValueKey(hKey,
|
||||
&KeyName,
|
||||
KeyValuePartialInformation,
|
||||
KeyValueBuffer,
|
||||
sizeof(KeyValueBuffer),
|
||||
&ResultLength);
|
||||
|
||||
/* Make sure it's what we expect it to be */
|
||||
KeyValuePartialInfo = (PKEY_VALUE_PARTIAL_INFORMATION)KeyValueBuffer;
|
||||
if ((NT_SUCCESS(Status)) && (KeyValuePartialInfo->Type == REG_DWORD) &&
|
||||
(*(PULONG)KeyValuePartialInfo->Data))
|
||||
{
|
||||
/* Save the Protection Mode */
|
||||
ProtectionMode = *(PULONG)KeyValuePartialInfo->Data;
|
||||
}
|
||||
|
||||
/* Close the handle */
|
||||
NtClose(hKey);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Allocate the System SID */
|
||||
Status = RtlAllocateAndInitializeSid(&NtAuthority,
|
||||
1, SECURITY_LOCAL_SYSTEM_RID,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
&SystemSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Allocate the World SID */
|
||||
Status = RtlAllocateAndInitializeSid(&WorldAuthority,
|
||||
1, SECURITY_WORLD_RID,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
&WorldSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Allocate the restricted SID */
|
||||
Status = RtlAllocateAndInitializeSid(&NtAuthority,
|
||||
1, SECURITY_RESTRICTED_CODE_RID,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
&RestrictedSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Allocate one ACL with 3 ACEs each for one SID */
|
||||
AclLength = sizeof(ACL) + 3 * sizeof(ACCESS_ALLOWED_ACE) +
|
||||
RtlLengthSid(SystemSid) +
|
||||
RtlLengthSid(WorldSid) +
|
||||
RtlLengthSid(RestrictedSid);
|
||||
*Dacl = RtlAllocateHeap(BaseSrvHeap, 0, AclLength);
|
||||
ASSERT(*Dacl != NULL);
|
||||
|
||||
/* Set the correct header fields */
|
||||
Status = RtlCreateAcl(*Dacl, AclLength, ACL_REVISION2);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Give the appropriate rights to each SID */
|
||||
/* FIXME: Should check SessionId/ProtectionMode */
|
||||
Status = RtlAddAccessAllowedAce(*Dacl, ACL_REVISION2, DIRECTORY_QUERY | DIRECTORY_TRAVERSE | DIRECTORY_CREATE_OBJECT | DIRECTORY_CREATE_SUBDIRECTORY | READ_CONTROL, WorldSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(*Dacl, ACL_REVISION2, DIRECTORY_ALL_ACCESS, SystemSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(*Dacl, ACL_REVISION2, DIRECTORY_TRAVERSE, RestrictedSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Now allocate the restricted DACL */
|
||||
*RestrictedDacl = RtlAllocateHeap(BaseSrvHeap, 0, AclLength);
|
||||
ASSERT(*RestrictedDacl != NULL);
|
||||
|
||||
/* Initialize it */
|
||||
Status = RtlCreateAcl(*RestrictedDacl, AclLength, ACL_REVISION2);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* And add the same ACEs as before */
|
||||
/* FIXME: Not really fully correct */
|
||||
Status = RtlAddAccessAllowedAce(*RestrictedDacl, ACL_REVISION2, DIRECTORY_QUERY | DIRECTORY_TRAVERSE | DIRECTORY_CREATE_OBJECT | DIRECTORY_CREATE_SUBDIRECTORY | READ_CONTROL, WorldSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(*RestrictedDacl, ACL_REVISION2, DIRECTORY_ALL_ACCESS, SystemSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
Status = RtlAddAccessAllowedAce(*RestrictedDacl, ACL_REVISION2, DIRECTORY_TRAVERSE, RestrictedSid);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* The SIDs are captured, can free them now */
|
||||
RtlFreeSid(RestrictedSid);
|
||||
RtlFreeSid(WorldSid);
|
||||
RtlFreeSid(SystemSid);
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS WINAPI ServerDllInitialization (ULONG ArgumentCount, LPWSTR *Argument)
|
||||
VOID
|
||||
NTAPI
|
||||
BaseInitializeStaticServerData(IN PCSR_SERVER_DLL LoadedServerDll)
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
NTSTATUS Status;
|
||||
WCHAR Buffer[MAX_PATH];
|
||||
PWCHAR HeapBuffer;
|
||||
UNICODE_STRING SystemRootString;
|
||||
UNICODE_STRING UnexpandedSystemRootString = RTL_CONSTANT_STRING(L"%SystemRoot%");
|
||||
UNICODE_STRING BaseSrvCSDString;
|
||||
UNICODE_STRING BaseSrvWindowsDirectory;
|
||||
UNICODE_STRING BaseSrvWindowsSystemDirectory;
|
||||
UNICODE_STRING BnoString;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
ULONG SessionId;
|
||||
HANDLE BaseSrvNamedObjectDirectory;
|
||||
HANDLE BaseSrvRestrictedObjectDirectory;
|
||||
PACL BnoDacl, BnoRestrictedDacl;
|
||||
PSECURITY_DESCRIPTOR BnoSd;
|
||||
HANDLE SymHandle;
|
||||
UNICODE_STRING DirectoryName, SymlinkName;
|
||||
ULONG LuidEnabled;
|
||||
RTL_QUERY_REGISTRY_TABLE BaseServerRegistryConfigurationTable[2] =
|
||||
{
|
||||
{
|
||||
NULL,
|
||||
RTL_QUERY_REGISTRY_DIRECT,
|
||||
L"CSDVersion",
|
||||
&BaseSrvCSDString,
|
||||
REG_NONE, NULL, 0
|
||||
},
|
||||
|
||||
DPRINT("BASSRV: %s(%ld,...) called\n", __FUNCTION__, ArgumentCount);
|
||||
{0}
|
||||
};
|
||||
|
||||
BaseApiPort = CsrQueryApiPort ();
|
||||
Status = CsrAddStaticServerThread (BaseStaticServerThread);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
//TODO initialize the BASE server
|
||||
}
|
||||
return STATUS_SUCCESS;
|
||||
/* Initialize the memory */
|
||||
BaseSrvHeap = RtlGetProcessHeap(); // Initialize our own heap.
|
||||
BaseSrvSharedHeap = LoadedServerDll->SharedSection; // Get the CSR shared heap.
|
||||
|
||||
/* Get the session ID */
|
||||
SessionId = NtCurrentPeb()->SessionId;
|
||||
|
||||
/* Get the Windows directory */
|
||||
RtlInitEmptyUnicodeString(&SystemRootString, Buffer, sizeof(Buffer));
|
||||
Status = RtlExpandEnvironmentStrings_U(NULL,
|
||||
&UnexpandedSystemRootString,
|
||||
&SystemRootString,
|
||||
NULL);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Create the base directory */
|
||||
Buffer[SystemRootString.Length / sizeof(WCHAR)] = UNICODE_NULL;
|
||||
Status = RtlCreateUnicodeString(&BaseSrvWindowsDirectory,
|
||||
SystemRootString.Buffer);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Create the system directory */
|
||||
wcscat(SystemRootString.Buffer, L"\\System32");
|
||||
Status = RtlCreateUnicodeString(&BaseSrvWindowsSystemDirectory,
|
||||
SystemRootString.Buffer);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* FIXME: Check Session ID */
|
||||
wcscpy(Buffer, L"\\BaseNamedObjects");
|
||||
RtlInitUnicodeString(&BnoString, Buffer);
|
||||
|
||||
/* Allocate the server data */
|
||||
BaseStaticServerData = RtlAllocateHeap(BaseSrvSharedHeap,
|
||||
HEAP_ZERO_MEMORY,
|
||||
sizeof(BASE_STATIC_SERVER_DATA));
|
||||
ASSERT(BaseStaticServerData != NULL);
|
||||
|
||||
/* Process timezone information */
|
||||
BaseStaticServerData->TermsrvClientTimeZoneId = TIME_ZONE_ID_INVALID;
|
||||
BaseStaticServerData->TermsrvClientTimeZoneChangeNum = 0;
|
||||
Status = NtQuerySystemInformation(SystemTimeOfDayInformation,
|
||||
&BaseStaticServerData->TimeOfDay,
|
||||
sizeof(BaseStaticServerData->TimeOfDay),
|
||||
NULL);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Make a shared heap copy of the Windows directory */
|
||||
BaseStaticServerData->WindowsDirectory = BaseSrvWindowsDirectory;
|
||||
HeapBuffer = RtlAllocateHeap(BaseSrvSharedHeap,
|
||||
0,
|
||||
BaseSrvWindowsDirectory.MaximumLength);
|
||||
ASSERT(HeapBuffer);
|
||||
RtlCopyMemory(HeapBuffer,
|
||||
BaseStaticServerData->WindowsDirectory.Buffer,
|
||||
BaseSrvWindowsDirectory.MaximumLength);
|
||||
BaseStaticServerData->WindowsDirectory.Buffer = HeapBuffer;
|
||||
|
||||
/* Make a shared heap copy of the System directory */
|
||||
BaseStaticServerData->WindowsSystemDirectory = BaseSrvWindowsSystemDirectory;
|
||||
HeapBuffer = RtlAllocateHeap(BaseSrvSharedHeap,
|
||||
0,
|
||||
BaseSrvWindowsSystemDirectory.MaximumLength);
|
||||
ASSERT(HeapBuffer);
|
||||
RtlCopyMemory(HeapBuffer,
|
||||
BaseStaticServerData->WindowsSystemDirectory.Buffer,
|
||||
BaseSrvWindowsSystemDirectory.MaximumLength);
|
||||
BaseStaticServerData->WindowsSystemDirectory.Buffer = HeapBuffer;
|
||||
|
||||
/* This string is not used */
|
||||
RtlInitEmptyUnicodeString(&BaseStaticServerData->WindowsSys32x86Directory,
|
||||
NULL,
|
||||
0);
|
||||
|
||||
/* Make a shared heap copy of the BNO directory */
|
||||
BaseStaticServerData->NamedObjectDirectory = BnoString;
|
||||
BaseStaticServerData->NamedObjectDirectory.MaximumLength = BnoString.Length +
|
||||
sizeof(UNICODE_NULL);
|
||||
HeapBuffer = RtlAllocateHeap(BaseSrvSharedHeap,
|
||||
0,
|
||||
BaseStaticServerData->NamedObjectDirectory.MaximumLength);
|
||||
ASSERT(HeapBuffer);
|
||||
RtlCopyMemory(HeapBuffer,
|
||||
BaseStaticServerData->NamedObjectDirectory.Buffer,
|
||||
BaseStaticServerData->NamedObjectDirectory.MaximumLength);
|
||||
BaseStaticServerData->NamedObjectDirectory.Buffer = HeapBuffer;
|
||||
|
||||
/*
|
||||
* Confirmed that in Windows, CSDNumber and RCNumber are actually Length
|
||||
* and MaximumLength of the CSD String, since the same UNICODE_STRING is
|
||||
* being queried twice, the first time as a ULONG!
|
||||
*
|
||||
* Somehow, in Windows this doesn't cause a buffer overflow, but it might
|
||||
* in ReactOS, so this code is disabled until someone figures out WTF.
|
||||
*/
|
||||
BaseStaticServerData->CSDNumber = 0;
|
||||
BaseStaticServerData->RCNumber = 0;
|
||||
|
||||
/* Initialize the CSD string and query its value from the registry */
|
||||
RtlInitEmptyUnicodeString(&BaseSrvCSDString, Buffer, sizeof(Buffer));
|
||||
Status = RtlQueryRegistryValues(RTL_REGISTRY_WINDOWS_NT,
|
||||
L"",
|
||||
BaseServerRegistryConfigurationTable,
|
||||
NULL,
|
||||
NULL);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
/* Copy into the shared buffer */
|
||||
wcsncpy(BaseStaticServerData->CSDVersion,
|
||||
BaseSrvCSDString.Buffer,
|
||||
BaseSrvCSDString.Length / sizeof(WCHAR));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* NULL-terminate to indicate nothing is there */
|
||||
BaseStaticServerData->CSDVersion[0] = UNICODE_NULL;
|
||||
}
|
||||
|
||||
/* Cache the system information */
|
||||
Status = NtQuerySystemInformation(SystemBasicInformation,
|
||||
&BaseStaticServerData->SysInfo,
|
||||
sizeof(BaseStaticServerData->SysInfo),
|
||||
NULL);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* FIXME: Should query the registry for these */
|
||||
BaseStaticServerData->DefaultSeparateVDM = FALSE;
|
||||
BaseStaticServerData->IsWowTaskReady = FALSE;
|
||||
|
||||
/* Allocate a security descriptor and create it */
|
||||
BnoSd = RtlAllocateHeap(BaseSrvHeap, 0, 1024);
|
||||
ASSERT(BnoSd);
|
||||
Status = RtlCreateSecurityDescriptor(BnoSd, SECURITY_DESCRIPTOR_REVISION);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Create the BNO and \Restricted DACLs */
|
||||
Status = CreateBaseAcls(&BnoDacl, &BnoRestrictedDacl);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Set the BNO DACL as active for now */
|
||||
Status = RtlSetDaclSecurityDescriptor(BnoSd, TRUE, BnoDacl, FALSE);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Create the BNO directory */
|
||||
RtlInitUnicodeString(&BnoString, L"\\BaseNamedObjects");
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&BnoString,
|
||||
OBJ_OPENIF | OBJ_PERMANENT | OBJ_CASE_INSENSITIVE,
|
||||
NULL,
|
||||
BnoSd);
|
||||
Status = NtCreateDirectoryObject(&BaseSrvNamedObjectDirectory,
|
||||
DIRECTORY_ALL_ACCESS,
|
||||
&ObjectAttributes);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* Check if we are session 0 */
|
||||
if (SessionId == 0)
|
||||
{
|
||||
/* Mark this as a session 0 directory */
|
||||
Status = NtSetInformationObject(BaseSrvNamedObjectDirectory,
|
||||
ObjectSessionInformation,
|
||||
NULL,
|
||||
0);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
}
|
||||
|
||||
/* Check if LUID device maps are enabled */
|
||||
Status = NtQueryInformationProcess(NtCurrentProcess(),
|
||||
ProcessLUIDDeviceMapsEnabled,
|
||||
&LuidEnabled,
|
||||
sizeof(LuidEnabled),
|
||||
NULL);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
BaseStaticServerData->LUIDDeviceMapsEnabled = (BOOLEAN)LuidEnabled;
|
||||
if (!BaseStaticServerData->LUIDDeviceMapsEnabled)
|
||||
{
|
||||
/* Make Global point back to BNO */
|
||||
RtlInitUnicodeString(&DirectoryName, L"Global");
|
||||
RtlInitUnicodeString(&SymlinkName, L"\\BaseNamedObjects");
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&DirectoryName,
|
||||
OBJ_OPENIF | OBJ_PERMANENT | OBJ_CASE_INSENSITIVE,
|
||||
BaseSrvNamedObjectDirectory,
|
||||
BnoSd);
|
||||
Status = NtCreateSymbolicLinkObject(&SymHandle,
|
||||
SYMBOLIC_LINK_ALL_ACCESS,
|
||||
&ObjectAttributes,
|
||||
&SymlinkName);
|
||||
if ((NT_SUCCESS(Status)) && SessionId == 0) NtClose(SymHandle);
|
||||
|
||||
/* Make local point back to \Sessions\x\BNO */
|
||||
RtlInitUnicodeString(&DirectoryName, L"Local");
|
||||
ASSERT(SessionId == 0);
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&DirectoryName,
|
||||
OBJ_OPENIF | OBJ_PERMANENT | OBJ_CASE_INSENSITIVE,
|
||||
BaseSrvNamedObjectDirectory,
|
||||
BnoSd);
|
||||
Status = NtCreateSymbolicLinkObject(&SymHandle,
|
||||
SYMBOLIC_LINK_ALL_ACCESS,
|
||||
&ObjectAttributes,
|
||||
&SymlinkName);
|
||||
if ((NT_SUCCESS(Status)) && SessionId == 0) NtClose(SymHandle);
|
||||
|
||||
/* Make Session point back to BNOLINKS */
|
||||
RtlInitUnicodeString(&DirectoryName, L"Session");
|
||||
RtlInitUnicodeString(&SymlinkName, L"\\Sessions\\BNOLINKS");
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&DirectoryName,
|
||||
OBJ_OPENIF | OBJ_PERMANENT | OBJ_CASE_INSENSITIVE,
|
||||
BaseSrvNamedObjectDirectory,
|
||||
BnoSd);
|
||||
Status = NtCreateSymbolicLinkObject(&SymHandle,
|
||||
SYMBOLIC_LINK_ALL_ACCESS,
|
||||
&ObjectAttributes,
|
||||
&SymlinkName);
|
||||
if ((NT_SUCCESS(Status)) && SessionId == 0) NtClose(SymHandle);
|
||||
|
||||
/* Create the BNO\Restricted directory and set the restricted DACL */
|
||||
RtlInitUnicodeString(&DirectoryName, L"Restricted");
|
||||
Status = RtlSetDaclSecurityDescriptor(BnoSd, TRUE, BnoRestrictedDacl, FALSE);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&DirectoryName,
|
||||
OBJ_OPENIF | OBJ_PERMANENT | OBJ_CASE_INSENSITIVE,
|
||||
BaseSrvNamedObjectDirectory,
|
||||
BnoSd);
|
||||
Status = NtCreateDirectoryObject(&BaseSrvRestrictedObjectDirectory,
|
||||
DIRECTORY_ALL_ACCESS,
|
||||
&ObjectAttributes);
|
||||
ASSERT(NT_SUCCESS(Status));
|
||||
}
|
||||
|
||||
/* Finally, set the pointer */
|
||||
LoadedServerDll->SharedSection = BaseStaticServerData;
|
||||
}
|
||||
|
||||
CSR_SERVER_DLL_INIT(ServerDllInitialization)
|
||||
{
|
||||
/* Setup the DLL Object */
|
||||
LoadedServerDll->ApiBase = BASESRV_FIRST_API_NUMBER;
|
||||
LoadedServerDll->HighestApiSupported = BasepMaxApiNumber;
|
||||
LoadedServerDll->DispatchTable = BaseServerApiDispatchTable;
|
||||
LoadedServerDll->ValidTable = BaseServerApiServerValidTable;
|
||||
LoadedServerDll->NameTable = BaseServerApiNameTable;
|
||||
LoadedServerDll->SizeOfProcessData = 0;
|
||||
LoadedServerDll->ConnectCallback = NULL;
|
||||
LoadedServerDll->DisconnectCallback = NULL;
|
||||
LoadedServerDll->ShutdownProcessCallback = NULL;
|
||||
|
||||
BaseSrvDllInstance = LoadedServerDll->ServerHandle;
|
||||
|
||||
BaseInitializeStaticServerData(LoadedServerDll);
|
||||
|
||||
/* Initialize DOS devices management */
|
||||
BaseInitDefineDosDevice();
|
||||
|
||||
/* All done */
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
BOOL
|
||||
NTAPI
|
||||
DllMain(IN HINSTANCE hInstanceDll,
|
||||
IN DWORD dwReason,
|
||||
IN LPVOID lpReserved)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hInstanceDll);
|
||||
UNREFERENCED_PARAMETER(dwReason);
|
||||
UNREFERENCED_PARAMETER(lpReserved);
|
||||
|
||||
if (DLL_PROCESS_DETACH == dwReason)
|
||||
{
|
||||
BaseCleanupDefineDosDevice();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user