Compare commits

..

17 Commits

Author SHA1 Message Date
Hermès Bélusca-Maïto
7d7a459001 - Port the last welcome.exe change from r73658.
- Fix the path to welcome settings for the FOSDEM CD.
- Add the welcome.exe localized customizations for FOSDEM 2017 CD.

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73659
2017-02-01 04:07:02 +00:00
Hermès Bélusca-Maïto
2c1648e5f9 Port commit r73656 : welcome.ini configuration.
svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73657
2017-02-01 03:16:08 +00:00
Hermès Bélusca-Maïto
9b9a5609dd Port commit r73654 "Fix the dependencies for the hybridcd".
svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73655
2017-02-01 02:20:46 +00:00
Hermès Bélusca-Maïto
85c2c6dd94 [FREELDR]: HACK: Manually reduce the size of the temporary heap from 32MB down to 10MB, because, in some situations (e.g. Bochs, or real HW, see CORE-12694), FreeLDR fails when creating the temporary heap with an "out of memory" error. First investigations seem to show that it's because FreeLDR cannot find a contiguous memory area of such size...
More investigations are in order.
I strongly think that this heap size should not be hardcoded, but instead computed, taking into account for the memory availability on a given system.

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73653
2017-01-31 23:02:16 +00:00
Hermès Bélusca-Maïto
6bb13bc0d3 Port trunk commit r73651.
svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73652
2017-01-31 22:08:35 +00:00
Hermès Bélusca-Maïto
2a3428d7d1 Port the following FREELDR trunk fixes:
- Add missing checks for allocation failure in DetectSerialPointerPeripheral and DetectPS2Mouse. Patch by Serge Gautherie. CORE-12623 (r73608).
- Correctly check for buffer overflow in DetectPnpBios. Patch by Serge Gautherie. CORE-12623 (r73617).

Port the following FREELDR improvements:
- Code cleanup/simplifications: revisions 73606,73610,73611,73616,73618, as a prelude to...
- ... a fix so that CD-ROM disks are correctly recognized, even if they hold a MBR in their sector 0 (required for HybridUSB "technology"): commit r73621. CORE-12692

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73650
2017-01-31 21:07:45 +00:00
Hermès Bélusca-Maïto
128f19486c Port the following trunk fixes:
[NTOS:MM]: Support MmSpecialPoolTag == '*' to mean all tags. By Serge Gautherie. CORE-12711 (r73607).
[CMAKE]: Add missing target-level dependency when passing a target to add_rostests_file (r73613).
[CALC]: Do not push memory stores onto the operation stack since they can't be acted upon. Based on a patch by Katayama Hirofumi MZ. CORE-12325 (r73620).
[TREE]: Rework the utility (use explicit UNICODE, use WIN32 types, remove useless dependency to user32...), and add support for console ConUtils streams. CORE-12677 (r73622).
[CMD]: The 'type' command can open & display files opened with write access. Patch by 'mjw', CORE-12602 (r73623).

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73649
2017-01-31 20:55:30 +00:00
Hermès Bélusca-Maïto
0118cfff6b Port the following trunk fixes:
[FRAMEDYN]: Fix integer overflow checks. CID 1101981, 1248380, 1248381 (r73633).
[PSDK]: Remove incorrect bit masking from IsRecognizedPartition & IsContainerPartition. CID 1341188 (r73634).
[DHCPCSVC]: Addendum to r69652: Avoid some more "Operands don't affect result" warnings. CID 515151, 515152, 515153 (r73635).
[FREELDR]: Correctly check for vertical retrace in PcVideoSync. CID 513066 (r73636).
[MSPAINT]: Add missing break in CMainWindow::OnCommand/IDM_FORMATICONBAR. CID 1322024 (r73642).
[BOOTLIB]: Correctly check for floppy devices in BlockIoEfiGetDeviceInformation. CID 1341189 (r73643).

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73648
2017-01-31 20:48:41 +00:00
Hermès Bélusca-Maïto
434e256e43 [REACTOS-FOSDEM2017]: Sync with ROS 0.4.4 branch. In particular the following fixes/hacks:
- Apply the Wordpad related hack from CORE-5823 by Jared Smudde (r73624).
- Disable COMMAND.COM debugging messages. CORE-10710 (r73625).
- Add a hack by Thomas to avoid MmGetPhysicalAddress failures during USB transfers. CORE-9224 (r73627).
- Apply the patch that allows us to dynamically change the resolution by resizing in VirtualBox. CORE-6742 (r73628).
- Revert some shell32 work (revisions 73436, 73591 and 73599) on Giannis request to avoid any potential last minute regressions. CORE-12700 (r73629).
- Revert revisions 72835 and 72839 to avoid the FsRtlIsNameInExpressionPrivate crash from CORE-12121. (r73630).
- Mask WndProc exceptions CORE-11915 (r73631).

and the trunk commits:
- Replace some animations with RLE-8 compressed ones; courtesy Jared Smudde. Thanks! CORE-11643 (r73601).
- Some improvements for FreeLdr (r73596).
- The ISOBOOT USB functionality by Colin Finck (r73594 and r73595).
- And other commits (after r73522).

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73647
2017-01-31 19:53:27 +00:00
Hermès Bélusca-Maïto
9eef31a413 [ROSAPPS]: Update with trunk r73645.
svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73646
2017-01-31 19:45:13 +00:00
Hermès Bélusca-Maïto
dd1295246d [BOOTDATA][FREELDR]
- By default, boot the livecd without the kernel debugger enabled, but...
- ... augment the FreeLdr "Debugging Mode" option with serial+screen debug ports, so that, if someone wants to run ReactOS with the kernel debugger on real hardware, without serial port, (s)he still can do it and see the debug output.
I do that, until FreeLdr can support run-time editing boot options of existing boot menu entries.

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73645
2017-01-31 19:36:15 +00:00
Hermès Bélusca-Maïto
9ea9b7db36 [WALLPAPERS]: Addendum to r73638:
- Second version of the FOSDEM 2017 wallpapers, with better aligned logos.
- Since the FOSDEM wallpaper displays better when not being stretched but centered, use instead centered-style wallpaper.

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73644
2017-01-31 19:29:05 +00:00
Hermès Bélusca-Maïto
8b8de8b853 [VERSION]: Addendum to r73588: correctly report the version as 0.4.4 (FOSDEM2017RC).
svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73640
2017-01-30 22:59:38 +00:00
Hermès Bélusca-Maïto
45d79c2a20 [NTOS]: Modify the ReactOS boot logo for the FOSDEM 2017 edition, based upon an idea by Jared Smudde.
You were numerous to participate to its selection; I thank you all!

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73639
2017-01-30 22:50:03 +00:00
Hermès Bélusca-Maïto
c0f99c646f [WALLPAPERS]
- Update the wallpapers for FOSDEM 2017.
- Since we don't have any mechanism at the moment to preselect a non-bitmap wallpaper to use, I'm forced to convert the wallpaper we want to use to bitmap first, and then add its entry into the registry (I cannot just use the jpg file in the registry). See r66772.

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73638
2017-01-30 22:24:44 +00:00
Hermès Bélusca-Maïto
95aa925ed9 [EXPLORER]: Update the Start Menu banner for FOSDEM 2017, thanks to Jared Smudde!
svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73598
2017-01-26 00:09:25 +00:00
Hermès Bélusca-Maïto
09dc089cfe [BOOTDATA]
- Flatten out the ISO layout for hybridcd (otherwise some problems appear for the livecd: see r66114 for more details).
- Add user-friendly boot menu.

[README]: Update the ReadMe.txt for FOSDEM 2017.

[VERSION]: Adjust version to 0.4.4-RC FOSDEM 2017.

svn path=/branches/ReactOS-0.4.4-FOSDEM2017/; revision=73588
2017-01-23 12:45:51 +00:00
2447 changed files with 37357 additions and 100819 deletions

View File

@@ -28,6 +28,7 @@ add_subdirectory(network)
add_subdirectory(notepad)
add_subdirectory(osk)
add_subdirectory(rapps)
add_subdirectory(rapps_new)
add_subdirectory(regedit)
add_subdirectory(regedt32)
add_subdirectory(sc)

View File

@@ -933,18 +933,15 @@ static INT_PTR CALLBACK DlgStatProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
return FALSE;
}
static BOOL idm_2_idc(int idm, WPARAM *pIdc)
static WPARAM idm_2_idc(int idm)
{
int x;
for (x=0; x<SIZEOF(upd); x++) {
if (upd[x].idm == idm)
{
*pIdc = (WPARAM)(upd[x].idc);
return TRUE;
}
break;
}
return FALSE;
return (WPARAM)(upd[x].idc);
}
static void CopyMemToClipboard(void *ptr)
@@ -1411,15 +1408,8 @@ static INT_PTR CALLBACK DlgMainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
case IDM_VIEW_DWORD:
case IDM_VIEW_WORD:
case IDM_VIEW_BYTE:
{
WPARAM idc;
if(idm_2_idc(LOWORD(wp), &idc))
{
SendMessage(hWnd, WM_COMMAND, idc, 0);
return TRUE;
}
return FALSE;
}
SendMessage(hWnd, WM_COMMAND, idm_2_idc(LOWORD(wp)), 0);
return TRUE;
case IDM_EDIT_COPY:
handle_copy_command(hWnd);
return TRUE;

View File

@@ -16,9 +16,6 @@ CLPFILE_ICON ICON "res/clpfile.ico"
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_CS_CZ
#include "lang/cs-CZ.rc"
#endif
#ifdef LANGUAGE_DE_DE
#include "lang/de-DE.rc"
#endif

View File

@@ -1,65 +0,0 @@
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
ID_ACCEL ACCELERATORS
BEGIN
VK_DELETE, CMD_DELETE, VIRTKEY
END
MAIN_MENU MENU
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "&Otevřít...", CMD_OPEN
MENUITEM "&Uložit jako...", CMD_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "&Konec", CMD_EXIT
END
POPUP "&Upravit"
BEGIN
MENUITEM "&Smazat\tDel", CMD_DELETE
END
POPUP "&Zobrazení"
BEGIN
MENUITEM "&Automaticky", CMD_AUTOMATIC
END
POPUP "&Nápověda"
BEGIN
MENUITEM "&Zobrazit nápovědu", CMD_HELP
MENUITEM SEPARATOR
MENUITEM "&O programu", CMD_ABOUT
END
END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Prohlížeč schránky"
STRING_CLIPFILE "Prvek schránky"
STRING_DELETE_MSG "Vymazat obsah stránky?"
STRING_DELETE_TITLE "Vymazat schránku"
STRING_FORMAT_NT "Soubory schránky systému ReactOS (*.clp)"
STRING_FORMAT_GEN "Soubory schránky (*.clp)"
END
STRINGTABLE
BEGIN
STRING_CF_UNKNOWN "Neznámý formát"
STRING_CF_TEXT "Text"
STRING_CF_BITMAP "Bitmapa"
STRING_CF_OEMTEXT "Text OEM"
STRING_CF_UNICODETEXT "Text Unicode"
STRING_CF_DIB "DIB bitmapa"
STRING_CF_LOCALE "Data znakové sady"
STRING_CF_ENHMETAFILE "Rožířený soubor Metafile"
STRING_CF_METAFILEPICT "Metafile"
STRING_CF_PALETTE "Barevná paleta"
STRING_CF_DIBV5 "DIB bitmapa (Verze 5)"
STRING_CF_SYLK "Symbolický odkaz"
STRING_CF_DIF "Formát výměny dat"
STRING_CF_HDROP "Data přetažení"
END
STRINGTABLE
BEGIN
ERROR_UNSUPPORTED_FORMAT "Schránka obsahuje data ve formátu, který není možné zobrazit."
ERROR_INVALID_FILE_FORMAT "Vybraný soubor není platný soubor schránky."
END

View File

@@ -1,4 +1,3 @@
add_subdirectory(at)
add_subdirectory(clip)
add_subdirectory(comp)
add_subdirectory(cscript)
@@ -10,7 +9,6 @@ add_subdirectory(help)
add_subdirectory(hostname)
add_subdirectory(lodctr)
add_subdirectory(mode)
add_subdirectory(mofcomp)
add_subdirectory(more)
add_subdirectory(reg)
add_subdirectory(schtasks)

View File

@@ -1,8 +0,0 @@
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/conutils)
add_executable(at at.c at.rc)
set_module_type(at win32cui UNICODE)
target_link_libraries(at conutils ${PSEH_LIB})
add_importlibs(at msvcrt kernel32 user32 netapi32)
add_cd_file(TARGET at DESTINATION reactos/system32 FOR all)

View File

@@ -1,936 +0,0 @@
/*
* PROJECT: ReactOS AT utility
* COPYRIGHT: See COPYING in the top level directory
* FILE: base/applications/cmdutils/at/at.c
* PURPOSE: ReactOS AT utility
* PROGRAMMERS: Eric Kohl <eric.kohl@reactos.org>
*/
#include <stdlib.h>
#include <stdio.h>
#include <windef.h>
#include <winbase.h>
#include <winuser.h>
#include <wincon.h>
#include <winnls.h>
#include <lm.h>
#include <conutils.h>
#include "resource.h"
PWSTR pszDaysOfWeekArray[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
static
VOID
FreeDaysOfWeekArray(VOID)
{
INT i;
for (i = 0; i < 7; i++)
{
if (pszDaysOfWeekArray[i] != NULL)
HeapFree(GetProcessHeap(), 0, pszDaysOfWeekArray[i]);
}
}
static
BOOL
InitDaysOfWeekArray(VOID)
{
INT i, nLength;
for (i = 0; i < 7; i++)
{
nLength = GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_SABBREVDAYNAME1 + i,
NULL,
0);
pszDaysOfWeekArray[i] = HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY,
nLength * sizeof(WCHAR));
if (pszDaysOfWeekArray[i] == NULL)
{
FreeDaysOfWeekArray();
return FALSE;
}
GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_SABBREVDAYNAME1 + i,
pszDaysOfWeekArray[i],
nLength);
}
return TRUE;
}
static
BOOL
ParseTime(
PWSTR pszTime,
PULONG pulJobHour,
PULONG pulJobMinute)
{
WCHAR szHour[3], szMinute[3], szAmPm[5];
PWSTR startPtr, endPtr;
ULONG ulHour = 0, ulMinute = 0;
INT nLength;
if (pszTime == NULL)
return FALSE;
startPtr = pszTime;
/* Extract the hour string */
nLength = 0;
while (*startPtr != L'\0' && iswdigit(*startPtr))
{
if (nLength >= 2)
return FALSE;
szHour[nLength] = *startPtr;
nLength++;
startPtr++;
}
szHour[nLength] = L'\0';
/* Check for a valid time separator */
if (*startPtr != L':')
return FALSE;
/* Skip the time separator */
startPtr++;
/* Extract the minute string */
nLength = 0;
while (*startPtr != L'\0' && iswdigit(*startPtr))
{
if (nLength >= 2)
return FALSE;
szMinute[nLength] = *startPtr;
nLength++;
startPtr++;
}
szMinute[nLength] = L'\0';
/* Extract the optional AM/PM indicator string */
nLength = 0;
while (*startPtr != L'\0')
{
if (nLength >= 4)
return FALSE;
if (!iswspace(*startPtr))
{
szAmPm[nLength] = *startPtr;
nLength++;
}
startPtr++;
}
szAmPm[nLength] = L'\0';
/* Convert the hour string */
ulHour = wcstoul(szHour, &endPtr, 10);
if (ulHour == 0 && *endPtr != UNICODE_NULL)
return FALSE;
/* Convert the minute string */
ulMinute = wcstoul(szMinute, &endPtr, 10);
if (ulMinute == 0 && *endPtr != UNICODE_NULL)
return FALSE;
/* Check for valid AM/PM indicator */
if (wcslen(szAmPm) > 0 &&
_wcsicmp(szAmPm, L"a") != 0 &&
_wcsicmp(szAmPm, L"am") != 0 &&
_wcsicmp(szAmPm, L"p") != 0 &&
_wcsicmp(szAmPm, L"pm") != 0)
return FALSE;
/* Check for the valid minute range [0-59] */
if (ulMinute > 59)
return FALSE;
if (wcslen(szAmPm) > 0)
{
/* 12 hour time format */
/* Check for the valid hour range [1-12] */
if (ulHour == 0 || ulHour > 12)
return FALSE;
/* Convert 12 hour format to 24 hour format */
if (_wcsicmp(szAmPm, L"a") == 0 ||
_wcsicmp(szAmPm, L"am") == 0)
{
if (ulHour == 12)
ulHour = 0;
}
else
{
if (ulHour >= 1 && ulHour <= 11)
ulHour += 12;
}
}
else
{
/* 24 hour time format */
/* Check for the valid hour range [0-23] */
if (ulHour > 23)
return FALSE;
}
if (pulJobHour != NULL)
*pulJobHour = ulHour;
if (pulJobMinute != NULL)
*pulJobMinute = ulMinute;
return TRUE;
}
static
BOOL
ParseId(
PWSTR pszId,
PULONG pulId)
{
PWSTR startPtr, endPtr;
ULONG ulId = 0;
BOOL bResult = FALSE;
startPtr = pszId;
endPtr = NULL;
ulId = wcstoul(startPtr, &endPtr, 10);
if (endPtr != NULL && *endPtr == UNICODE_NULL)
{
bResult = TRUE;
if (pulId != NULL)
*pulId = ulId;
}
return bResult;
}
static
BOOL
ParseDaysOfMonth(
PWSTR pszBuffer,
PULONG pulDaysOfMonth)
{
PWSTR startPtr, endPtr;
ULONG ulValue;
if (wcslen(pszBuffer) == 0)
return FALSE;
startPtr = pszBuffer;
endPtr = NULL;
for (;;)
{
ulValue = wcstoul(startPtr, &endPtr, 10);
if (ulValue == 0)
return FALSE;
if (ulValue > 0 && ulValue <= 31)
*pulDaysOfMonth |= (1 << (ulValue - 1));
if (endPtr != NULL && *endPtr == UNICODE_NULL)
return TRUE;
startPtr = endPtr + 1;
endPtr = NULL;
}
return FALSE;
}
static
BOOL
ParseDaysOfWeek(
PWSTR pszBuffer,
PUCHAR pucDaysOfWeek)
{
PWSTR startPtr, endPtr;
INT nLength, i;
if (wcslen(pszBuffer) == 0)
return FALSE;
startPtr = pszBuffer;
endPtr = NULL;
for (;;)
{
endPtr = wcschr(startPtr, L',');
if (endPtr == NULL)
nLength = wcslen(startPtr);
else
nLength = (INT)((ULONG_PTR)endPtr - (ULONG_PTR)startPtr) / sizeof(WCHAR);
for (i = 0; i < 7; i++)
{
if (nLength == wcslen(pszDaysOfWeekArray[i]) &&
_wcsnicmp(startPtr, pszDaysOfWeekArray[i], nLength) == 0)
{
*pucDaysOfWeek |= (1 << i);
break;
}
}
if (endPtr == NULL)
return TRUE;
startPtr = endPtr + 1;
endPtr = NULL;
}
return FALSE;
}
static
VOID
PrintErrorMessage(
DWORD dwError)
{
PWSTR pszBuffer = NULL;
FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dwError,
0,
(PWSTR)&pszBuffer,
0,
NULL);
ConPrintf(StdErr, L"%s\n", pszBuffer);
LocalFree(pszBuffer);
}
static
VOID
PrintHorizontalLine(VOID)
{
WCHAR szBuffer[80];
INT i;
for (i = 0; i < 79; i++)
szBuffer[i] = L'-';
szBuffer[79] = UNICODE_NULL;
ConPrintf(StdOut, L"%s\n", szBuffer);
}
static
BOOL
Confirm(VOID)
{
HINSTANCE hInstance;
WCHAR szYesBuffer[8];
WCHAR szNoBuffer[8];
WCHAR szInput[80];
DWORD dwOldMode;
DWORD dwRead = 0;
BOOL ret = FALSE;
HANDLE hFile;
hInstance = GetModuleHandleW(NULL);
LoadStringW(hInstance, IDS_CONFIRM_YES, szYesBuffer, _countof(szYesBuffer));
LoadStringW(hInstance, IDS_CONFIRM_NO, szNoBuffer, _countof(szNoBuffer));
ZeroMemory(szInput, sizeof(szInput));
hFile = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(hFile, &dwOldMode);
SetConsoleMode(hFile, ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT);
for (;;)
{
ConResPrintf(StdOut, IDS_CONFIRM_QUESTION);
ReadConsoleW(hFile, szInput, _countof(szInput), &dwRead, NULL);
szInput[0] = towupper(szInput[0]);
if (szInput[0] == szYesBuffer[0])
{
ret = TRUE;
break;
}
else if (szInput[0] == 13 || szInput[0] == szNoBuffer[0])
{
ret = FALSE;
break;
}
ConResPrintf(StdOut, IDS_CONFIRM_INVALID);
}
SetConsoleMode(hFile, dwOldMode);
return ret;
}
static
DWORD_PTR
GetTimeAsJobTime(VOID)
{
SYSTEMTIME Time;
DWORD_PTR JobTime;
GetLocalTime(&Time);
JobTime = (DWORD_PTR)Time.wHour * 3600000 +
(DWORD_PTR)Time.wMinute * 60000;
return JobTime;
}
static
ULONG
GetCurrentDayOfMonth(VOID)
{
SYSTEMTIME Time;
GetLocalTime(&Time);
return 1UL << (Time.wDay - 1);
}
static
VOID
JobTimeToTimeString(
PWSTR pszBuffer,
INT cchBuffer,
WORD wHour,
WORD wMinute)
{
SYSTEMTIME Time = {0, 0, 0, 0, 0, 0, 0, 0};
Time.wHour = wHour;
Time.wMinute = wMinute;
GetTimeFormat(LOCALE_USER_DEFAULT,
TIME_NOSECONDS,
&Time,
NULL,
pszBuffer,
cchBuffer);
}
static
INT
PrintJobDetails(
PWSTR pszComputerName,
ULONG ulJobId)
{
PAT_INFO pBuffer = NULL;
DWORD_PTR CurrentTime;
WCHAR szStatusBuffer[16];
WCHAR szScheduleBuffer[60];
WCHAR szTimeBuffer[16];
WCHAR szInteractiveBuffer[16];
WCHAR szDateBuffer[8];
INT i, nDateLength, nScheduleLength;
HINSTANCE hInstance;
NET_API_STATUS Status;
Status = NetScheduleJobGetInfo(pszComputerName,
ulJobId,
(PBYTE *)&pBuffer);
if (Status != NERR_Success)
{
PrintErrorMessage(Status);
return 1;
}
hInstance = GetModuleHandle(NULL);
if (pBuffer->Flags & JOB_EXEC_ERROR)
LoadStringW(hInstance, IDS_ERROR, szStatusBuffer, _countof(szStatusBuffer));
else
LoadStringW(hInstance, IDS_OK, szStatusBuffer, _countof(szStatusBuffer));
if (pBuffer->DaysOfMonth != 0)
{
if (pBuffer->Flags & JOB_RUN_PERIODICALLY)
LoadStringW(hInstance, IDS_EVERY, szScheduleBuffer, _countof(szScheduleBuffer));
else
LoadStringW(hInstance, IDS_NEXT, szScheduleBuffer, _countof(szScheduleBuffer));
nScheduleLength = wcslen(szScheduleBuffer);
for (i = 0; i < 31; i++)
{
if (pBuffer->DaysOfMonth & (1 << i))
{
swprintf(szDateBuffer, L" %d", i + 1);
nDateLength = wcslen(szDateBuffer);
if (nScheduleLength + nDateLength <= 55)
{
wcscat(szScheduleBuffer, szDateBuffer);
nScheduleLength += nDateLength;
}
else
{
wcscat(szScheduleBuffer, L"...");
break;
}
}
}
}
else if (pBuffer->DaysOfWeek != 0)
{
if (pBuffer->Flags & JOB_RUN_PERIODICALLY)
LoadStringW(hInstance, IDS_EVERY, szScheduleBuffer, _countof(szScheduleBuffer));
else
LoadStringW(hInstance, IDS_NEXT, szScheduleBuffer, _countof(szScheduleBuffer));
nScheduleLength = wcslen(szScheduleBuffer);
for (i = 0; i < 7; i++)
{
if (pBuffer->DaysOfWeek & (1 << i))
{
swprintf(szDateBuffer, L" %s", pszDaysOfWeekArray[i]);
nDateLength = wcslen(szDateBuffer);
if (nScheduleLength + nDateLength <= 55)
{
wcscat(szScheduleBuffer, szDateBuffer);
nScheduleLength += nDateLength;
}
else
{
wcscat(szScheduleBuffer, L"...");
break;
}
}
}
}
else
{
CurrentTime = GetTimeAsJobTime();
if (CurrentTime > pBuffer->JobTime)
LoadStringW(hInstance, IDS_TOMORROW, szScheduleBuffer, _countof(szScheduleBuffer));
else
LoadStringW(hInstance, IDS_TODAY, szScheduleBuffer, _countof(szScheduleBuffer));
}
JobTimeToTimeString(szTimeBuffer,
_countof(szTimeBuffer),
(WORD)(pBuffer->JobTime / 3600000),
(WORD)((pBuffer->JobTime % 3600000) / 60000));
if (pBuffer->Flags & JOB_NONINTERACTIVE)
LoadStringW(hInstance, IDS_NO, szInteractiveBuffer, _countof(szInteractiveBuffer));
else
LoadStringW(hInstance, IDS_YES, szInteractiveBuffer, _countof(szInteractiveBuffer));
ConResPrintf(StdOut, IDS_TASKID, ulJobId);
ConResPrintf(StdOut, IDS_STATUS, szStatusBuffer);
ConResPrintf(StdOut, IDS_SCHEDULE, szScheduleBuffer);
ConResPrintf(StdOut, IDS_TIME, szTimeBuffer);
ConResPrintf(StdOut, IDS_INTERACTIVE, szInteractiveBuffer);
ConResPrintf(StdOut, IDS_COMMAND, pBuffer->Command);
NetApiBufferFree(pBuffer);
return 0;
}
static
INT
PrintAllJobs(
PWSTR pszComputerName)
{
PAT_ENUM pBuffer = NULL;
DWORD dwRead = 0, dwTotal = 0;
DWORD dwResume = 0, i;
DWORD_PTR CurrentTime;
NET_API_STATUS Status;
WCHAR szScheduleBuffer[32];
WCHAR szTimeBuffer[16];
WCHAR szDateBuffer[8];
HINSTANCE hInstance;
INT j, nDateLength, nScheduleLength;
Status = NetScheduleJobEnum(pszComputerName,
(PBYTE *)&pBuffer,
MAX_PREFERRED_LENGTH,
&dwRead,
&dwTotal,
&dwResume);
if (Status != NERR_Success)
{
PrintErrorMessage(Status);
return 1;
}
if (dwTotal == 0)
{
ConResPrintf(StdOut, IDS_NO_ENTRIES);
return 0;
}
ConResPrintf(StdOut, IDS_JOBS_LIST);
PrintHorizontalLine();
hInstance = GetModuleHandle(NULL);
for (i = 0; i < dwRead; i++)
{
if (pBuffer[i].DaysOfMonth != 0)
{
if (pBuffer[i].Flags & JOB_RUN_PERIODICALLY)
LoadStringW(hInstance, IDS_EVERY, szScheduleBuffer, _countof(szScheduleBuffer));
else
LoadStringW(hInstance, IDS_NEXT, szScheduleBuffer, _countof(szScheduleBuffer));
nScheduleLength = wcslen(szScheduleBuffer);
for (j = 0; j < 31; j++)
{
if (pBuffer[i].DaysOfMonth & (1 << j))
{
swprintf(szDateBuffer, L" %d", j + 1);
nDateLength = wcslen(szDateBuffer);
if (nScheduleLength + nDateLength <= 19)
{
wcscat(szScheduleBuffer, szDateBuffer);
nScheduleLength += nDateLength;
}
else
{
wcscat(szScheduleBuffer, L"...");
break;
}
}
}
}
else if (pBuffer[i].DaysOfWeek != 0)
{
if (pBuffer[i].Flags & JOB_RUN_PERIODICALLY)
LoadStringW(hInstance, IDS_EVERY, szScheduleBuffer, _countof(szScheduleBuffer));
else
LoadStringW(hInstance, IDS_NEXT, szScheduleBuffer, _countof(szScheduleBuffer));
nScheduleLength = wcslen(szScheduleBuffer);
for (j = 0; j < 7; j++)
{
if (pBuffer[i].DaysOfWeek & (1 << j))
{
swprintf(szDateBuffer, L" %s", pszDaysOfWeekArray[j]);
nDateLength = wcslen(szDateBuffer);
if (nScheduleLength + nDateLength <= 55)
{
wcscat(szScheduleBuffer, szDateBuffer);
nScheduleLength += nDateLength;
}
else
{
wcscat(szScheduleBuffer, L"...");
break;
}
}
}
}
else
{
CurrentTime = GetTimeAsJobTime();
if (CurrentTime > pBuffer[i].JobTime)
LoadStringW(hInstance, IDS_TOMORROW, szScheduleBuffer, _countof(szScheduleBuffer));
else
LoadStringW(hInstance, IDS_TODAY, szScheduleBuffer, _countof(szScheduleBuffer));
}
JobTimeToTimeString(szTimeBuffer,
_countof(szTimeBuffer),
(WORD)(pBuffer[i].JobTime / 3600000),
(WORD)((pBuffer[i].JobTime % 3600000) / 60000));
ConPrintf(StdOut,
L" %6lu %-21s %-11s %s\n",
pBuffer[i].JobId,
szScheduleBuffer,
szTimeBuffer,
pBuffer[i].Command);
}
NetApiBufferFree(pBuffer);
return 0;
}
static
INT
AddJob(
PWSTR pszComputerName,
ULONG ulJobHour,
ULONG ulJobMinute,
ULONG ulDaysOfMonth,
UCHAR ucDaysOfWeek,
BOOL bInteractiveJob,
BOOL bPeriodicJob,
PWSTR pszCommand)
{
AT_INFO InfoBuffer;
ULONG ulJobId = 0;
NET_API_STATUS Status;
InfoBuffer.JobTime = (DWORD_PTR)ulJobHour * 3600000 +
(DWORD_PTR)ulJobMinute * 60000;
InfoBuffer.DaysOfMonth = ulDaysOfMonth;
InfoBuffer.DaysOfWeek = ucDaysOfWeek;
InfoBuffer.Flags = (bInteractiveJob ? 0 : JOB_NONINTERACTIVE) |
(bPeriodicJob ? JOB_RUN_PERIODICALLY : 0);
InfoBuffer.Command = pszCommand;
Status = NetScheduleJobAdd(pszComputerName,
(PBYTE)&InfoBuffer,
&ulJobId);
if (Status != NERR_Success)
{
PrintErrorMessage(Status);
return 1;
}
ConResPrintf(StdOut, IDS_NEW_JOB, ulJobId);
return 0;
}
static
INT
DeleteJob(
PWSTR pszComputerName,
ULONG ulJobId,
BOOL bForceDelete)
{
NET_API_STATUS Status;
if (ulJobId == (ULONG)-1 && bForceDelete == FALSE)
{
ConResPrintf(StdOut, IDS_DELETE_ALL);
if (!Confirm())
return 0;
}
Status = NetScheduleJobDel(pszComputerName,
(ulJobId == (ULONG)-1) ? 0 : ulJobId,
(ulJobId == (ULONG)-1) ? -1 : ulJobId);
if (Status != NERR_Success)
{
PrintErrorMessage(Status);
return 1;
}
return 0;
}
int wmain(int argc, WCHAR **argv)
{
PWSTR pszComputerName = NULL;
PWSTR pszCommand = NULL;
ULONG ulJobId = (ULONG)-1;
ULONG ulJobHour = (ULONG)-1;
ULONG ulJobMinute = (ULONG)-1;
BOOL bDeleteJob = FALSE, bForceDelete = FALSE;
BOOL bInteractiveJob = FALSE, bPeriodicJob = FALSE;
BOOL bPrintUsage = FALSE;
ULONG ulDaysOfMonth = 0;
UCHAR ucDaysOfWeek = 0;
INT nResult = 0;
INT i, minIdx;
/* Initialize the Console Standard Streams */
ConInitStdStreams();
if (!InitDaysOfWeekArray())
return 1;
/* Parse the computer name */
i = 1;
minIdx = 1;
if (i < argc &&
argv[i][0] == L'\\' &&
argv[i][1] == L'\\')
{
pszComputerName = argv[i];
i++;
minIdx++;
}
/* Parse the time or job id */
if (i < argc && argv[i][0] != L'/')
{
if (ParseTime(argv[i], &ulJobHour, &ulJobMinute))
{
i++;
minIdx++;
}
else if (ParseId(argv[i], &ulJobId))
{
i++;
minIdx++;
}
}
/* Parse the options */
for (; i < argc; i++)
{
if (argv[i][0] == L'/')
{
if (_wcsicmp(argv[i], L"/?") == 0)
{
bPrintUsage = TRUE;
goto done;
}
else if (_wcsicmp(argv[i], L"/delete") == 0)
{
bDeleteJob = TRUE;
}
else if (_wcsicmp(argv[i], L"/yes") == 0)
{
bForceDelete = TRUE;
}
else if (_wcsicmp(argv[i], L"/interactive") == 0)
{
bInteractiveJob = TRUE;
}
else if (_wcsnicmp(argv[i], L"/every:", 7) == 0)
{
bPeriodicJob = TRUE;
if (ParseDaysOfMonth(&(argv[i][7]), &ulDaysOfMonth) == FALSE)
{
if (ParseDaysOfWeek(&(argv[i][7]), &ucDaysOfWeek) == FALSE)
{
ulDaysOfMonth = GetCurrentDayOfMonth();
}
}
}
else if (_wcsnicmp(argv[i], L"/next:", 6) == 0)
{
bPeriodicJob = FALSE;
if (ParseDaysOfMonth(&(argv[i][6]), &ulDaysOfMonth) == FALSE)
{
if (ParseDaysOfWeek(&(argv[i][6]), &ucDaysOfWeek) == FALSE)
{
ulDaysOfMonth = GetCurrentDayOfMonth();
}
}
}
else
{
bPrintUsage = TRUE;
nResult = 1;
goto done;
}
}
}
/* Parse the command */
if (argc > minIdx && argv[argc - 1][0] != L'/')
{
pszCommand = argv[argc - 1];
}
if (bDeleteJob == TRUE)
{
/* Check for invalid options or arguments */
if (bInteractiveJob == TRUE ||
ulJobHour != (ULONG)-1 ||
ulJobMinute != (ULONG)-1 ||
ulDaysOfMonth != 0 ||
ucDaysOfWeek != 0 ||
pszCommand != NULL)
{
bPrintUsage = TRUE;
nResult = 1;
goto done;
}
nResult = DeleteJob(pszComputerName,
ulJobId,
bForceDelete);
}
else
{
if (ulJobHour != (ULONG)-1 && ulJobMinute != (ULONG)-1)
{
/* Check for invalid options or arguments */
if (bForceDelete == TRUE ||
pszCommand == NULL)
{
bPrintUsage = TRUE;
nResult = 1;
goto done;
}
nResult = AddJob(pszComputerName,
ulJobHour,
ulJobMinute,
ulDaysOfMonth,
ucDaysOfWeek,
bInteractiveJob,
bPeriodicJob,
pszCommand);
}
else
{
/* Check for invalid options or arguments */
if (bForceDelete == TRUE ||
bInteractiveJob == TRUE ||
ulDaysOfMonth != 0 ||
ucDaysOfWeek != 0 ||
pszCommand != NULL)
{
bPrintUsage = TRUE;
nResult = 1;
goto done;
}
if (ulJobId == (ULONG)-1)
{
nResult = PrintAllJobs(pszComputerName);
}
else
{
nResult = PrintJobDetails(pszComputerName,
ulJobId);
}
}
}
done:
FreeDaysOfWeekArray();
if (bPrintUsage == TRUE)
ConResPuts(StdOut, IDS_USAGE);
return nResult;
}
/* EOF */

View File

@@ -1,26 +0,0 @@
#include <windef.h>
#include "resource.h"
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS AT Command"
#define REACTOS_STR_INTERNAL_NAME "at"
#define REACTOS_STR_ORIGINAL_FILENAME "at.exe"
#include <reactos/version.rc>
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_DE_DE
#include "lang/de-DE.rc"
#endif
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif
#ifdef LANGUAGE_RO_RO
#include "lang/ro-RO.rc"
#endif
#ifdef LANGUAGE_RU_RU
#include "lang/ru-RU.rc"
#endif
#ifdef LANGUAGE_TR_TR
#include "lang/tr-TR.rc"
#endif

View File

@@ -1,57 +0,0 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "Mit dem AT Befehl können Befehle und Programme zu einem vorbestimmten\n\
Termin gestartet werden. Der Zeitplandienst muss gestartet sein, um den\n\
Befehl AT zu verwenden.\n\n\
AT [\\\\Computername] [ [Kennung] [/DELETE] | /DELETE [/YES]]\n\
AT [\\\\Computername] Zeit [/INTERACTIVE]\n\
[ /EVERY:Datum[,...] | /NEXT:Datum[,...]] ""Befehl""\n\n\
\\\\Computername Gibt einen Remotecomputer an. Ohne diesen Parameter werden\n\
die Befehle auf dem lokalen Computer ausgeführt.\n\
Kennung Eine Identifikationsnummer, die dem geplanten Befehl\n\
zugeteilt wird.\n\
/DELETE Löscht geplante Befehle. Ohne Kennung werden alle geplanten\n\
Befehle auf dem Computer gelöscht.\n\
/YES In Verbindung mit /DELETE werden die geplanten Befehle ohne\n\
weitere Bestätiging gelöscht.\n\
Zeit Gibt die Zeit an, zu der ein Befehl ausgeführt werden soll.\n\
/INTERACTIVE Ermöglicht dem Aufrag, Eingaben von dem Benutzer\n\
anzunehmen, der angemeldet ist, wenn der Auftrag ausgeführt\n\
wird.\n\
/EVERY:Datum[,...] Führt den Befehl zu jedem der angegebenen Tage der Woche\n\
oder des Monats aus. Ohne Angabe eines Datums wird der\n\
aktuelle Tag des Monats angenommen.\n\
/NEXT:Datum[,...] Führt den Befehl am nächsten angegebenen Tage der Woche\n\
oder des Monats (z.B. nächsten Montag) aus. Ohne Angabe\n\
eines Datums wird der aktuelle Tag des Monats angenommen.\n\
""Befehl"" Ist der auszuführende Befehl oder das Stapelprogramm.\n"
IDS_DELETE_ALL "Dieser Vorgang wird alle geplanten Aufträge löschen.\n"
IDS_NEW_JOB "Neuer Auftrag hinzugefügt. Kennung = %lu\n"
IDS_JOBS_LIST "Statuskenn. Tag Zeit Befehlszeile\n"
IDS_NO_ENTRIES "Es sind keine Einträge in der Liste.\n"
IDS_CONFIRM_QUESTION "Möchten Sie diesen Vorgang fortsetzen? (J/N) [N]: "
IDS_CONFIRM_INVALID "\nDies ist eine ungültige Antwort.\n"
IDS_CONFIRM_YES "J"
IDS_CONFIRM_NO "N"
IDS_TODAY "Heute"
IDS_TOMORROW "Morgen"
IDS_EVERY "Jeden"
IDS_NEXT "Kommenden"
IDS_YES "Ja"
IDS_NO "Nein"
IDS_ERROR "ERROR"
IDS_OK "OK"
IDS_TASKID "Taskkennung: %lu\n"
IDS_STATUS "Status: %s\n"
IDS_SCHEDULE "Zeitplan: %s\n"
IDS_TIME "Zeit: %s\n"
IDS_INTERACTIVE "Interaktiv: %s\n"
IDS_COMMAND "Befehl: %s\n"
END

View File

@@ -1,56 +0,0 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
BEGIN
IDS_USAGE "The AT command schedules commands and programs to run on a computer at\n\
a specified time and date. The Schedule service must be running to use\n\
the AT command.\n\n\
AT [\\\\computername] [ [id] [/DELETE] | /DELETE [/YES]]\n\
AT [\\\\computername] time [/INTERACTIVE]\n\
[ /EVERY:date[,...] | /NEXT:date[,...]] ""command""\n\n\
\\\\computername Specifies a remote computer. Commands are scheduled on the \n\
local computer if this parameter is omitted.\n\
id Is an identification number assigned to a scheduled\n\
command.\n\
/DELETE Cancels a scheduled command. If id is omitted, all the\n\
scheduled commands on the computer are canceled.\n\
/YES Used with cancel all jobs command when no further\n\
confirmation is desired.\n\
time Specifies the time when command is to run.\n\
/INTERACTIVE Allows the job to interact with the desktop of the user\n\
who is logged on at the time the job runs.\n\
/EVERY:date[,...] Runs the command on each specified day(s) of the week or\n\
month. If date is omitted, the current day of the month\n\
is assumed.\n\
/NEXT:date[,...] Runs the specified command on the next occurrence of the\n\
day (for example, next Thursday). If date is omitted, the \n\
current day of the month is assumed.\n\
""command"" Is the command or batch program to be run.\n"
IDS_DELETE_ALL "This operation will delete all scheduled jobs.\n"
IDS_NEW_JOB "Added a new job with job ID = %lu\n"
IDS_JOBS_LIST "Status ID Day Time Command Line\n"
IDS_NO_ENTRIES "There are no entries in the list.\n"
IDS_CONFIRM_QUESTION "Do you want to continue this operation? (Y/N) [N]: "
IDS_CONFIRM_INVALID "\nThis is an invalid response.\n"
IDS_CONFIRM_YES "Y"
IDS_CONFIRM_NO "N"
IDS_TODAY "Today"
IDS_TOMORROW "Tomorrow"
IDS_EVERY "Every"
IDS_NEXT "Next"
IDS_YES "Yes"
IDS_NO "No"
IDS_ERROR "ERROR"
IDS_OK "OK"
IDS_TASKID "Task ID: %lu\n"
IDS_STATUS "Status: %s\n"
IDS_SCHEDULE "Schedule: %s\n"
IDS_TIME "Time of day: %s\n"
IDS_INTERACTIVE "Interactive: %s\n"
IDS_COMMAND "Command: %s\n"
END

View File

@@ -1,56 +0,0 @@
/* Ștefan Fulea (stefan dot fulea at mail dot md) */
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "Comanda AT planifică comenzi și programe pentru fi executate într-un\n\
calculator la o anumită dată și oră. Serviciul «Schedule» trebuie să fie\n\
pornit pentru a utiliza această comandă.\n\n\
AT [\\\\numecalculator] [ [id] [/DELETE] | /DELETE [/YES]]\n\
AT [\\\\numecalculator] timp [/INTERACTIVE]\n\
[ /EVERY:dată[,...] | /NEXT:dată[,...]] ""comandă""\n\n\
\\\\numecalculator Specifică un calculator la distanță. Fără acest\n\
parametru, planificarea va fi pentru calculatorul local.\n\
id Un număr de identificare atribuit comenzii planificate.\n\
/DELETE Anulează o comandă planificată. Fără acest parametru,\n\
vor fi anulate toate comenzile planificate.\n\
/YES Utilizat cu opțiunea «DELETE», pentru suprimarea cerințelor\n\
de confirmare a eliminărilor de comenzi planificate.\n\
timp Specifică timpul de lansare a comenzii.\n\
/INTERACTIVE Permite programelor să interacționeze cu utilizatorul\n\
autentificat la momentul execuției planificate.\n\
/EVERY:dată[,...] Execută comanda la ziua sau zilele specificate din fiecare\n\
săptămână sau lună. Dacă data este omisă, este considerată\n\
ziua curentă a lunii.\n\
/NEXT:dată[,...] Execută comanda în următoarea zi (spre exemplu marțea\n\
viitoare). Dacă data este omisă, e considerată ziua\n\
curentă a lunii.\n\
""comandă"" Numele comenzii sau programului pentru execuție.\n"
IDS_DELETE_ALL "Această operație va elimina planificarea pentru toate comenzile.\n"
IDS_NEW_JOB "A fost planificată o nouă activitate cu ID = %lu\n"
IDS_JOBS_LIST "ID stare Zi Oră Comanda\n"
IDS_NO_ENTRIES "Nu există comenzi planificate.\n"
IDS_CONFIRM_QUESTION "Sigur doriți continuarea acestei operații? (D|N) [N]: "
IDS_CONFIRM_INVALID "\nAcesta nu este un răspuns valid.\n"
IDS_CONFIRM_YES "D"
IDS_CONFIRM_NO "N"
IDS_TODAY "Astăzi"
IDS_TOMORROW "Mâine"
IDS_EVERY "În fiecare"
IDS_NEXT "În următoarea"
IDS_YES "Da"
IDS_NO "Nu"
IDS_ERROR "EROARE"
IDS_OK "OK"
IDS_TASKID "ID sarcină: %lu\n"
IDS_STATUS "Stare: %s\n"
IDS_SCHEDULE "Pentru: %s\n"
IDS_TIME "La ora: %s\n"
IDS_INTERACTIVE "Interactiv: %s\n"
IDS_COMMAND "Comandă: %s\n"
END

View File

@@ -1,54 +0,0 @@
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "Команда AT предназначена для запуска команд и программ\n\
в указанное время по определенным дням. Для работы команды необходимо, чтобы\n\
была запущена служба планировщика (Schedule service).\n\n\
AT [\\\\имя_компьютера] [ [id] [/DELETE] | /DELETE [/YES]]\n\
AT [\\\\имя_компьютера] время [/INTERACTIVE]\n\
[ /EVERY:день[,...] | /NEXT:день[,...]] ""команда""\n\n\
\\\\имя_компьютера Имя удаленного компьютера. Если этот параметр не указан, \n\
используется локальный компьютер.\n\
id Порядковый номер запланированной задачи.\n\
/DELETE Отменяет запланированную команду. Если параметр id не указан, то\n\
все команды, запланированные на данном компьютере, будут отменены.\n\
/YES Отмена запроса на подтверждение при отмене всех\n\
запланированных задач.\n\
время Время запуска команды.\n\
/INTERACTIVE Разрешает взаимодействие задачи с пользователем,\n\
работающим на компьютере во время запуска задачи.\n\
/EVERY:день[,...] Задача будет выполняться каждый указанный день (дни) или\n\
месяц. Если дата не указана, используется текущий день \n\
месяца.\n\
/NEXT:день[,...] Задача будет запущена в следующий указанный день недели\n\
(например, в следующий четверг). Если дата не указана, то \n\
используется текущий день месяца.\n\
""команда"" Команда или имя пакетного файла для запуска.\n"
IDS_CONFIRM_QUESTION "Продолжить выполнение операции? (Y-да/N-нет) [N] "
IDS_CONFIRM_INVALID "\nНедопустимый ответ.\n"
IDS_CONFIRM_YES "Y"
IDS_CONFIRM_NO "N"
IDS_NEW_JOB "Добавлено новое задание с ID = %lu\n"
IDS_JOBS_LIST "Статус ID День Время Команда\n"
IDS_NO_ENTRIES "В списке нет запланированных задач.\n"
IDS_TODAY "Сегодня"
IDS_TOMORROW "Завтра"
IDS_EVERY "Каждый"
IDS_NEXT "Следующий"
IDS_YES "Да"
IDS_NO "Нет"
IDS_ERROR "ОШИБКА"
IDS_OK "ОК"
IDS_TASKID "ID задачи: %lu\n"
IDS_STATUS "Состояние: %s\n"
IDS_SCHEDULE "Расписание: %s\n"
IDS_TIME "Время суток: %s\n"
IDS_INTERACTIVE "Интерактивный: %s\n"
IDS_COMMAND "Команда: %s\n"
END

View File

@@ -1,56 +0,0 @@
/* TRANSLATOR: 2017 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "AT komutu, belirlenen bir zamanda bilgisayarda çalıştırmak için komutları\n\
ve izlenceleri zamanlar. AT komutunu çalıştırmak için Zamanlayıcı hizmeti \n\
çalıştırılmalıdır.\n\n\
AT [\\\\bilgisayar adı] [ [kimlik] [/DELETE] | /DELETE [/YES]]\n\
AT [\\\\bilgisayar adı] saat [/INTERACTIVE]\n\
[ /EVERY:târih[,...] | /NEXT:târih[,...]] ""komut""\n\n\
\\\\bilgisayar adı Bir uzak bilgisayarı belirtir. Bu değişken yazılmazsa\n\
komutlar yerli bilgisayarda zamanlanır.\n\
kimlik Zamanlanan bir komuta atanan bir kimlik numarasıdır.\n\
/DELETE Zamanlanan bir komutu iptâl eder. Kimlik yazılmadığında\n\
bilgisayardaki tüm zamanlanan komutlar iptâl edilir.\n\
/YES Sonraki onaylamalar istenilmediğinde tüm işleri iptâl etme\n\
komutuyla birlikte kullanılır.\n\
saat Komutun çalıştırılma saatini belirtir.\n\
/INTERACTIVE İşe, çalıştırılacağı saatte oturum açmış kullanıcının\n\
masaüstüyle etkileşmesine izin verir.\n\
/EVERY:târih[,...] Haftanın ya da ayın belirtilen tüm günlerinde komutu çalıştırır.\n\
month. Târih yazılmadığında ayın şimdiki gününü varsayar.\n\
/NEXT:târih[,...] Günün bir sonraki oluşunda (örneğin bir sonraki perşembede)\n\
belirtilen komutu çalıştırır. Târih yazılmadığında ayın\n\
şimdiki gününü varsayar.\n\
""komut"" Çalıştırılacak komut ya da toplu iş kütüğü.\n"
IDS_DELETE_ALL "Bu işlem tüm zamanlanan işleri silecek.\n"
IDS_NEW_JOB "%lu iş kimliğiyle yeni bir iş eklendi.\n"
IDS_JOBS_LIST "Durum Km. Gün Saat Komut Yatacı\n"
IDS_NO_ENTRIES "Dizelgede bir giriş yok.\n"
IDS_CONFIRM_QUESTION "Bu işlemi sürdürmek ister misiniz? (E/H) [H]: "
IDS_CONFIRM_INVALID "\nBu geçersiz bir yanıttır.\n"
IDS_CONFIRM_YES "E"
IDS_CONFIRM_NO "H"
IDS_TODAY "Bugün"
IDS_TOMORROW "Yarın"
IDS_EVERY "Her"
IDS_NEXT "Bir sonraki"
IDS_YES "Evet"
IDS_NO "Hayır"
IDS_ERROR "YANLIŞLIK"
IDS_OK "Tamam"
IDS_TASKID "Görev kimliği: %lu\n"
IDS_STATUS "Durum: %s\n"
IDS_SCHEDULE "Zamanlama: %s\n"
IDS_TIME "Günün saati: %s\n"
IDS_INTERACTIVE "Etkileşme: %s\n"
IDS_COMMAND "Komut: %s\n"
END

View File

@@ -1,31 +0,0 @@
#pragma once
#define IDS_USAGE 100
#define IDS_DELETE_ALL 105
#define IDS_NEW_JOB 106
#define IDS_JOBS_LIST 107
#define IDS_NO_ENTRIES 108
#define IDS_TODAY 109
#define IDS_TOMORROW 110
#define IDS_EVERY 111
#define IDS_NEXT 112
#define IDS_YES 101
#define IDS_NO 102
#define IDS_ERROR 103
#define IDS_OK 104
#define IDS_TASKID 122
#define IDS_STATUS 123
#define IDS_SCHEDULE 124
#define IDS_TIME 125
#define IDS_INTERACTIVE 126
#define IDS_COMMAND 127
#define IDS_CONFIRM_QUESTION 130
#define IDS_CONFIRM_INVALID 131
#define IDS_CONFIRM_YES 132
#define IDS_CONFIRM_NO 133

View File

@@ -1,70 +0,0 @@
/* TRANSLATOR: 2016 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "Dizge aygıtlarını yapılandırır.\n\n\
Aygıt durumu: MODE [aygıt] [/STATUS]\n\
Dizilik giriş: MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]\n\
[to=on|off] [xon=on|off] [odsr=on|off]\n\
[octs=on|off] [dtr=on|off|hs]\n\
[rts=on|off|hs|tg] [idsr=on|off]\n\
Yazdırma yönlendirme: MODE LPTn[:]=COMm[:]\n\
Kod sayfası seçme: MODE CON[:] CP SELECT=yyy\n\
Kod sayfası durumu: MODE CON[:] CP [/STATUS]\n\
Görüntü kipi: MODE CON[:] [COLS=c] [LINES=n]\n\
Yineleme hızı: MODE CON[:] [RATE=r DELAY=d]\n"
IDS_QUERY_SERIAL_FOUND " Dizilik aygıt bulundu - %s\n"
IDS_QUERY_PRINTER_FOUND " Yazıcı aygıtı bulundu - %s\n"
IDS_QUERY_PARALLEL_FOUND " Koşut aygıt bulundu - %s\n"
IDS_QUERY_DOSDEV_FOUND " DOS aygıtı bulundu - %s\n"
// IDS_QUERY_MISC_FOUND " Başka aygıt bulundu - %s\n"
// IDS_QUERY_DEVICE_FOUND " %s aygıtı bulundu - %s\n"
// IDS_SERIAL "dizilik"
// IDS_PRINTER "koşut"
// IDS_OTHER "başka"
END
STRINGTABLE
BEGIN
IDS_DEVICE_STATUS_HEADER "%s aygıtı durumu:"
IDS_COM_STATUS_BAUD " Baud: %ld\n"
IDS_COM_STATUS_PARITY " Eşlik: %s\n"
IDS_COM_STATUS_DATA_BITS " Veri İkilleri: %d\n"
IDS_COM_STATUS_STOP_BITS " Durma İkilleri: %s\n"
IDS_COM_STATUS_TIMEOUT " Süre aşımı: %s\n"
IDS_COM_STATUS_XON_XOFF " XON/XOFF: %s\n"
IDS_COM_STATUS_CTS_HANDSHAKING " CTS uyuşması: %s\n"
IDS_COM_STATUS_DSR_HANDSHAKING " DSR uyuşması: %s\n"
IDS_COM_STATUS_DSR_SENSITIVITY " DSR duyarlılığı: %s\n"
IDS_COM_STATUS_DTR_CIRCUIT " DTR çevrimi: %s\n"
IDS_COM_STATUS_RTS_CIRCUIT " RTS çevrimi: %s\n"
IDS_CONSOLE_STATUS_LINES " Yataç: %d\n"
IDS_CONSOLE_STATUS_COLS " Dikeç: %d\n"
IDS_CONSOLE_KBD_RATE " Düğme takımı hızı: %ld\n"
IDS_CONSOLE_KBD_DELAY " Düğme takımı gecikmesi: %ld\n"
IDS_CONSOLE_CODEPAGE " Kod sayfası: %d\n"
IDS_PRINTER_OUTPUT_NOT_REROUTED " Yazıcı çıktısı yeniden yönlendirilmiyor.\n"
IDS_PRINTER_OUTPUT_REROUTED_SERIAL " Yazıcı çıktısı %s dizilik girişine yönlendiriliyor.\n"
END
STRINGTABLE
BEGIN
IDS_ERROR_QUERY_DEVICES "YANLIŞLIK: (0x%lx) DOS aygıtı sorgulanamaz.\n"
IDS_ERROR_QUERY_DEVICES_FORM " QueryDosDeviceW(%s), %s tanınmamış biçim döndürdü.\n"
IDS_ERROR_SET_PARALLEL_STATE "SetParallelState(%d) - DefineDosDevice(%s) (0x%lx)\n"
IDS_ERROR_INVALID_PARAMETER "YANLIŞLIK: Geçersiz değişken - %s\n"
IDS_ERROR_ILLEGAL_DEVICE_NAME "YANLIŞLIK: Geçersiz aygıt adı - %s (0x%lx)\n"
IDS_ERROR_STATUS_GET_DEVICE "YANLIŞLIK: COM%d aygıtının durumu alınamıyor:\n"
IDS_ERROR_STATUS_SET_DEVICE "YANLIŞLIK: COM%d aygıtının durumu ayarlanamıyor:\n"
IDS_ERROR_INVALID_PARITY_BITS "YANLIŞLIK: %d Eşlik İkilleri için geçersiz değer:\n"
IDS_ERROR_INVALID_STOP_BITS "YANLIŞLIK: %d Durma İkilleri için geçersiz değer:\n"
IDS_ERROR_NO_MEMORY "YANLIŞLIK: Yeterli bellek yok.\n"
IDS_ERROR_SCREEN_LINES_COL "YANLIŞLIK: Görüntülük, belirtilen yataç ve dikeç sayısına ayarlanamıyor.\n"
END

View File

@@ -23,8 +23,4 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#endif
#ifdef LANGUAGE_RU_RU
#include "lang/ru-RU.rc"
#endif
#ifdef LANGUAGE_TR_TR
#include "lang/tr-TR.rc"
#endif
#endif

View File

@@ -1,6 +0,0 @@
add_executable(mofcomp mofcomp.c)
target_link_libraries(mofcomp wine)
set_module_type(mofcomp win32cui UNICODE)
add_importlibs(mofcomp msvcrt kernel32 ntdll)
add_cd_file(TARGET mofcomp DESTINATION reactos/system32/wbem FOR all)

View File

@@ -1,29 +0,0 @@
/*
* Copyright 2010 Hans Leidekker for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <wine/debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(mofcomp);
int wmain( int argc, const WCHAR *argv[] )
{
WINE_FIXME("stub\n");
return 0;
}

View File

@@ -255,9 +255,9 @@ static LPBYTE get_regdata(const WCHAR *data, DWORD reg_type, WCHAR separator, DW
case REG_DWORD_BIG_ENDIAN: /* Yes, this is correct! */
{
LPWSTR rest;
unsigned long val;
DWORD val;
val = strtoulW(data, &rest, (tolowerW(data[1]) == 'x') ? 16 : 10);
if (*rest || data[0] == '-' || (val == ~0u && errno == ERANGE) || val > ~0u) {
if (*rest || data[0] == '-' || (val == ~0u && errno == ERANGE)) {
output_message(STRING_MISSING_INTEGER);
break;
}
@@ -908,32 +908,23 @@ static const WCHAR addW[] = {'a','d','d',0};
static const WCHAR deleteW[] = {'d','e','l','e','t','e',0};
static const WCHAR queryW[] = {'q','u','e','r','y',0};
static enum operations get_operation(const WCHAR *str, int *op_help)
static enum operations get_operation(const WCHAR *str)
{
if (!lstrcmpiW(str, addW))
{
*op_help = STRING_ADD_USAGE;
return REG_ADD;
}
if (!lstrcmpiW(str, deleteW))
{
*op_help = STRING_DELETE_USAGE;
return REG_DELETE;
}
if (!lstrcmpiW(str, queryW))
{
*op_help = STRING_QUERY_USAGE;
return REG_QUERY;
}
return REG_INVALID;
}
int wmain(int argc, WCHAR *argvW[])
{
int i, op, op_help, ret;
int i, op, ret;
BOOL show_op_help = FALSE;
static const WCHAR switchVAW[] = {'v','a',0};
static const WCHAR switchVEW[] = {'v','e',0};
@@ -954,7 +945,7 @@ int wmain(int argc, WCHAR *argvW[])
return 0;
}
op = get_operation(argvW[1], &op_help);
op = get_operation(argvW[1]);
if (op == REG_INVALID)
{
@@ -974,7 +965,12 @@ int wmain(int argc, WCHAR *argvW[])
}
else if (show_op_help)
{
output_message(op_help);
if (op == REG_ADD)
output_message(STRING_ADD_USAGE);
else if (op == REG_DELETE)
output_message(STRING_DELETE_USAGE);
else
output_message(STRING_QUERY_USAGE);
return 0;
}

View File

@@ -5,5 +5,5 @@ STRINGTABLE
STRING_CMDLINE_NOT_SUPPORTED, "Fehler: Befehlszeile nicht unterstützt\n"
STRING_ALIAS_NOT_FOUND, "Fehler: Alias nicht gefunden\n"
STRING_INVALID_QUERY, "Fehler: Ungültige Abfrage\n"
STRING_INVALID_PATH, "Error: Invalid syntax for PATH\n"
STRING_INVALID_PATH, "Invalid syntax for PATH\n"
}

View File

@@ -5,5 +5,5 @@ STRINGTABLE
STRING_CMDLINE_NOT_SUPPORTED, "Error: Command line not supported\n"
STRING_ALIAS_NOT_FOUND, "Error: Alias not found\n"
STRING_INVALID_QUERY, "Error: Invalid query\n"
STRING_INVALID_PATH, "Error: Invalid syntax for PATH\n"
STRING_INVALID_PATH, "Invalid syntax for PATH\n"
}

View File

@@ -7,5 +7,5 @@ STRINGTABLE
STRING_CMDLINE_NOT_SUPPORTED, "Eroare: Comandă nerecunoscută.\n"
STRING_ALIAS_NOT_FOUND, "Eroare: Alias necunoscut.\n"
STRING_INVALID_QUERY, "Eroare: Cerere nevalidă.\n"
STRING_INVALID_PATH, "Eroare: Conținutul din «PATH» este sintactic nevalid.\n"
STRING_INVALID_PATH, "Conținutul din «PATH» este sintactic nevalid.\n"
}

View File

@@ -5,5 +5,5 @@ STRINGTABLE
STRING_CMDLINE_NOT_SUPPORTED, "Ошибка: Командная строка не поддерживается\n"
STRING_ALIAS_NOT_FOUND, "Ошибка: Псевдоним не найден\n"
STRING_INVALID_QUERY, "Ошибка: Неверный запрос\n"
STRING_INVALID_PATH, "Ошибка: Неверный синтаксис PATH\n"
STRING_INVALID_PATH, "Неверный синтаксис PATH\n"
}

View File

@@ -9,5 +9,5 @@ STRINGTABLE
STRING_CMDLINE_NOT_SUPPORTED, "Gabim: Linja e komandave jo e mbështetur\n"
STRING_ALIAS_NOT_FOUND, "Gabim: Pseudonimi nuk u gjend\n"
STRING_INVALID_QUERY, "Gabim: Kërkim pa vlere\n"
STRING_INVALID_PATH, "Error: Invalid syntax for PATH\n"
STRING_INVALID_PATH, "Invalid syntax for PATH\n"
}

View File

@@ -7,5 +7,5 @@ STRINGTABLE
STRING_CMDLINE_NOT_SUPPORTED, "错误: 不支持的命令行\n"
STRING_ALIAS_NOT_FOUND, "错误: 别名未找到\n"
STRING_INVALID_QUERY, "错误: 无效的查询\n"
STRING_INVALID_PATH, "Error: Invalid syntax for PATH\n"
STRING_INVALID_PATH, "Invalid syntax for PATH\n"
}

View File

@@ -7,5 +7,5 @@ STRINGTABLE
STRING_CMDLINE_NOT_SUPPORTED, "錯誤: 不支援的命令列\n"
STRING_ALIAS_NOT_FOUND, "錯誤: 別名未找到\n"
STRING_INVALID_QUERY, "錯誤: 無效的查詢\n"
STRING_INVALID_PATH, "Error: Invalid syntax for PATH\n"
STRING_INVALID_PATH, "Invalid syntax for PATH\n"
}

View File

@@ -252,11 +252,16 @@ int wmain(int argc, WCHAR *argv[])
static const WCHAR pathW[] = {'p','a','t','h',0};
static const WCHAR classW[] = {'c','l','a','s','s',0};
static const WCHAR contextW[] = {'c','o','n','t','e','x','t',0};
const WCHAR *class, *value;
const WCHAR *class;
const WCHAR *value;
int i;
if (argc == 1)
goto not_supported;
for (i = 1; i < argc && argv[i][0] == '/'; i++)
WINE_FIXME( "command line switch %s not supported\n", debugstr_w(argv[i]) );
WINE_FIXME("command line switch %s not supported\n", debugstr_w(argv[i]));
if (i >= argc)
goto not_supported;
@@ -266,15 +271,13 @@ int wmain(int argc, WCHAR *argv[])
{
return 0;
}
if (!strcmpiW( argv[i], classW) ||
!strcmpiW( argv[i], contextW ))
else if (!strcmpiW( argv[i], classW) ||
!strcmpiW( argv[i], contextW))
{
WINE_FIXME( "command %s not supported\n", debugstr_w(argv[i]) );
WINE_FIXME("command %s not supported\n", debugstr_w(argv[i]));
goto not_supported;
}
if (!strcmpiW( argv[i], pathW ))
else if (!strcmpiW( argv[i], pathW))
{
if (++i >= argc)
{
@@ -296,7 +299,7 @@ int wmain(int argc, WCHAR *argv[])
if (++i >= argc)
goto not_supported;
if (!strcmpiW( argv[i], getW ))
if (!strcmpiW( argv[i], getW))
{
if (++i >= argc)
goto not_supported;

View File

@@ -15,7 +15,6 @@
#include <winuser.h>
#include <winreg.h>
#include <shellapi.h>
#include <strsafe.h>
#include "resource.h"
@@ -42,8 +41,8 @@ OpenShellFolder(LPWSTR lpFolderCLSID)
* Open a shell folder using "explorer.exe". The passed CLSIDs
* are all subfolders of the "Control Panel" shell folder.
*/
StringCbCopy(szParameters, sizeof(szParameters), L"/n,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}");
StringCbCat(szParameters,sizeof(szParameters), lpFolderCLSID);
wcscpy(szParameters, L"/n,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}");
wcscat(szParameters, lpFolderCLSID);
return (INT_PTR)ShellExecuteW(NULL,
L"open",

View File

@@ -47,7 +47,7 @@ BEGIN
EDITTEXT IDC_STATIC_MEM, 155, 130, 210, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
EDITTEXT IDC_STATIC_SWAP, 155, 140, 210, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
EDITTEXT IDC_STATIC_VERSION, 155, 150, 210, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
CHECKBOX "Zkontrolovat digitální podpisy WHQL", IDC_WHQL_SIGN_CHECK, 15, 170, 135, 10, WS_DISABLED
CHECKBOX "Check for WHQL digital signatures", IDC_WHQL_SIGN_CHECK, 15, 170, 135, 10, WS_DISABLED
END
IDD_DISPLAY_DIALOG DIALOGEX 0, 0, 462, 220
@@ -75,7 +75,7 @@ BEGIN
RTEXT "Datum:", IDC_STATIC, 275, 30, 55, 10
RTEXT "WHQL-Logo:", IDC_STATIC, 275, 40, 55, 10
RTEXT "Mini-VDD:", IDC_STATIC, 275, 50, 55, 10
RTEXT "VDD:", IDC_STATIC, 275, 60, 55, 10
RTEXT " vvdddVDD:", IDC_STATIC, 275, 60, 55, 10
RTEXT "Verze DDI:", IDC_STATIC, 275, 70, 55, 10
EDITTEXT IDC_STATIC_ADAPTER_DRIVER, 335, 10, 100, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
EDITTEXT IDC_STATIC_ADAPTER_VERSION, 335, 20, 100, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
@@ -142,17 +142,17 @@ IDD_MUSIC_DIALOG DIALOGEX 0, 0, 462, 220
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
BEGIN
RTEXT "Obecná MIDI DLS kolekce:", IDC_STATIC, 0, 0, 100, 10
RTEXT "General MIDI DLS Collection:", IDC_STATIC, 0, 0, 100, 10
EDITTEXT IDC_MIDI_DLS_COLLECTION, 105, 0, 250, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
GROUPBOX "Hudební porty", IDC_STATIC, 5, 10, 452, 85
GROUPBOX "Vlastnosti ReactX", IDC_STATIC, 5, 97, 452, 70
LTEXT "Výchozí akcelerace portu:", IDC_STATIC, 15, 120, 95, 17
GROUPBOX "Music Ports", IDC_STATIC, 5, 10, 452, 85
GROUPBOX "ReactX Features", IDC_STATIC, 5, 97, 452, 70
LTEXT "Default Port Acceleration:", IDC_STATIC, 15, 120, 95, 17
LTEXT "", IDC_STATIC_DEFAULT_PORT_ACCELERATION, 115, 120, 50, 10
PUSHBUTTON "Zakázat", IDC_BUTTON_DISABLEDMUSIC, 75, 135, 80, 14, WS_DISABLED
LTEXT "Otestovat tento port:", IDC_STATIC, 180, 105, 100, 10
PUSHBUTTON "Disable", IDC_BUTTON_DISABLEDMUSIC, 75, 135, 80, 14, WS_DISABLED
LTEXT "Test using this port:", IDC_STATIC, 180, 105, 100, 10
LISTBOX IDC_DMUSIC_TEST_LIST, 180, 115, 180, 45, LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Otestovat DirectMusic", IDC_BUTTON_TESTDMUSIC, 370, 145, 80, 14, WS_DISABLED
GROUPBOX "Poznámky", IDC_STATIC, 5, 170, 452, 50
PUSHBUTTON "Test DirectMusic", IDC_BUTTON_TESTDMUSIC, 370, 145, 80, 14, WS_DISABLED
GROUPBOX "Notes", IDC_STATIC, 5, 170, 452, 50
EDITTEXT IDC_MUSIC_NOTES, 15, 182, 432, 30, ES_LEFT | WS_BORDER | ES_READONLY | WS_TABSTOP
END
@@ -175,11 +175,11 @@ FONT 8, "MS Shell Dlg"
BEGIN
GROUPBOX "Registrovaný poskytovatel služby DirectPlay", IDC_STATIC, 5, 0, 452, 75
CONTROL "", IDC_LIST_PROVIDER, "SysListView32", LVS_REPORT | WS_CHILD | WS_BORDER | WS_TABSTOP, 15, 12, 432, 55
GROUPBOX "Registrováné aplikace s možností Lobby", IDC_STATIC, 5, 77, 452, 55
GROUPBOX "Vlastnosti ReactX", IDC_STATIC, 5, 133, 452, 35
PUSHBUTTON "Možnosti hlasu DirectPlay", IDC_BUTTON_VOICE_OPTIONS, 10, 145, 90, 14, WS_DISABLED
PUSHBUTTON "Otestovat DirectPlay", IDC_BUTTON_TESTDPLAY, 130, 145, 80, 14, WS_DISABLED
GROUPBOX "Poznámky", IDC_STATIC, 5, 170, 452, 50
GROUPBOX "Registered Lobbyable DirectPlay Applications", IDC_STATIC, 5, 77, 452, 55
GROUPBOX "ReactX Features", IDC_STATIC, 5, 133, 452, 35
PUSHBUTTON "DirectPlay Voice Options", IDC_BUTTON_VOICE_OPTIONS, 10, 145, 90, 14, WS_DISABLED
PUSHBUTTON "Test DirectPlay", IDC_BUTTON_TESTDPLAY, 130, 145, 80, 14, WS_DISABLED
GROUPBOX "Notes", IDC_STATIC, 5, 170, 452, 50
EDITTEXT IDC_NETWORK_NOTES, 15, 182, 432, 30, ES_LEFT | WS_BORDER | ES_READONLY | WS_TABSTOP
END
@@ -187,11 +187,11 @@ IDD_HELP_DIALOG DIALOGEX 0, 0, 462, 220
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Stále nemůžete nalézt informace, které hledáte? Můžete vyzkoušet následující:", IDC_STATIC, 5, 0, 300, 10
PUSHBUTTON "Systémové informace", IDC_BUTTON_SYSINFO, 5, 20, 80, 14, WS_DISABLED
LTEXT "Zobrazí další systémové informace", IDC_STATIC, 90, 23, 300, 10
PUSHBUTTON "Vynucení obnovovací frekvence", IDC_BUTTON_DDRAW_REFRESH, 5, 40, 80, 14, WS_DISABLED
LTEXT "Vynutí obnovovací frekvenci pro DirectDraw", IDC_STATIC, 90, 43, 300, 10
LTEXT "Still can't find the information you're looking for? Here are some additional things you can do:", IDC_STATIC, 5, 0, 300, 10
PUSHBUTTON "System Information", IDC_BUTTON_SYSINFO, 5, 20, 80, 14, WS_DISABLED
LTEXT "Displays additional system information", IDC_STATIC, 90, 23, 300, 10
PUSHBUTTON "Refresh Rate Override", IDC_BUTTON_DDRAW_REFRESH, 5, 40, 80, 14, WS_DISABLED
LTEXT "Overrides the Refresh Rate for DirectDraw", IDC_STATIC, 90, 43, 300, 10
END
STRINGTABLE
@@ -248,12 +248,12 @@ BEGIN
IDS_D3DTEST_DESCRIPTION "Spustí se test rozhraní Direct3D. Pokračovat?"
IDS_D3DTEST_D3Dx "Tento test použije hardwarově akcelerované rozhraní Direct3D %u."
IDS_OS_VERSION "%s %s (%d.%d, Build %d)"
IDS_DMUSIC_DESC "Popis"
IDS_DMUSIC_TYPE "Typ"
IDS_DMUSIC_KERNEL "Kernel mód"
IDS_DMUSIC_IO "I/O"
IDS_DMUSIC_DLS "Podporuje DLS"
IDS_DMUSIC_EXT "Externí"
IDS_DMUSIC_PORT "Výchozí port"
IDS_DDDISABLE_MSG "Tímto dojde k zakázání akcelerace DirectDraw na všech zobrazovacích zařízeních\n.Přejete si pokračovat?\n"
IDS_DMUSIC_DESC "Description"
IDS_DMUSIC_TYPE "Type"
IDS_DMUSIC_KERNEL "Kernel Mode"
IDS_DMUSIC_IO "In/Out"
IDS_DMUSIC_DLS "Supports DLS"
IDS_DMUSIC_EXT "External"
IDS_DMUSIC_PORT "Default Port"
IDS_DDDISABLE_MSG "This will disable all hardware acceleration for DirectDraw on all display devices\n.Do you wish to continue?\n"
END

View File

@@ -6,7 +6,7 @@ list(APPEND SOURCE
add_rc_deps(fontview.rc ${CMAKE_CURRENT_SOURCE_DIR}/ttf.ico)
add_executable(fontview ${SOURCE} fontview.rc)
set_module_type(fontview win32gui UNICODE)
add_importlibs(fontview comdlg32 gdi32 shell32 user32 msvcrt kernel32 advapi32)
set_module_type(fontview win32gui)
add_importlibs(fontview comdlg32 gdi32 shell32 user32 msvcrt kernel32)
add_pch(fontview precomp.h SOURCE)
add_cd_file(TARGET fontview DESTINATION reactos/system32 FOR all)

View File

@@ -28,9 +28,6 @@
#define SPACING1 8
#define SPACING2 5
extern INT g_NumFonts;
extern WCHAR g_FontTitle[];
const WCHAR g_szFontDisplayClassName[] = L"FontDisplayClass";
LRESULT CALLBACK DisplayProc(HWND, UINT, WPARAM, LPARAM);
@@ -165,7 +162,7 @@ EnumFontFamProcW(
}
static LRESULT
Display_SetTypeFace(HWND hwnd, PLOGFONTW pLogFont)
Display_SetTypeFace(HWND hwnd, PEXTLOGFONTW pExtLogFont)
{
DISPLAYDATA* pData;
TEXTMETRIC tm;
@@ -174,21 +171,16 @@ Display_SetTypeFace(HWND hwnd, PLOGFONTW pLogFont)
SCROLLINFO si;
int i;
LOGFONTW logfont;
BOOL fOpenType;
BYTE Buffer[512];
LPOUTLINETEXTMETRICW pOTM = (LPOUTLINETEXTMETRICW)Buffer;
LPWSTR pch;
/* Set the new type face name */
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
lstrcpynW(pData->szTypeFaceName, pLogFont->lfFaceName,
ARRAYSIZE(pData->szTypeFaceName));
_snwprintf(pData->szTypeFaceName, LF_FULLFACESIZE, pExtLogFont->elfFullName);
/* Create the new fonts */
hDC = GetDC(hwnd);
DeleteObject(pData->hCharSetFont);
logfont = *pLogFont;
logfont = pExtLogFont->elfLogFont;
logfont.lfHeight = -MulDiv(16, GetDeviceCaps(GetDC(NULL), LOGPIXELSY), 72);
pData->hCharSetFont = CreateFontIndirectW(&logfont);
@@ -197,19 +189,8 @@ Display_SetTypeFace(HWND hwnd, PLOGFONTW pLogFont)
GetTextMetrics(hDC, &tm);
if (tm.tmPitchAndFamily & TMPF_TRUETYPE)
{
if (GetOutlineTextMetricsW(hDC, sizeof(Buffer), pOTM))
{
LPBYTE pb = Buffer;
pb += (WORD)(DWORD_PTR)pOTM->otmpStyleName;
pch = (LPWSTR)pb;
if (*pch)
{
lstrcatW(pData->szTypeFaceName, L" ");
lstrcatW(pData->szTypeFaceName, pch);
}
}
BOOL fOpenType = FALSE;
fOpenType = FALSE;
EnumFontFamiliesExW(hDC, &logfont,
EnumFontFamProcW, (LPARAM)&fOpenType, 0);
@@ -253,12 +234,12 @@ Display_SetTypeFace(HWND hwnd, PLOGFONTW pLogFont)
}
static LRESULT
Display_SetString(HWND hwnd, LPCWSTR pszString)
Display_SetString(HWND hwnd, LPARAM lParam)
{
DISPLAYDATA* pData;
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
lstrcpynW(pData->szString, pszString, ARRAYSIZE(pData->szString));
_snwprintf(pData->szString, MAX_STRING, (WCHAR*)lParam);
InvalidateRect(hwnd, NULL, TRUE);
@@ -271,10 +252,11 @@ Display_OnCreate(HWND hwnd)
DISPLAYDATA* pData;
const int nSizes[MAX_SIZES] = {8, 12, 18, 24, 36, 48, 60, 72};
int i;
LOGFONTW LogFont = {50, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, PROOF_QUALITY,
DEFAULT_PITCH , L"MS Shell Dlg"};
EXTLOGFONTW ExtLogFont = {{50, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, PROOF_QUALITY,
DEFAULT_PITCH , L"Ms Shell Dlg"},
L"Ms Shell Dlg"};
/* Create data structure */
pData = malloc(sizeof(DISPLAYDATA));
@@ -288,14 +270,13 @@ Display_OnCreate(HWND hwnd)
pData->nSizes[i] = nSizes[i];
}
pData->hCaptionFont = CreateFontIndirectW(&LogFont);
LogFont.lfHeight = 12;
pData->hSizeFont = CreateFontIndirectW(&LogFont);
pData->hCaptionFont = CreateFontIndirectW(&ExtLogFont.elfLogFont);
ExtLogFont.elfLogFont.lfHeight = 12;
pData->hSizeFont = CreateFontIndirectW(&ExtLogFont.elfLogFont);
Display_SetString(hwnd,
L"Jackdaws love my big sphinx of quartz. 1234567890");
Display_SetString(hwnd, (LPARAM)L"Jackdaws love my big sphinx of quartz. 1234567890");
Display_SetTypeFace(hwnd, &LogFont);
Display_SetTypeFace(hwnd, &ExtLogFont);
return 0;
}
@@ -468,7 +449,7 @@ Display_OnPrint(HWND hwnd)
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
#endif
docinfo.cbSize = sizeof(DOCINFO);
docinfo.lpszDocName = L"Printing Font";
docinfo.lpszDocName = "Printing Font";
docinfo.lpszOutput = NULL;
docinfo.lpszDatatype = NULL;
docinfo.fwType = 0;
@@ -521,24 +502,6 @@ Display_OnPrint(HWND hwnd)
return 0;
}
LRESULT
Display_GetFullName(HWND hwnd, INT length, PWSTR ptr)
{
DISPLAYDATA *pData;
INT len;
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
len = wcslen(pData->szTypeFaceName) + wcslen(pData->szFormat) + 2;
if (ptr != NULL && length >= len)
{
swprintf(ptr, L"%s%s", pData->szTypeFaceName, pData->szFormat);
}
return (LRESULT)len;
}
LRESULT CALLBACK
DisplayProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
@@ -557,13 +520,10 @@ DisplayProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
return Display_OnVScroll(hwnd, wParam);
case FVM_SETTYPEFACE:
return Display_SetTypeFace(hwnd, (PLOGFONTW)lParam);
return Display_SetTypeFace(hwnd, (PEXTLOGFONTW)lParam);
case FVM_SETSTRING:
return Display_SetString(hwnd, (WCHAR *)lParam);
case FVM_GETFULLNAME:
return Display_GetFullName(hwnd, (INT)wParam, (PWSTR)lParam);
return Display_SetString(hwnd, lParam);
case WM_DESTROY:
return Display_OnDestroy(hwnd);

View File

@@ -3,7 +3,6 @@
/* Messages for the display class */
#define FVM_SETTYPEFACE WM_USER
#define FVM_SETSTRING (WM_USER + 1)
#define FVM_GETFULLNAME (WM_USER + 2)
/* Size restrictions */
#define MAX_STRING 100

View File

@@ -4,7 +4,6 @@
* fontview.c
*
* Copyright (C) 2007 Timo Kreuzer <timo <dot> kreuzer <at> reactos <dot> org>
* Copyright (C) 2016-2017 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
*
* 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
@@ -26,18 +25,13 @@
#include <winnls.h>
#include <shellapi.h>
#include <windowsx.h>
#include <winreg.h>
#include "fontview.h"
#include "resource.h"
HINSTANCE g_hInstance;
INT g_FontIndex = 0;
INT g_NumFonts = 0;
LOGFONTW g_LogFonts[64];
EXTLOGFONTW g_ExtLogFontW;
LPCWSTR g_fileName;
WCHAR g_FontTitle[1024] = L"";
BOOL g_FontPrint = FALSE;
static const WCHAR g_szFontViewClassName[] = L"FontViewWClass";
@@ -93,13 +87,12 @@ ErrorMsgBox(HWND hParent, DWORD dwMessageId, ...)
}
int WINAPI
wWinMain(HINSTANCE hThisInstance,
WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
LPSTR lpCmdLine,
int nCmdShow)
{
int argc;
INT i;
WCHAR** argv;
WCHAR szFileName[MAX_PATH] = L"";
DWORD dwSize;
@@ -125,10 +118,10 @@ wWinMain(HINSTANCE hThisInstance,
if (argc < 2)
{
OPENFILENAMEW fontOpen;
WCHAR filter[MAX_PATH*2], dialogTitle[MAX_PATH];
WCHAR filter[MAX_PATH], dialogTitle[MAX_PATH];
LoadStringW(NULL, IDS_OPEN, dialogTitle, ARRAYSIZE(dialogTitle));
LoadStringW(NULL, IDS_FILTER_LIST, filter, ARRAYSIZE(filter));
LoadStringW(NULL, IDS_OPEN, dialogTitle, MAX_PATH);
LoadStringW(NULL, IDS_FILTER_LIST, filter, MAX_PATH);
/* Clears out any values of fontOpen before we use it */
ZeroMemory(&fontOpen, sizeof(fontOpen));
@@ -157,24 +150,7 @@ wWinMain(HINSTANCE hThisInstance,
else
{
/* Try to add the font resource from command line */
// fileName = argv[1];
if (argc == 2)
{
fileName = argv[1];
}
else
{
/* Windows fontview supports the /p option, which displays print dialog */
fileName = argv[2];
if (wcscmp(argv[1], L"/p") == 0)
{
g_FontPrint = TRUE;
}
else
{
fileName = argv[1];
}
}
fileName = argv[1];
g_fileName = fileName;
}
@@ -185,31 +161,19 @@ wWinMain(HINSTANCE hThisInstance,
}
/* Get the font name */
dwSize = sizeof(g_LogFonts);
ZeroMemory(g_LogFonts, sizeof(g_LogFonts));
if (!GetFontResourceInfoW(fileName, &dwSize, g_LogFonts, 2))
{
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
return -1;
}
g_NumFonts = 0;
for (i = 0; i < ARRAYSIZE(g_LogFonts); ++i)
{
if (g_LogFonts[i].lfFaceName[0] == 0)
break;
++g_NumFonts;
}
if (g_NumFonts == 0)
dwSize = sizeof(g_ExtLogFontW.elfFullName);
if (!GetFontResourceInfoW(fileName, &dwSize, g_ExtLogFontW.elfFullName, 1))
{
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
return -1;
}
/* get font title */
dwSize = sizeof(g_FontTitle);
ZeroMemory(g_FontTitle, sizeof(g_FontTitle));
GetFontResourceInfoW(fileName, &dwSize, g_FontTitle, 1);
dwSize = sizeof(LOGFONTW);
if (!GetFontResourceInfoW(fileName, &dwSize, &g_ExtLogFontW.elfLogFont, 2))
{
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
return -1;
}
if (!Display_InitClass(hThisInstance))
{
@@ -242,7 +206,7 @@ wWinMain(HINSTANCE hThisInstance,
hMainWnd = CreateWindowExW(
0, /* Extended possibilities for variation */
g_szFontViewClassName, /* Classname */
g_FontTitle, /* Title Text */
g_ExtLogFontW.elfFullName,/* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
@@ -258,8 +222,6 @@ wWinMain(HINSTANCE hThisInstance,
/* Main message loop */
while (GetMessage (&msg, NULL, 0, 0))
{
if (IsDialogMessage(hMainWnd, &msg))
continue;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
@@ -275,9 +237,7 @@ MainWnd_OnCreate(HWND hwnd)
WCHAR szQuit[MAX_BUTTONNAME];
WCHAR szPrint[MAX_BUTTONNAME];
WCHAR szString[MAX_STRING];
WCHAR szPrevious[MAX_STRING];
WCHAR szNext[MAX_STRING];
HWND hDisplay, hButtonInstall, hButtonPrint, hButtonPrev, hButtonNext;
HWND hDisplay, hButtonInstall, hButtonPrint;
/* create the display window */
hDisplay = CreateWindowExW(
@@ -298,6 +258,10 @@ MainWnd_OnCreate(HWND hwnd)
LoadStringW(g_hInstance, IDS_STRING, szString, MAX_STRING);
SendMessage(hDisplay, FVM_SETSTRING, 0, (LPARAM)szString);
/* Init the display window with the font name */
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_ExtLogFontW);
ShowWindow(hDisplay, SW_SHOWNORMAL);
/* Create the install button */
LoadStringW(g_hInstance, IDS_INSTALL, szQuit, MAX_BUTTONNAME);
hButtonInstall = CreateWindowExW(
@@ -334,54 +298,6 @@ MainWnd_OnCreate(HWND hwnd)
);
SendMessage(hButtonPrint, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
/* Create the previous button */
LoadStringW(g_hInstance, IDS_PREVIOUS, szPrevious, MAX_BUTTONNAME);
hButtonPrev = CreateWindowExW(
0, /* Extended style */
L"button", /* Classname */
szPrevious, /* Title text */
WS_CHILD | WS_VISIBLE, /* Window style */
450, /* X-pos */
BUTTON_POS_Y, /* Y-Pos */
BUTTON_WIDTH, /* Width */
BUTTON_HEIGHT, /* Height */
hwnd, /* Parent */
(HMENU)IDC_PREV, /* Identifier */
g_hInstance, /* Program Instance handler */
NULL /* Window Creation data */
);
SendMessage(hButtonPrev, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
/* Create the next button */
LoadStringW(g_hInstance, IDS_NEXT, szNext, MAX_BUTTONNAME);
hButtonNext = CreateWindowExW(
0, /* Extended style */
L"button", /* Classname */
szNext, /* Title text */
WS_CHILD | WS_VISIBLE, /* Window style */
450, /* X-pos */
BUTTON_POS_Y, /* Y-Pos */
BUTTON_WIDTH, /* Width */
BUTTON_HEIGHT, /* Height */
hwnd, /* Parent */
(HMENU)IDC_NEXT, /* Identifier */
g_hInstance, /* Program Instance handler */
NULL /* Window Creation data */
);
SendMessage(hButtonNext, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
EnableWindow(hButtonPrev, FALSE);
if (g_NumFonts <= 1)
EnableWindow(hButtonNext, FALSE);
/* Init the display window with the font name */
g_FontIndex = 0;
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
ShowWindow(hDisplay, SW_SHOWNORMAL);
if (g_FontPrint)
PostMessage(hwnd, WM_COMMAND, IDC_PRINT, 0);
return 0;
}
@@ -389,36 +305,10 @@ static LRESULT
MainWnd_OnSize(HWND hwnd)
{
RECT rc;
HWND hInstall, hPrint, hPrev, hNext, hDisplay;
HDWP hDWP;
GetClientRect(hwnd, &rc);
hDWP = BeginDeferWindowPos(5);
hInstall = GetDlgItem(hwnd, IDC_INSTALL);
if (hDWP)
hDWP = DeferWindowPos(hDWP, hInstall, NULL, BUTTON_POS_X, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
hPrint = GetDlgItem(hwnd, IDC_PRINT);
if (hDWP)
hDWP = DeferWindowPos(hDWP, hPrint, NULL, BUTTON_POS_X + BUTTON_WIDTH + BUTTON_PADDING, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
hPrev = GetDlgItem(hwnd, IDC_PREV);
if (hDWP)
hDWP = DeferWindowPos(hDWP, hPrev, NULL, rc.right - (BUTTON_WIDTH * 2 + BUTTON_PADDING + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
hNext = GetDlgItem(hwnd, IDC_NEXT);
if (hDWP)
hDWP = DeferWindowPos(hDWP, hNext, NULL, rc.right - (BUTTON_WIDTH + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
if (hDWP)
hDWP = DeferWindowPos(hDWP, hDisplay, NULL, 0, HEADER_SIZE, rc.right, rc.bottom - HEADER_SIZE, SWP_NOZORDER);
EndDeferWindowPos(hDWP);
InvalidateRect(hwnd, NULL, TRUE);
MoveWindow(GetDlgItem(hwnd, IDC_PRINT), rc.right - BUTTON_WIDTH - BUTTON_POS_X, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, TRUE);
MoveWindow(GetDlgItem(hwnd, IDC_DISPLAY), 0, HEADER_SIZE, rc.right, rc.bottom - HEADER_SIZE, TRUE);
return 0;
}
@@ -442,118 +332,20 @@ MainWnd_OnPaint(HWND hwnd)
static LRESULT
MainWnd_OnInstall(HWND hwnd)
{
WCHAR szFullName[64];
DWORD fontExists;
WCHAR szSrcPath[MAX_PATH];
WCHAR szDestPath[MAX_PATH];
PWSTR pszFileName;
LONG res;
HKEY hKey;
SendDlgItemMessage(hwnd, IDC_DISPLAY, FVM_GETFULLNAME, 64, (LPARAM)szFullName);
// MessageBoxW(hwnd, szFullName, L"Debug", MB_OK);
/* First, we have to find out if the font still exists */
if (GetFileAttributes(g_fileName) == INVALID_FILE_ATTRIBUTES)
{
/* Fail, if the source file does not exist */
ErrorMsgBox(0, IDS_ERROR_NOFONT, g_fileName);
return -1;
}
/* Build the full destination file name */
GetFullPathNameW(g_fileName, MAX_PATH, szSrcPath, &pszFileName);
GetWindowsDirectoryW(szDestPath, MAX_PATH);
wcscat(szDestPath, L"\\Fonts\\");
wcscat(szDestPath, pszFileName);
/* Debug Message */
// MessageBoxW(hwnd, szDestPath, L"szDestPath", MB_OK);
// MessageBoxW(hwnd, pszFileName, L"pszFileExt", MB_OK);
/* Check if the file already exists */
if (GetFileAttributesW(szDestPath) != INVALID_FILE_ATTRIBUTES)
{
MessageBoxW(hwnd, L"This font is already installed!", L"Already Installed", MB_OK);
return 0;
}
/* Copy the font file */
if (!CopyFileW(g_fileName, szDestPath, TRUE))
{
MessageBoxW(hwnd,L"Failed to copy the font file!", L"File Error", MB_OK);
return -1;
}
/* Open the fonts key */
res = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts",
0,
KEY_ALL_ACCESS,
&hKey);
if (res != ERROR_SUCCESS)
{
MessageBoxW(hwnd, L"Failed top open the fonts key!", L"Debug1", MB_OK);
return -1;
}
/* Register the font */
res = RegSetValueExW(hKey,
szFullName,
0,
REG_SZ,
(LPBYTE)pszFileName,
(wcslen(pszFileName) + 1) * sizeof(WCHAR));
if (res != ERROR_SUCCESS)
{
MessageBoxW(hwnd, L"Failed to register the new font!", L"Debug2", MB_OK);
RegCloseKey(hKey);
return -1;
}
/* Close the fonts key */
RegCloseKey(hKey);
/* if all of this goes correctly, message the user about success */
MessageBoxW(hwnd, L"Font Installation Completed.", L"Success", MB_OK);
return 0;
}
static LRESULT
MainWnd_OnPrev(HWND hwnd)
{
HWND hDisplay;
if (g_FontIndex > 0)
/* First, we have to find out if the font still exists. */
fontExists = GetFileAttributes((LPCSTR)g_fileName);
if (fontExists != 0xFFFFFFFF) /* If the file does not exist */
{
--g_FontIndex;
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), TRUE);
if (g_FontIndex == 0)
EnableWindow(GetDlgItem(hwnd, IDC_PREV), FALSE);
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
InvalidateRect(hDisplay, NULL, TRUE);
ErrorMsgBox(0, IDS_ERROR_NOFONT, g_fileName);
return -1;
}
return 0;
}
static LRESULT
MainWnd_OnNext(HWND hwnd)
{
HWND hDisplay;
if (g_FontIndex + 1 < g_NumFonts)
{
++g_FontIndex;
EnableWindow(GetDlgItem(hwnd, IDC_PREV), TRUE);
if (g_FontIndex == g_NumFonts - 1)
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), FALSE);
//CopyFile(g_fileName, NULL, TRUE);
MessageBox(hwnd, TEXT("This function is unimplemented"), TEXT("Unimplemented"), MB_OK);
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
InvalidateRect(hDisplay, NULL, TRUE);
}
return 0;
}
@@ -576,15 +368,11 @@ MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
case IDC_INSTALL:
return MainWnd_OnInstall(hwnd);
break;
case IDC_PRINT:
return Display_OnPrint(hwnd);
case IDC_PREV:
return MainWnd_OnPrev(hwnd);
case IDC_NEXT:
return MainWnd_OnNext(hwnd);
break;
}
break;

View File

@@ -6,18 +6,13 @@
#define HEADER_SIZE 37
#define BUTTON_POS_X 6
#define BUTTON_POS_Y 8
#define BUTTON_WIDTH 80
#define BUTTON_WIDTH 72
#define BUTTON_HEIGHT 21
#define BUTTON_PADDING 8
#define IDC_INSTALL 1001
#define IDC_PRINT 1002
#define IDC_DISPLAY 1003
#define IDC_PREV 1004
#define IDC_NEXT 1005
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
BOOL LoadFont(LPWSTR lpCmdLine);
extern INT g_FontIndex;

View File

@@ -2,7 +2,7 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INSTALL "&Install"
IDS_INSTALL "Install"
IDS_PRINT "Печат"
IDS_STRING "Абвгд ежзий клмно прсту фхцчш щъьюя. 1234567890"
IDS_OPEN "Open Font..."
@@ -10,13 +10,9 @@ BEGIN
IDS_ERROR_NOMEM "Няма достатъчно място за завършване на действието."
IDS_ERROR_NOFONT "%1 не е редовен шрифтов файл."
IDS_ERROR_NOCLASS "Неуспешно изпълнение на класа на прозореца."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -2,21 +2,17 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INSTALL "&Nainstalovat"
IDS_PRINT "&Tisk"
IDS_INSTALL "Nainstalovat"
IDS_PRINT "Tisk"
IDS_STRING "Příliš žluťoučký kůň úpěl ďábelské ódy. 1234567890"
IDS_OPEN "Otevřít soubor písma..."
IDS_ERROR "Chyba"
IDS_ERROR_NOMEM "K dokončení operace není dostatek paměti."
IDS_ERROR_NOFONT "Soubor %1 není platným souborem písma."
IDS_ERROR_NOCLASS "Inicializace okna aplikace selhala."
IDS_FILTER_LIST "Podporované soubory písem (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Písmo Font (*.fon;*.fnt)\0*.fon;*.fnt\0\
Písmo TrueType (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
Písmo OpenType (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Všechny soubory (*.*)\0*.*\0"
IDS_PREVIOUS "< &Previous"
IDS_NEXT "&Next >"
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
OpenType Font (*.otf)\0*.otf\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
END

View File

@@ -2,21 +2,17 @@ LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_INSTALL "&Installieren"
IDS_PRINT "&Drucken"
IDS_INSTALL "Installieren"
IDS_PRINT "Drucken"
IDS_STRING "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. 1234567890"
IDS_OPEN "Schriftartendatei öffnen..."
IDS_ERROR "Fehler"
IDS_ERROR_NOMEM "Es steht nicht genügend Speicher zur Verfügung."
IDS_ERROR_NOFONT "Die angegebene Datei %1 ist keine gültige Schriftartendatei."
IDS_ERROR_NOCLASS "Fehler beim Initialisieren der Fensterklasse."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -2,21 +2,17 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
BEGIN
IDS_INSTALL "&Install"
IDS_PRINT "&Print"
IDS_INSTALL "Install"
IDS_PRINT "Print"
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
IDS_OPEN "Open Font..."
IDS_ERROR "Error"
IDS_ERROR_NOMEM "There is not enough memory to complete the operation."
IDS_ERROR_NOMEM "There's not enough memory to complete the operation."
IDS_ERROR_NOFONT "The file %1 is not a valid font file."
IDS_ERROR_NOCLASS "Could not initialize window class."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -4,21 +4,17 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_INSTALL "&Instalar"
IDS_PRINT "Im&primir"
IDS_INSTALL "Instalar"
IDS_PRINT "Imprimir"
IDS_STRING "Jovencillo emponzoñado de whisky: ¡qué figurota exhibe! 1234567890"
IDS_OPEN "Abrir fuente..."
IDS_ERROR "Error"
IDS_ERROR_NOMEM "No hay memoria suficiente para completar la operación."
IDS_ERROR_NOFONT "El archivo %1 no es un archivo de fuente válido."
IDS_ERROR_NOCLASS "No es posible iniciar la clase de ventana."
IDS_FILTER_LIST "Todas las tipografías (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Tipografía de mapa de bits (*.fon;*.fnt)\0*.fon;*.fnt\0\
Tipografía TrueType (*.ttf)\0*.ttf\0\
Colección de tipografías TrueType (*.ttc)\0*.ttc\0\
Tipografía OpenType (*.otf)\0*.otf\0\
Colección de tipografías OpenType (*.otc)\0*.otc\0\
Todos los archivos (*.*)\0*.*\0"
IDS_PREVIOUS "< Ante&rior"
IDS_NEXT "Siguie&nte >"
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
OpenType Font (*.otf)\0*.otf\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
END

View File

@@ -2,21 +2,17 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_INSTALL "&Installer"
IDS_PRINT "Im&primer"
IDS_INSTALL "Installer"
IDS_PRINT "Imprimer"
IDS_STRING "Voix ambiguë d'un cœur qui au zéphyr préfère les jattes de kiwis. 1234567890"
IDS_OPEN "Ouvrir un fichier police..."
IDS_ERROR "Erreur"
IDS_ERROR_NOMEM "Mémoire insuffisante pour terminer l'opération."
IDS_ERROR_NOFONT "Le fichier %1 n'est pas un fichier de polices valide."
IDS_ERROR_NOFONT "Le fichier %1 n'est pas un fichier police valide."
IDS_ERROR_NOCLASS "Impossible d'initialiser la classe de fenêtre."
IDS_FILTER_LIST "Toutes polices supportées (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Fichier de polices (*.fon;*.fnt)\0*.fon;*.fnt\0\
Fichier de polices TrueType (*.ttf)\0*.ttf\0\
Fichier collection de polices TrueType (*.ttc)\0*.ttc\0\
Fichier de polices OpenType (*.otf)\0*.otf\0\
Fichier collection de polices OpenType (*.otc)\0*.otc\0\
Tous les fichiers (*.*)\0*.*\0"
IDS_PREVIOUS "< P&récédent"
IDS_NEXT "Suiva&nt >"
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
OpenType Font (*.otf)\0*.otf\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
END

View File

@@ -12,13 +12,9 @@ BEGIN
IDS_ERROR_NOMEM "אין מספיק זיכרון כדי להשלים את הפעולה."
IDS_ERROR_NOFONT "הקובץ %1 אינו קובץ גופנים חוקי."
IDS_ERROR_NOCLASS "Could not initialize window class."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -2,21 +2,17 @@ LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INSTALL "&Installa"
IDS_PRINT "Stam&pa"
IDS_INSTALL "Installa"
IDS_PRINT "Stampa"
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
IDS_OPEN "Apri Font..."
IDS_ERROR "Errore"
IDS_ERROR_NOMEM "Memoria insufficiente per completare l'operazione."
IDS_ERROR_NOFONT "Il file% 1 non è un file di origine valido."
IDS_ERROR_NOCLASS "Impossibile avviare la classe."
IDS_FILTER_LIST "Tutti i font supportati (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
Font TrueType (*.ttf)\0*.ttf\0\
Collezione Font TrueType (*.ttc)\0*.ttc\0\
Font OpenType (*.otf)\0*.otf\0\
Collezione Font OpenType (*.otc)\0*.otc\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
OpenType Font (*.otf)\0*.otf\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&recedente"
IDS_NEXT "Ava&nti >"
END

View File

@@ -4,21 +4,17 @@ LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INSTALL "&Install"
IDS_PRINT "&Spausdinti"
IDS_INSTALL "Install"
IDS_PRINT "Spausdinti"
IDS_STRING "ABCDEFGHIYJKLMNOPQRSTUVWXZ ąčęėįšųūž 1234567890"
IDS_OPEN "Aatvira šriftas..."
IDS_ERROR "Klaida"
IDS_ERROR_NOMEM "Užduočiai užbaigti, nepakanka atminties."
IDS_ERROR_NOFONT "%1 nėra teisinga šrifto byla."
IDS_ERROR_NOCLASS "Nepavyko inicijuoti lango klasės."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -4,21 +4,17 @@ LANGUAGE LANG_MALAY, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INSTALL "&Memasang"
IDS_PRINT "M&encetak"
IDS_INSTALL "Memasang"
IDS_PRINT "Mencetak"
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
IDS_OPEN "Buka fon..."
IDS_ERROR "Ralat"
IDS_ERROR_NOMEM "Terdapat tidak cukup ingatan untuk melengkapkan operasi ini."
IDS_ERROR_NOFONT "Fail %1 bukanlah fail fon yang sah."
IDS_ERROR_NOCLASS "Tidak dapat mengawalkan kelas tetingkap."
IDS_FILTER_LIST "Semuanya disokong fon (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
IDS_FILTER_LIST "Semuanya disokong fon (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
Fon TrueType (*.ttf)\0*.ttf\0\
Fon OpenType (*.otf)\0*.otf\0\
Fail fon (*.fon)\0*.fon\0\
Semua fail (*.*)\0*.*\0"
END

View File

@@ -2,21 +2,17 @@ LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_INSTALL "&Install"
IDS_PRINT "&Skriv"
IDS_INSTALL "Install"
IDS_PRINT "Skriv"
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
IDS_OPEN "Open Font..."
IDS_ERROR "Feil"
IDS_ERROR_NOMEM "Det er ikke nok minne for å fullføre oppgaven."
IDS_ERROR_NOFONT "Filen %1 er ikke et gyldig skriftfil."
IDS_ERROR_NOCLASS "Kunne ikke initialise vindu klassen."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -10,21 +10,17 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INSTALL "&Instaluj"
IDS_PRINT "&Drukuj"
IDS_INSTALL "Instaluj"
IDS_PRINT "Drukuj"
IDS_STRING "Zażółć gęślą Jaźń żółwiątkiem. 1234567890. !@#$%^&*()_+=-/?"
IDS_OPEN "Otwórz czcionkę..."
IDS_ERROR "Błąd"
IDS_ERROR_NOMEM "Brakuje pamięci do ukończenia tej operacji."
IDS_ERROR_NOFONT "Plik %1 nie jest poprawnym plikiem czcionki."
IDS_ERROR_NOCLASS "Nie udało się zainicjować klasy window."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -4,21 +4,17 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_INSTALL "&Install"
IDS_PRINT "Im&primir"
IDS_INSTALL "Install"
IDS_PRINT "Imprimir"
IDS_STRING "Jackdaws ama minha grande esfinge de quartzo. 1234567890"
IDS_OPEN "Open Font..."
IDS_ERROR "Erro"
IDS_ERROR_NOMEM "Não há memória suficiente para completar a operação."
IDS_ERROR_NOFONT "O arquivo %1 não é um arquivo de fonte válida."
IDS_ERROR_NOCLASS "Não foi possível inicializar a janela."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -12,13 +12,9 @@ BEGIN
IDS_ERROR_NOMEM "Nu e destulă memorie pentru a încheia operația."
IDS_ERROR_NOFONT "Fișierul «%1» este un fișier font deteriorat."
IDS_ERROR_NOCLASS "Clasa de ferestre nu a putut fi inițializată."
IDS_FILTER_LIST "Toate fonturile recunoscute (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Fișiere de tip Font (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "Toate fonturile recunoscute (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
Fonturi de tip TrueType (*.ttf)\0*.ttf\0\
Colecție de fonturi TrueType (*.ttc)\0*.ttc\0\
Fonturi de tip OpenType (*.otf)\0*.otf\0\
Colecție de fonturi OpenType (*.otc)\0*.otc\0\
Fișiere de tip Font (*.fon)\0*.fon\0\
Orice fișier (*.*)\0*.*\0"
IDS_PREVIOUS "< Înap&oi"
IDS_NEXT "În&ainte >"
END

View File

@@ -12,13 +12,9 @@ BEGIN
IDS_ERROR_NOMEM "Недостаточно памяти для выполнения операции."
IDS_ERROR_NOFONT "%1 не является корректным файлом шрифта."
IDS_ERROR_NOCLASS "Невозможно инициализировать класс окна."
IDS_FILTER_LIST "Все поддерживаемые шрифты (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Файлы шрифтов (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "Все поддерживаемые шрифты (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType шрифты (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType шрифты (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Файлы шрифтов (*.fon)\0*.fon\0\
Все файлы (*.*)\0*.*\0"
IDS_PREVIOUS "< &Предыдущий"
IDS_NEXT "&Следующий >"
END

View File

@@ -15,13 +15,9 @@ BEGIN
IDS_ERROR_NOMEM "Na vykonanie tejto operácie nie je dostatok voľnej pamäte."
IDS_ERROR_NOFONT "Požadovaný súbor %1 nie je platným súborom písiem."
IDS_ERROR_NOCLASS "Nepodarilo sa inicializovať triedu window."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -6,21 +6,17 @@ LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_INSTALL "&Instalo"
IDS_PRINT "&Printo"
IDS_INSTALL "Instalo"
IDS_PRINT "Printo"
IDS_STRING "Jackdaws dashuron sphinxin tim të madh prej kuartzi. 1234567890"
IDS_OPEN "Hap fontin..."
IDS_ERROR "Error"
IDS_ERROR_NOMEM "Nuk ka memorie të mjaftueshme për të përfunduar operacionin."
IDS_ERROR_NOFONT "Dokumenti %1 nuk është një font i vlefshem."
IDS_ERROR_NOCLASS "Nuk mund të fillojë dritaren e klases."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -9,21 +9,17 @@ LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_INSTALL "&Install"
IDS_PRINT "&Skriv ut"
IDS_INSTALL "Install"
IDS_PRINT "Skriv ut"
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
IDS_OPEN "Open Font..."
IDS_ERROR "Fel"
IDS_ERROR_NOMEM "Det er inte nog minne för att slutföre operationen."
IDS_ERROR_NOFONT "Filen %1 är inte en giltig typsnittsfil."
IDS_ERROR_NOCLASS "Kunde inte initialisera Windows klassen."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -1,23 +1,19 @@
/* TRANSLATOR: 2013, 2014, 2017 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
/* TRANSLATOR: 2013, 2014 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INSTALL "&Kur..."
IDS_PRINT "&Yazdır..."
IDS_STRING "Pijamalı hasta, yağız şoföre çabucak güvendi. 1234567890"
IDS_INSTALL "Kur..."
IDS_PRINT "Yazdır..."
IDS_STRING "Küçük karga, benim büyük kuvars sfenksimi seviyor. 1234567890"
IDS_OPEN "Yazı Tipi Aç..."
IDS_ERROR "Yanlışlık"
IDS_ERROR_NOMEM "Bu işlemi bitirmek için yeterli bellek yok."
IDS_ERROR_NOFONT "%1 kütüğü, geçerli bir yazı tipi kütüğü değil."
IDS_ERROR_NOCLASS "Pencere sınıfı başlatılamadı."
IDS_FILTER_LIST "Tüm Desteklenen Yazı Tipleri (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Yazı Tipi Kütüğü (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "Tüm Desteklenen Yazı Tipleri (*.ttf, *.fon, *.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Yazı Tipi (*.ttf)\0*.ttf\0\
TrueType Yazı Tipi Derlemi (*.ttc)\0*.ttc\0\
OpenType Yazı Tipi (*.otf)\0*.otf\0\
OpenType Yazı Tipi Derlemi (*.otc)\0*.otc\0\
Yazı Tipi Kütüğü (*.fon)\0*.fon\0\
Tüm Kütükler (*.*)\0*.*\0"
IDS_PREVIOUS "< &Geri"
IDS_NEXT "&İleri >"
END

View File

@@ -10,7 +10,7 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INSTALL "&Install"
IDS_INSTALL "Install"
IDS_PRINT "Друк"
IDS_STRING "Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів! 1234567890"
IDS_OPEN "Open Font..."
@@ -18,13 +18,9 @@ BEGIN
IDS_ERROR_NOMEM "Недостатньо пам'яті для завершення операції."
IDS_ERROR_NOFONT "Файл %1 не є коректним файлом шрифту."
IDS_ERROR_NOCLASS "Неможливо ініціалізувати віконний клас."
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "All Supported Fonts (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType Font (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType Font (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
Font File (*.fon)\0*.fon\0\
All Files (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -18,13 +18,9 @@ BEGIN
IDS_ERROR_NOMEM "没有足够的内存来完成操作。"
IDS_ERROR_NOFONT "1不是一个有效的字体档案。"
IDS_ERROR_NOCLASS "窗口无法初始化。"
IDS_FILTER_LIST "支持所有的字体 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
字体文件 (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "支持所有的字体 (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType 字体 (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType 字体 (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
字体文件 (*.fon)\0*.fon\0\
所有文件 (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -18,13 +18,9 @@ BEGIN
IDS_ERROR_NOMEM "沒有足夠的記憶體來完成操作。"
IDS_ERROR_NOFONT "%1 不是一個有效的字體檔案。"
IDS_ERROR_NOCLASS "窗口無法初始化。"
IDS_FILTER_LIST "所有支援的字體 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
字體檔 (*.fon;*.fnt)\0*.fon;*.fnt\0\
IDS_FILTER_LIST "所有支援的字體 (*.ttf;*.fon;*.otf)\0*.ttf;*.fon;*.otf\0\
TrueType 字體 (*.ttf)\0*.ttf\0\
TrueType Font Collection (*.ttc)\0*.ttc\0\
OpenType 字體 (*.otf)\0*.otf\0\
OpenType Font Collection (*.otc)\0*.otc\0\
字體檔 (*.fon)\0*.fon\0\
所有檔 (*.*)\0*.*\0"
IDS_PREVIOUS "< P&revious"
IDS_NEXT "&Next >"
END

View File

@@ -15,7 +15,4 @@
#define IDS_CHARSUPPER 701
#define IDS_SPECIALCHARS 702
#define IDS_PREVIOUS 800
#define IDS_NEXT 801
#define IDI_TT 800

View File

@@ -22,7 +22,7 @@ BEGIN
AUTORADIOBUTTON "&None", IDC_OPT_NOSCORE, 107, 45, 60, 10
AUTOCHECKBOX "Zobrazit č&as", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP
AUTOCHECKBOX "Stavový řád&ek", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP
AUTOCHECKBOX "&Ponechat skóre", IDC_OPT_KEEPSCORE, 100, 66, 65, 10, WS_TABSTOP
AUTOCHECKBOX "&Keep Score", IDC_OPT_KEEPSCORE, 100, 66, 65, 10, WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 35, 97, 50, 14
PUSHBUTTON "Storno", IDCANCEL, 101, 97, 50, 14
END
@@ -57,8 +57,8 @@ BEGIN
IDS_SOL_QUIT "Ukončit rozehranou hru?"
IDS_SOL_WIN "Gratulujeme, zvítězili jste!!"
IDS_SOL_DEAL "Rozdat znova?"
IDS_SOL_SCORE "Sre: %d"
IDS_SOL_TIME "Čas: %d"
IDS_SOL_SCORE "Score: %d"
IDS_SOL_TIME "Time: %d"
END
/* Menus */

View File

@@ -1,73 +0,0 @@
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
/* Dialogs */
IDD_CARDBACK DIALOGEX 6, 6, 345, 185
CAPTION "Zvolte rub karet"
FONT 8, "MS Shell Dlg"
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_SHELLFONT
BEGIN
CONTROL "", IDC_CARDBACK1, "Static", SS_NOTIFY, 4, 7, 50, 71
CONTROL "", IDC_CARDBACK2, "Static", SS_NOTIFY, 61, 7, 50, 71
CONTROL "", IDC_CARDBACK3, "Static", SS_NOTIFY, 118, 7, 50, 71
CONTROL "", IDC_CARDBACK4, "Static", SS_NOTIFY, 175, 7, 50, 71
CONTROL "", IDC_CARDBACK5, "Static", SS_NOTIFY, 232, 7, 50, 71
CONTROL "", IDC_CARDBACK6, "Static", SS_NOTIFY, 289, 7, 50, 71
CONTROL "", IDC_CARDBACK7, "Static", SS_NOTIFY, 4, 89, 50, 71
CONTROL "", IDC_CARDBACK8, "Static", SS_NOTIFY, 61, 89, 50, 71
CONTROL "", IDC_CARDBACK9, "Static", SS_NOTIFY, 118, 89, 50, 71
CONTROL "", IDC_CARDBACK10, "Static", SS_NOTIFY, 175, 89, 50, 71
CONTROL "", IDC_CARDBACK11, "Static", SS_NOTIFY, 232, 89, 50, 71
CONTROL "", IDC_CARDBACK12, "Static", SS_NOTIFY, 289, 89, 50, 71
DEFPUSHBUTTON "OK", IDOK, 114, 165, 54, 14
PUSHBUTTON "Storno", IDCANCEL, 176, 165, 54, 14
END
IDD_DIFFICULTY DIALOGEX 100, 100, 106, 80
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_SHELLFONT
CAPTION "Obtížnost"
FONT 8, "MS Shell Dlg"
BEGIN
AUTORADIOBUTTON "Lehká: &Jedna barva", IDC_DIF_ONECOLOR, 8, 10, 80, 10, WS_GROUP | WS_TABSTOP
AUTORADIOBUTTON "Střední: &Dvě barvy", IDC_DIF_TWOCOLORS, 8, 23, 80, 10
AUTORADIOBUTTON "Težká: Č&tyři barvy", IDC_DIF_FOURCOLORS, 8, 36, 80, 10
DEFPUSHBUTTON "OK", IDOK, 8, 58, 40, 14
PUSHBUTTON "Storno", IDCANCEL, 58, 58, 40, 14
END
/* Strings */
STRINGTABLE
BEGIN
IDS_SPI_NAME "Spider"
IDS_SPI_ABOUT "Spider Solitaire vytvořil Gregor Schneider\n\nCardLib verze 1.0"
IDS_SPI_QUIT "Ukončit hru?"
IDS_SPI_WIN "Gratulace k výhře!"
IDS_SPI_DEAL "Rozdat znovu?"
END
/* Menus */
IDR_MENU1 MENU
BEGIN
POPUP "&Hra"
BEGIN
MENUITEM "&Nová hra\tF2", IDM_GAME_NEW
MENUITEM SEPARATOR
MENUITEM "&Balíček...", IDM_GAME_DECK
MENUITEM SEPARATOR
MENUITEM "&Konec", IDM_GAME_EXIT
END
POPUP "&Nápověda"
BEGIN
MENUITEM "&Obsah\tF1", IDM_HELP_CONTENTS
MENUITEM "&O programu", IDM_HELP_ABOUT
END
END
/* Accelerator */
IDR_ACCELERATOR1 ACCELERATORS
BEGIN
VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT
VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT
END

View File

@@ -15,9 +15,6 @@ IDI_SPIDER ICON "spider.ico"
#ifdef LANGUAGE_BG_BG
#include "lang/bg-BG.rc"
#endif
#ifdef LANGUAGE_CS_CZ
#include "lang/cs-CZ.rc"
#endif
#ifdef LANGUAGE_DE_DE
#include "lang/de-DE.rc"
#endif

View File

@@ -57,21 +57,21 @@ INT_PTR CALLBACK DifficultyDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM l
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
if (IsDlgButtonChecked(hDlg, IDC_DIF_ONECOLOR) == BST_CHECKED)
dwDifficulty = IDC_DIF_ONECOLOR;
else if (IsDlgButtonChecked(hDlg, IDC_DIF_TWOCOLORS) == BST_CHECKED)
dwDifficulty = IDC_DIF_TWOCOLORS;
else if (IsDlgButtonChecked(hDlg, IDC_DIF_FOURCOLORS) == BST_CHECKED)
dwDifficulty = IDC_DIF_FOURCOLORS;
case IDOK:
if (IsDlgButtonChecked(hDlg, IDC_DIF_ONECOLOR) == BST_CHECKED)
dwDifficulty = IDC_DIF_ONECOLOR;
else if (IsDlgButtonChecked(hDlg, IDC_DIF_TWOCOLORS) == BST_CHECKED)
dwDifficulty = IDC_DIF_TWOCOLORS;
else if (IsDlgButtonChecked(hDlg, IDC_DIF_FOURCOLORS) == BST_CHECKED)
dwDifficulty = IDC_DIF_FOURCOLORS;
NewGame();
EndDialog(hDlg, TRUE);
return TRUE;
NewGame();
EndDialog(hDlg, TRUE);
return TRUE;
case IDCANCEL:
EndDialog(hDlg, FALSE);
return TRUE;
case IDCANCEL:
EndDialog(hDlg, FALSE);
return TRUE;
}
break;
}
@@ -122,16 +122,16 @@ int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPTSTR szCmdLine, int iCm
MakePath(szHelpPath, MAX_PATH, _T(".hlp"));
hwnd = CreateWindow(szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
0, /*The real size will be computed in WndProc through WM_GETMINMAXINFO */
0, /* The real size will be computed in WndProc through WM_GETMINMAXINFO */
NULL,
NULL,
hInst,
NULL);
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
0, /*The real size will be computed in WndProc through WM_GETMINMAXINFO */
0, /* The real size will be computed in WndProc through WM_GETMINMAXINFO */
NULL,
NULL,
hInst,
NULL);
hwndMain = hwnd;
@@ -142,9 +142,9 @@ int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPTSTR szCmdLine, int iCm
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIFFICULTY), hwnd, DifficultyDlgProc);
while (GetMessage(&msg, NULL,0,0))
while(GetMessage(&msg, NULL,0,0))
{
if (!TranslateAccelerator(hwnd, hAccelTable, &msg))
if(!TranslateAccelerator(hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
@@ -153,64 +153,70 @@ int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPTSTR szCmdLine, int iCm
return msg.wParam;
}
LRESULT CALLBACK CardImageWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
LRESULT CALLBACK
CardImageWndProc(HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
PCARDBACK pCardBack = (PCARDBACK)GetWindowLongPtr(hwnd, GWL_USERDATA);
PCARDBACK pCardBack = (PCARDBACK)GetWindowLongPtr(hwnd,
GWL_USERDATA);
static WNDPROC hOldProc = NULL;
if (!pCardBack)
return FALSE;
if (!hOldProc)
if (!hOldProc && pCardBack)
hOldProc = pCardBack->hOldProc;
switch (msg)
{
case WM_PAINT:
case WM_PAINT:
{
HDC hdc;
PAINTSTRUCT ps;
HPEN hPen, hOldPen;
HBRUSH hBrush, hOldBrush;
RECT rc;
hdc = BeginPaint(hwnd, &ps);
if (pCardBack->bSelected)
{
HDC hdc;
PAINTSTRUCT ps;
HPEN hPen, hOldPen;
HBRUSH hBrush, hOldBrush;
RECT rc;
hPen = CreatePen(PS_SOLID, 2, RGB(0,0,0));
}
else
{
DWORD Face = GetSysColor(COLOR_3DFACE);
hPen = CreatePen(PS_SOLID, 2, Face);
}
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rc);
hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
hOldPen = (HPEN)SelectObject(hdc, hPen);
hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
if (pCardBack->bSelected)
{
hPen = CreatePen(PS_SOLID, 2, RGB(0,0,0));
}
else
{
DWORD Face = GetSysColor(COLOR_3DFACE);
hPen = CreatePen(PS_SOLID, 2, Face);
}
Rectangle(hdc,
rc.left+1,
rc.top+1,
rc.right,
rc.bottom);
GetClientRect(hwnd, &rc);
hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
hOldPen = (HPEN)SelectObject(hdc, hPen);
hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
StretchBlt(hdc,
2,
2,
CARDBACK_OPTIONS_WIDTH,
CARDBACK_OPTIONS_HEIGHT,
__hdcCardBitmaps,
pCardBack->hdcNum * __cardwidth,
0,
__cardwidth,
__cardheight,
SRCCOPY);
Rectangle(hdc, rc.left+1, rc.top+1, rc.right, rc.bottom);
SelectObject(hdc, hOldPen);
SelectObject(hdc, hOldBrush);
StretchBlt(hdc,
2,
2,
CARDBACK_OPTIONS_WIDTH,
CARDBACK_OPTIONS_HEIGHT,
__hdcCardBitmaps,
pCardBack->hdcNum * __cardwidth,
0,
__cardwidth,
__cardheight,
SRCCOPY);
EndPaint(hwnd, &ps);
SelectObject(hdc, hOldPen);
SelectObject(hdc, hOldBrush);
EndPaint(hwnd, &ps);
break;
break;
}
case WM_LBUTTONDOWN:
@@ -218,73 +224,86 @@ LRESULT CALLBACK CardImageWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
break;
}
return CallWindowProc(hOldProc, hwnd, msg, wParam, lParam);
return CallWindowProc(hOldProc,
hwnd,
msg,
wParam,
lParam);
}
INT_PTR CALLBACK CardBackDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
INT_PTR CALLBACK CardBackDlgProc(HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
static PCARDBACK pCardBacks = NULL;
switch (uMsg)
{
case WM_INITDIALOG:
case WM_INITDIALOG:
{
INT i, c;
SIZE_T size = sizeof(CARDBACK) * NUM_CARDBACKS;
pCardBacks = (PCARDBACK)HeapAlloc(GetProcessHeap(),
0,
size);
for (i = 0, c = CARDBACK_START; c <= CARDBACK_END; i++, c++)
{
INT i, c;
SIZE_T size = sizeof(CARDBACK) * NUM_CARDBACKS;
pCardBacks[i].hSelf = GetDlgItem(hDlg, c);
pCardBacks[i].bSelected = FALSE;
pCardBacks[i].hdcNum = CARDBACK_RES_START + i;
pCardBacks[i].imgNum = i + 1;
pCardBacks[i].hOldProc = (WNDPROC)SetWindowLongPtr(pCardBacks[i].hSelf,
GWLP_WNDPROC,
(LONG_PTR)CardImageWndProc);
pCardBacks = (PCARDBACK)HeapAlloc(GetProcessHeap(), 0, size);
SetWindowLongPtr(pCardBacks[i].hSelf,
GWL_USERDATA,
(LONG_PTR)&pCardBacks[i]);
}
if (!pCardBacks)
return FALSE;
return TRUE;
}
for (i = 0, c = CARDBACK_START; c <= CARDBACK_END; i++, c++)
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
INT i, num = 0;
for (i = 0; i < NUM_CARDBACKS; i++)
{
pCardBacks[i].hSelf = GetDlgItem(hDlg, c);
pCardBacks[i].bSelected = FALSE;
pCardBacks[i].hdcNum = CARDBACK_RES_START + i;
pCardBacks[i].imgNum = i + 1;
pCardBacks[i].hOldProc = (WNDPROC)SetWindowLongPtr(pCardBacks[i].hSelf,
GWLP_WNDPROC,
(LONG_PTR)CardImageWndProc);
SetWindowLongPtr(pCardBacks[i].hSelf, GWL_USERDATA, (LONG_PTR)&pCardBacks[i]);
if (pCardBacks[i].bSelected)
{
num = pCardBacks[i].imgNum;
}
}
EndDialog(hDlg, LOWORD(wParam) == IDOK ? num : FALSE);
HeapFree(GetProcessHeap(), 0, pCardBacks);
return TRUE;
}
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
if (HIWORD(wParam) == STN_CLICKED)
{
INT i;
RECT rc;
for (i = 0; i < NUM_CARDBACKS; i++)
{
INT i, num = 0;
for (i = 0; i < NUM_CARDBACKS; i++)
if (pCardBacks[i].hSelf == (HWND)lParam)
{
if (pCardBacks[i].bSelected)
{
num = pCardBacks[i].imgNum;
}
pCardBacks[i].bSelected = TRUE;
}
else
pCardBacks[i].bSelected = FALSE;
EndDialog(hDlg, LOWORD(wParam) == IDOK ? num : FALSE);
HeapFree(GetProcessHeap(), 0, pCardBacks);
return TRUE;
GetClientRect(pCardBacks[i].hSelf, &rc);
InvalidateRect(pCardBacks[i].hSelf, &rc, TRUE);
}
if (HIWORD(wParam) == STN_CLICKED)
{
INT i;
RECT rc;
for (i = 0; i < NUM_CARDBACKS; i++)
{
pCardBacks[i].bSelected = pCardBacks[i].hSelf == (HWND)lParam;
GetClientRect(pCardBacks[i].hSelf, &rc);
InvalidateRect(pCardBacks[i].hSelf, &rc, TRUE);
}
break;
}
break;
}
}
return FALSE;
@@ -295,7 +314,10 @@ VOID ShowDeckOptionsDlg(HWND hwnd)
{
INT cardBack;
if ((cardBack = DialogBox(hInstance, MAKEINTRESOURCE(IDD_CARDBACK), hwnd, CardBackDlgProc)))
if ((cardBack = DialogBox(hInstance,
MAKEINTRESOURCE(IDD_CARDBACK),
hwnd,
CardBackDlgProc)))
{
SpiderWnd.SetBackCardIdx(CARDBACK_RES_START + (cardBack - 1));
SpiderWnd.Redraw();
@@ -306,7 +328,7 @@ LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static int nWidth, nHeight;
switch (iMsg)
switch(iMsg)
{
case WM_CREATE:
{
@@ -347,27 +369,27 @@ LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
}
case WM_COMMAND:
switch (LOWORD(wParam))
switch(LOWORD(wParam))
{
case IDM_GAME_NEW:
NewGame();
return 0;
case IDM_GAME_NEW:
NewGame();
return 0;
case IDM_GAME_DECK:
ShowDeckOptionsDlg(hwnd);
return 0;
case IDM_GAME_DECK:
ShowDeckOptionsDlg(hwnd);
return 0;
case IDM_HELP_CONTENTS:
WinHelp(hwnd, szHelpPath, HELP_CONTENTS, 0);//HELP_KEY, (DWORD)"How to play");
return 0;
case IDM_HELP_CONTENTS:
WinHelp(hwnd, szHelpPath, HELP_CONTENTS, 0);//HELP_KEY, (DWORD)"How to play");
return 0;
case IDM_HELP_ABOUT:
MessageBox(hwnd, MsgAbout, szAppName, MB_OK|MB_ICONINFORMATION);
return 0;
case IDM_HELP_ABOUT:
MessageBox(hwnd, MsgAbout, szAppName, MB_OK|MB_ICONINFORMATION);
return 0;
case IDM_GAME_EXIT:
PostMessage(hwnd, WM_CLOSE, 0, 0);
return 0;
case IDM_GAME_EXIT:
PostMessage(hwnd, WM_CLOSE, 0, 0);
return 0;
}
return 0;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -492,8 +492,6 @@ WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
if (!ShellExecuteEx(&shInputDll))
MessageBox(hwnd, _T("Can't start input.dll"), NULL, MB_OK | MB_ICONERROR);
return 0;
}
default:

View File

@@ -1,71 +0,0 @@
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
IDC_MAGNIFIER MENU
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "&Ukončit", IDM_EXIT
MENUITEM "&Možnosti", IDM_OPTIONS
MENUITEM SEPARATOR
MENUITEM "&O programu", IDM_ABOUT
END
END
IDC_MAGNIFIER ACCELERATORS
BEGIN
"?", IDM_ABOUT, ASCII, ALT
"/", IDM_ABOUT, ASCII, ALT
END
IDD_ABOUTBOX DIALOGEX 22, 17, 220, 75
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_CAPTION | WS_SYSMENU
CAPTION "O programu"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
ICON IDI_ICON, IDC_MYICON, 14, 9, 20, 20
LTEXT "Lupa verze 1.0", IDC_STATIC, 49, 10, 119, 8, SS_NOPREFIX
LTEXT "Copyright (C) 2007 Marc Piulachs (marc.piulachs@codexchange.net)", IDC_STATIC, 48, 24, 125, 22
PUSHBUTTON "OK", IDOK, 162, 48, 50, 14
END
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Nastavení Lupy"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK", IDOK, 96, 161, 50, 14
PUSHBUTTON "&Nápověda", IDC_BUTTON_HELP, 38, 161, 50, 14
LTEXT "Úrověň &zvětšení:", IDC_STATIC, 6, 8, 68, 8
COMBOBOX IDC_ZOOM, 72, 6, 63, 66, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
GROUPBOX "Sledování", IDC_STATIC, 7, 25, 139, 59
GROUPBOX "Zobrazení", IDC_STATIC, 7, 87, 139, 57
CONTROL "Sledovat &myš", IDC_FOLLOWMOUSECHECK, "Button",
BS_AUTOCHECKBOX | WS_TABSTOP, 18, 42, 114, 10
CONTROL "Sledovat &klávesnici", IDC_FOLLOWKEYBOARDCHECK, "Button",
BS_AUTOCHECKBOX | WS_TABSTOP, 18, 54, 114, 10
CONTROL "Sledovat ú&pravu textu", IDC_FOLLOWTEXTEDITINGCHECK, "Button",
BS_AUTOCHECKBOX | WS_TABSTOP, 18, 66, 114, 10
CONTROL "&Invertovat barvy", IDC_INVERTCOLORSCHECK, "Button",
BS_AUTOCHECKBOX | WS_TABSTOP, 18, 102, 114, 10
CONTROL "&Spustit minimalizované", IDC_STARTMINIMIZEDCHECK, "Button",
BS_AUTOCHECKBOX | WS_TABSTOP, 18, 114, 114, 10
CONTROL "&Zobrazit lupu", IDC_SHOWMAGNIFIERCHECK, "Button",
BS_AUTOCHECKBOX | WS_TABSTOP, 18, 126, 114, 10
END
IDD_WARNINGDIALOG DIALOGEX 0, 0, 250, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
CAPTION "ReactOS Lupa"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
ICON IDI_ICON, IDC_STATIC, 7, 17, 20, 20
LTEXT "Program Lupa poskytuje základní funkčnost pro lehce zrakově postižené. Většina uživatelů s poškozeným zrakem bude pro každodenní použití potřebovat program s více funkcemi.", IDC_STATIC, 36, 7, 207, 33
CONTROL "Tuto zprávu již nezobrazovat", IDC_SHOWWARNINGCHECK, "Button",
BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
END
STRINGTABLE
BEGIN
IDS_APP_TITLE "Lupa"
END

View File

@@ -21,9 +21,6 @@ IDI_ICON ICON "res/magnify.ico"
#ifdef LANGUAGE_BG_BG
#include "lang/bg-BG.rc"
#endif
#ifdef LANGUAGE_CS_CZ
#include "lang/cs-CZ.rc"
#endif
#ifdef LANGUAGE_DE_DE
#include "lang/de-DE.rc"
#endif

View File

@@ -9,7 +9,7 @@ IDM_CONSOLE_SMALL MENU
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "Nový\tCtrl+N", IDM_FILE_NEW
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
MENUITEM "&Otevřít...\tCtrl+O", IDM_FILE_OPEN
MENUITEM SEPARATOR
MENUITEM "Uk&ončit\tAlt+F4", IDM_FILE_EXIT
@@ -24,16 +24,16 @@ IDM_CONSOLE_LARGE MENU
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "Nový\tCtrl+N", IDM_FILE_NEW
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
MENUITEM "&Otevřít...\tCtrl+O", IDM_FILE_OPEN
MENUITEM "&Uložiť", IDM_FILE_SAVE
MENUITEM "Uložit j&ako...", IDM_FILE_SAVEAS
MENUITEM SEPARATOR
MENUITEM "Uk&ončit\tAlt+F4", IDM_FILE_EXIT
END
POPUP "&Okna"
POPUP "&Windows"
BEGIN
MENUITEM "Seznam", IDM_WINDOWS_LIST
MENUITEM "List", IDM_WINDOWS_LIST
END
POPUP "&Nápověda"
BEGIN

View File

@@ -49,14 +49,14 @@ END
STRINGTABLE
BEGIN
IDS_MODE_UNKNOWN "Neznámý"
IDS_MODE_OPEN "Otevřeno"
IDS_MODE_STOP "Zastaveno"
IDS_MODE_PLAY "Přehrávání"
IDS_MODE_PAUSE "Pozastaveno"
IDS_MODE_RECORD "Záznam"
IDS_MODE_SEEK "Hledám"
IDS_MODE_NOT_READY "Nepřipraveno"
IDS_MODE_UNKNOWN "Unknown"
IDS_MODE_OPEN "Opened"
IDS_MODE_STOP "Stopped"
IDS_MODE_PLAY "Playing"
IDS_MODE_PAUSE "Paused"
IDS_MODE_RECORD "Recording"
IDS_MODE_SEEK "Seeking"
IDS_MODE_NOT_READY "Not ready"
IDS_ALL_TYPES_FILTER "Všechny podporované"
IDS_TOOLTIP_PLAY "Přehrát"
IDS_TOOLTIP_STOP "Zastavit"
@@ -65,7 +65,7 @@ BEGIN
IDS_TOOLTIP_SEEKBACK "Posunout zpět"
IDS_TOOLTIP_SEEKFORW "Posunout vpřed"
IDS_TOOLTIP_FORWARD "Přeskočit vpřed"
IDS_TOOLTIP_PAUSE "Pozastavit"
IDS_TOOLTIP_PAUSE "Pause"
IDS_APPTITLE "ReactOS Přehrávač multimédií"
IDS_PLAY "Přehrát"
IDS_DEFAULTMCIERRMSG "Pro tuto chybu není dostupný žádný popis."

View File

@@ -124,6 +124,7 @@ VOID FreeLogFilterList(VOID);
ATOM MyRegisterClass(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);
VOID ExitInstance(HINSTANCE);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR EventLogProperties(HINSTANCE, HWND, PEVENTLOGFILTER);
INT_PTR CALLBACK EventDetails(HWND, UINT, WPARAM, LPARAM);
@@ -226,6 +227,8 @@ Cleanup:
if (hStartStopEnumEvent)
CloseHandle(hStartStopEnumEvent);
ExitInstance(hInstance);
Quit:
FreeLibrary(hRichEdit);
@@ -1088,10 +1091,9 @@ Quit:
if (!Success)
{
if (pevlr->EventCategory != 0)
{
StringCchPrintfW(CategoryName, MAX_PATH, L"(%lu)", pevlr->EventCategory);
Success = TRUE;
}
else
LoadStringW(hInst, IDS_NONE, CategoryName, MAX_PATH);
}
return Success;
@@ -1261,30 +1263,18 @@ GetEventType(IN WORD dwEventType,
BOOL
GetEventUserName(IN PEVENTLOGRECORD pelr,
IN OUT PSID *pLastSid,
OUT PWCHAR pszUser) // TODO: Add IN DWORD BufLen
{
PSID pCurrentSid;
PSID pSid;
PWSTR StringSid;
WCHAR szName[1024];
WCHAR szDomain[1024];
SID_NAME_USE peUse;
DWORD cchName = ARRAYSIZE(szName);
DWORD cchDomain = ARRAYSIZE(szDomain);
BOOL Success = FALSE;
/* Point to the SID */
pCurrentSid = (PSID)((LPBYTE)pelr + pelr->UserSidOffset);
if (!IsValidSid(pCurrentSid))
{
*pLastSid = NULL;
return FALSE;
}
else if (*pLastSid && EqualSid(*pLastSid, pCurrentSid))
{
return TRUE;
}
pSid = (PSID)((LPBYTE)pelr + pelr->UserSidOffset);
/* User SID */
if (pelr->UserSidLength > 0)
@@ -1296,7 +1286,7 @@ GetEventUserName(IN PEVENTLOGRECORD pelr,
* 'pszUser', otherwise we return an error.
*/
if (LookupAccountSidW(NULL, // FIXME: Use computer name? From the particular event?
pCurrentSid,
pSid,
szName,
&cchName,
szDomain,
@@ -1304,11 +1294,13 @@ GetEventUserName(IN PEVENTLOGRECORD pelr,
&peUse))
{
StringCchCopyW(pszUser, MAX_PATH, szName);
Success = TRUE;
return TRUE;
}
else if (ConvertSidToStringSidW(pCurrentSid, &StringSid))
else if (ConvertSidToStringSidW(pSid, &StringSid))
{
/* Copy the string only if the user-provided buffer is big enough */
BOOL Success;
/* Copy the string only if the user-provided buffer is small enough */
if (wcslen(StringSid) + 1 <= MAX_PATH) // + 1 for NULL-terminator
{
StringCchCopyW(pszUser, MAX_PATH, StringSid);
@@ -1322,12 +1314,12 @@ GetEventUserName(IN PEVENTLOGRECORD pelr,
/* Free the allocated buffer */
LocalFree(StringSid);
return Success;
}
}
*pLastSid = Success ? pCurrentSid : NULL;
return Success;
return FALSE;
}
@@ -1430,18 +1422,14 @@ EnumEventsThread(IN LPVOID lpParameter)
ULONG LogIndex;
HANDLE hEventLog;
PEVENTLOGRECORD pEvlr = NULL;
PBYTE pEvlrEnd;
PBYTE pEvlrBuffer;
DWORD dwWanted, dwRead, dwNeeded, dwStatus = ERROR_SUCCESS;
PEVENTLOGRECORD pevlr, pevlrTmp = NULL;
DWORD dwRead, dwNeeded; // , dwThisRecord;
DWORD dwTotalRecords = 0, dwCurrentRecord = 0;
DWORD dwFlags, dwMaxLength;
size_t cchRemaining;
LPWSTR lpszSourceName;
LPWSTR lpszComputerName;
BOOL bResult = TRUE; /* Read succeeded */
HANDLE hProcessHeap = GetProcessHeap();
PSID pLastSid = NULL;
UINT uStep = 0, uStepAt = 0, uPos = 0;
@@ -1453,9 +1441,7 @@ EnumEventsThread(IN LPVOID lpParameter)
WCHAR szEventTypeText[MAX_LOADSTRING];
WCHAR szCategoryID[MAX_PATH];
WCHAR szUsername[MAX_PATH];
WCHAR szNoUsername[MAX_PATH];
WCHAR szCategory[MAX_PATH];
WCHAR szNoCategory[MAX_PATH];
PWCHAR lpTitleTemplateEnd;
SYSTEMTIME time;
@@ -1514,119 +1500,131 @@ EnumEventsThread(IN LPVOID lpParameter)
}
/* Set up the event records cache */
g_RecordPtrs = HeapAlloc(hProcessHeap, HEAP_ZERO_MEMORY, dwTotalRecords * sizeof(*g_RecordPtrs));
g_RecordPtrs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwTotalRecords * sizeof(*g_RecordPtrs));
if (!g_RecordPtrs)
{
// ShowLastWin32Error();
goto Quit;
goto Cleanup;
}
g_TotalRecords = dwTotalRecords;
if (WaitForSingleObject(hStopEnumEvent, 0) == WAIT_OBJECT_0)
goto Quit;
LoadStringW(hInst, IDS_NOT_AVAILABLE, szNoUsername, ARRAYSIZE(szNoUsername));
LoadStringW(hInst, IDS_NONE, szNoCategory, ARRAYSIZE(szNoCategory));
ProgressBar_SetRange(hwndStatusProgress, MAKELPARAM(0, 100));
uStepAt = (dwTotalRecords / 100) + 1;
dwFlags = EVENTLOG_SEQUENTIAL_READ | (NewestEventsFirst ? EVENTLOG_FORWARDS_READ : EVENTLOG_BACKWARDS_READ);
dwFlags = EVENTLOG_SEQUENTIAL_READ |
(NewestEventsFirst ? EVENTLOG_FORWARDS_READ
: EVENTLOG_BACKWARDS_READ);
/* 0x7ffff is the maximum buffer size ReadEventLog will accept */
dwWanted = 0x7ffff;
pEvlr = HeapAlloc(hProcessHeap, 0, dwWanted);
if (!pEvlr)
goto Quit;
while (dwStatus == ERROR_SUCCESS)
while (dwCurrentRecord < dwTotalRecords)
{
bResult = ReadEventLogW(hEventLog, dwFlags, 0, pEvlr, dwWanted, &dwRead, &dwNeeded);
dwStatus = GetLastError();
//
// NOTE: We always allocate the minimum size for 1 record, and if
// the ReadEventLog call fails (it always will anyway), we reallocate
// the record pointer to be able to hold just 1 record, and then we
// redo that for each event.
// This is obviously not at all efficient (in terms of numbers of
// ReadEventLog calls), since ReadEventLog can fill the buffer with
// as many records they can fit completely in the buffer.
//
if (!bResult && dwStatus == ERROR_INSUFFICIENT_BUFFER)
pevlr = HeapAlloc(GetProcessHeap(), 0, sizeof(*pevlr));
if (!pevlr)
{
pEvlr = HeapReAlloc(hProcessHeap, 0, pEvlr, dwNeeded);
dwWanted = dwNeeded;
if (!pEvlr)
break;
bResult = ReadEventLogW(hEventLog, dwFlags, 0, pEvlr, dwNeeded, &dwRead, &dwNeeded);
if (!bResult)
break;
}
else if (!bResult)
{
/* exit on other errors (ERROR_HANDLE_EOF) */
break;
}
pEvlrBuffer = (LPBYTE)pEvlr;
pEvlrEnd = pEvlrBuffer + dwRead;
while (pEvlrBuffer < pEvlrEnd)
{
PEVENTLOGRECORD pEvlrTmp = (PEVENTLOGRECORD)pEvlrBuffer;
PWSTR lpszUsername, lpszCategoryName;
/* Cannot allocate, just skip the event */
g_RecordPtrs[dwCurrentRecord] = NULL;
// --dwTotalRecords;
continue;
}
g_RecordPtrs[dwCurrentRecord] = pevlr;
bResult = ReadEventLogW(hEventLog, // Event log handle
dwFlags, // Sequential read
0, // Ignored for sequential read
pevlr, // Pointer to buffer
sizeof(*pevlr), // Size of buffer
&dwRead, // Number of bytes read
&dwNeeded); // Bytes in the next record
if (!bResult && (GetLastError () == ERROR_INSUFFICIENT_BUFFER))
{
pevlrTmp = HeapReAlloc(GetProcessHeap(), 0, pevlr, dwNeeded);
if (!pevlrTmp)
{
/* Cannot reallocate, just skip the event */
HeapFree(GetProcessHeap(), 0, pevlr);
g_RecordPtrs[dwCurrentRecord] = NULL;
// --dwTotalRecords;
continue;
}
pevlr = pevlrTmp;
g_RecordPtrs[dwCurrentRecord] = pevlr;
ReadEventLogW(hEventLog, // event log handle
dwFlags, // read flags
0, // offset; default is 0
pevlr, // pointer to buffer
dwNeeded, // size of buffer
&dwRead, // number of bytes read
&dwNeeded); // bytes in next record
}
while (dwRead > 0)
{
// ProgressBar_StepIt(hwndStatusProgress);
uStep++;
if (uStep % uStepAt == 0)
if(uStep % uStepAt == 0)
{
++uPos;
ProgressBar_SetPos(hwndStatusProgress, uPos);
}
if (WaitForSingleObject(hStopEnumEvent, 0) == WAIT_OBJECT_0)
if (WaitForSingleObject(hStopEnumEvent, 0) == WAIT_OBJECT_0)
goto Quit;
/* Filter by event type */
if (!FilterByType(EventLogFilter, pEvlrTmp))
if (!FilterByType(EventLogFilter, pevlr))
goto SkipEvent;
/* Get the event source name and filter it */
lpszSourceName = (LPWSTR)(pEvlrBuffer + sizeof(EVENTLOGRECORD));
lpszSourceName = (LPWSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD));
if (!FilterByString(EventLogFilter->Sources, lpszSourceName))
goto SkipEvent;
/* Get the computer name and filter it */
lpszComputerName = (LPWSTR)(pEvlrBuffer + sizeof(EVENTLOGRECORD) + (wcslen(lpszSourceName) + 1) * sizeof(WCHAR));
lpszComputerName = (LPWSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD) + (wcslen(lpszSourceName) + 1) * sizeof(WCHAR));
if (!FilterByString(EventLogFilter->ComputerNames, lpszComputerName))
goto SkipEvent;
/* Compute the event time */
EventTimeToSystemTime(pEvlrTmp->TimeWritten, &time);
EventTimeToSystemTime(pevlr->TimeWritten, &time);
GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &time, NULL, szLocalDate, ARRAYSIZE(szLocalDate));
GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &time, NULL, szLocalTime, ARRAYSIZE(szLocalTime));
/* Get the username that generated the event, and filter it */
lpszUsername = GetEventUserName(pEvlrTmp, &pLastSid, szUsername) ? szUsername : szNoUsername;
LoadStringW(hInst, IDS_NOT_AVAILABLE, szUsername, ARRAYSIZE(szUsername));
LoadStringW(hInst, IDS_NONE, szCategory, ARRAYSIZE(szCategory));
if (!FilterByString(EventLogFilter->Users, lpszUsername))
/* Get the username that generated the event, and filter it */
GetEventUserName(pevlr, szUsername);
if (!FilterByString(EventLogFilter->Users, szUsername))
goto SkipEvent;
// TODO: Filter by event ID and category
GetEventType(pEvlrTmp->EventType, szEventTypeText);
lpszCategoryName = GetEventCategory(EventLog->LogName, lpszSourceName, pEvlrTmp, szCategory) ? szCategory : szNoCategory;
GetEventType(pevlr->EventType, szEventTypeText);
GetEventCategory(EventLog->LogName, lpszSourceName, pevlr, szCategory);
StringCbPrintfW(szEventID, sizeof(szEventID), L"%u", (pEvlrTmp->EventID & 0xFFFF));
StringCbPrintfW(szCategoryID, sizeof(szCategoryID), L"%u", pEvlrTmp->EventCategory);
g_RecordPtrs[dwCurrentRecord] = HeapAlloc(hProcessHeap, 0, pEvlrTmp->Length);
RtlCopyMemory(g_RecordPtrs[dwCurrentRecord], pEvlrTmp, pEvlrTmp->Length);
StringCbPrintfW(szEventID, sizeof(szEventID), L"%u", (pevlr->EventID & 0xFFFF));
StringCbPrintfW(szCategoryID, sizeof(szCategoryID), L"%u", pevlr->EventCategory);
lviEventItem.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM;
lviEventItem.iItem = 0;
lviEventItem.iSubItem = 0;
lviEventItem.lParam = (LPARAM)g_RecordPtrs[dwCurrentRecord];
lviEventItem.lParam = (LPARAM)pevlr;
lviEventItem.pszText = szEventTypeText;
switch (pEvlrTmp->EventType)
switch (pevlr->EventType)
{
case EVENTLOG_SUCCESS:
case EVENTLOG_INFORMATION_TYPE:
@@ -1655,22 +1653,21 @@ EnumEventsThread(IN LPVOID lpParameter)
ListView_SetItemText(hwndListView, lviEventItem.iItem, 1, szLocalDate);
ListView_SetItemText(hwndListView, lviEventItem.iItem, 2, szLocalTime);
ListView_SetItemText(hwndListView, lviEventItem.iItem, 3, lpszSourceName);
ListView_SetItemText(hwndListView, lviEventItem.iItem, 4, lpszCategoryName);
ListView_SetItemText(hwndListView, lviEventItem.iItem, 4, szCategory);
ListView_SetItemText(hwndListView, lviEventItem.iItem, 5, szEventID);
ListView_SetItemText(hwndListView, lviEventItem.iItem, 6, lpszUsername);
ListView_SetItemText(hwndListView, lviEventItem.iItem, 6, szUsername);
ListView_SetItemText(hwndListView, lviEventItem.iItem, 7, lpszComputerName);
SkipEvent:
pEvlrBuffer += pEvlrTmp->Length;
dwCurrentRecord++;
dwRead -= pevlr->Length;
pevlr = (PEVENTLOGRECORD)((LPBYTE) pevlr + pevlr->Length);
}
dwCurrentRecord++;
}
Quit:
if (pEvlr)
HeapFree(hProcessHeap, 0, pEvlr);
/* Close the event log */
CloseEventLog(hEventLog);
@@ -2408,6 +2405,135 @@ FreeLogFilterList(VOID)
return;
}
/*
* ListView subclassing to handle WM_PAINT messages before and after they are
* handled by the ListView window itself. We cannot use at this level the
* custom-drawn notifications that are more suitable for drawing elements
* inside the ListView.
*/
static WNDPROC orgListViewWndProc = NULL;
static BOOL IsLoading = FALSE;
LRESULT CALLBACK
ListViewWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case LVM_PROGRESS:
{
/* TRUE: Create the dialog; FALSE: Destroy the dialog */
IsLoading = !!(BOOL)lParam;
return IsLoading;
}
case WM_PAINT:
{
/* This code is adapted from: http://www.codeproject.com/Articles/216/Indicating-an-empty-ListView */
int nItemCount;
PAINTSTRUCT ps;
HDC hDC;
HWND hwndHeader;
RECT rc, rcH;
COLORREF crTextOld, crTextBkOld;
NONCLIENTMETRICSW ncm;
HFONT hFont, hFontOld;
LPWSTR lpszString;
nItemCount = ListView_GetItemCount(hWnd);
if (!IsLoading && nItemCount > 0)
break;
/*
* NOTE:
* We could have used lpNMCustomDraw->nmcd.rc for the rectangle,
* but this one actually holds the rectangle of the list view
* that is being currently repainted, so that it can be smaller
* than the list view proper. This is especially true when using
* COMCTL32.DLL version <= 6.0 .
*/
GetClientRect(hWnd, &rc);
hwndHeader = ListView_GetHeader(hWnd);
if (hwndHeader)
{
/* Note that we could also use Header_GetItemRect() */
GetClientRect(hwndHeader, &rcH);
rc.top += rcH.bottom;
}
/* Add some space between the top of the list view and the text */
rc.top += 10;
BeginPaint(hWnd, &ps);
/*
* NOTE: Using a secondary hDC (and not the ps.hdc) gives the strange
* property that the text is always recentered on the current view of
* the window, instead of being scrolled together with the contents of
* the list view...
*/
// hDC = ps.hdc;
hDC = GetDC(hWnd);
/*
* NOTE: We could have kept lpNMCustomDraw->clrText and
* lpNMCustomDraw->clrTextBk, but they usually do not contain
* the correct default colors for the items / default text.
*/
crTextOld =
SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT));
crTextBkOld =
SetBkColor(hDC, GetSysColor(COLOR_WINDOW));
// FIXME: Cache the font?
ncm.cbSize = sizeof(ncm);
hFont = NULL;
if (SystemParametersInfoW(SPI_GETNONCLIENTMETRICS,
sizeof(ncm), &ncm, 0))
{
hFont = CreateFontIndirectW(&ncm.lfMessageFont);
}
if (!hFont)
hFont = GetStockFont(DEFAULT_GUI_FONT);
hFontOld = (HFONT)SelectObject(hDC, hFont);
FillRect(hDC, &rc, GetSysColorBrush(COLOR_WINDOW));
if (nItemCount <= 0)
lpszString = szEmptyList;
else // if (IsLoading)
lpszString = szLoadingWait;
DrawTextW(hDC,
lpszString,
-1,
&rc,
DT_CENTER | DT_WORDBREAK | DT_NOPREFIX | DT_NOCLIP);
SelectObject(hDC, hFontOld);
if (hFont)
DeleteObject(hFont);
SetBkColor(hDC, crTextBkOld);
SetTextColor(hDC, crTextOld);
ReleaseDC(hWnd, hDC);
EndPaint(hWnd, &ps);
break;
}
// case WM_ERASEBKGND:
// break;
}
/* Continue with default message processing */
return CallWindowProcW(orgListViewWndProc, hWnd, uMsg, wParam, lParam);
}
BOOL
InitInstance(HINSTANCE hInstance,
int nCmdShow)
@@ -2622,6 +2748,11 @@ InitInstance(HINSTANCE hInstance,
lvc.pszText = szTemp;
ListView_InsertColumn(hwndListView, 7, &lvc);
/* Subclass the ListView */
// orgListViewWndProc = SubclassWindow(hwndListView, ListViewWndProc);
orgListViewWndProc = (WNDPROC)(LONG_PTR)GetWindowLongPtrW(hwndListView, GWLP_WNDPROC);
SetWindowLongPtrW(hwndListView, GWLP_WNDPROC, (LONG_PTR)ListViewWndProc);
/* Initialize the save Dialog */
ZeroMemory(&sfn, sizeof(sfn));
ZeroMemory(szSaveFilter, sizeof(szSaveFilter));
@@ -2642,6 +2773,15 @@ InitInstance(HINSTANCE hInstance,
return TRUE;
}
VOID
ExitInstance(HINSTANCE hInstance)
{
/* Restore the original ListView WndProc */
// SubclassWindow(hwndListView, orgListViewWndProc);
SetWindowLongPtrW(hwndListView, GWLP_WNDPROC, (LONG_PTR)orgListViewWndProc);
orgListViewWndProc = NULL;
}
VOID ResizeWnd(INT cx, INT cy)
{
HDWP hdwp;

View File

@@ -4,28 +4,28 @@ IDM_EVENTVWR MENU
BEGIN
POPUP "&Protokol"
BEGIN
MENUITEM "&Otevřít...", IDM_OPEN_EVENTLOG
MENUITEM "Uložit &Protokol jako...", IDM_SAVE_EVENTLOG
MENUITEM "&Zavřít", IDM_CLOSE_EVENTLOG
MENUITEM "&Open...", IDM_OPEN_EVENTLOG
MENUITEM "Save &Event Log as...", IDM_SAVE_EVENTLOG
MENUITEM "&Close", IDM_CLOSE_EVENTLOG
MENUITEM SEPARATOR
MENUITEM "&Odstranit události", IDM_CLEAR_EVENTS
MENUITEM "&Přejmenovat\tF2", IDM_RENAME_EVENTLOG
MENUITEM "Nastavení protokolování...", IDM_EVENTLOG_SETTINGS
MENUITEM "&Rename\tF2", IDM_RENAME_EVENTLOG
MENUITEM "Log Se&ttings...", IDM_EVENTLOG_SETTINGS
MENUITEM SEPARATOR
MENUITEM "&Konec", IDM_EXIT
END
POPUP "&Zobrazit"
BEGIN
MENUITEM "&Od nejnovějšího", IDM_LIST_NEWEST
MENUITEM "Od &nejstaršího", IDM_LIST_OLDEST
MENUITEM "&Newest first", IDM_LIST_NEWEST
MENUITEM "&Oldest first", IDM_LIST_OLDEST
MENUITEM SEPARATOR
MENUITEM "&Podrobnosti...\tEnter", IDM_EVENT_DETAILS
MENUITEM "&Details...\tEnter", IDM_EVENT_DETAILS
MENUITEM SEPARATOR
MENUITEM "&Obnovit\tF5", IDM_REFRESH
END
POPUP "&Možnosti"
BEGIN
MENUITEM "&Zobrazit podrobnosti", IDM_SHOW_EVENT_DETAILS_VIEW
MENUITEM "&Show event details view", IDM_SHOW_EVENT_DETAILS_VIEW
END
POPUP "&Nápověda"
BEGIN
@@ -73,7 +73,7 @@ BEGIN
LTEXT "&Uživatel:", IDC_STATIC, 8, 35, 36, 8
EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
LTEXT "P&očítač:", IDC_STATIC, 8, 45, 36, 8
EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
EDITTEXT IDC_EVENTCOMPUTERSTATIC, 46, 45, 52, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
PUSHBUTTON "", IDC_PREVIOUS, 230, 5, 28, 14, BS_ICON
PUSHBUTTON "", IDC_NEXT, 230, 21, 28, 14, BS_ICON
@@ -90,40 +90,40 @@ END
IDD_LOGPROPERTIES_GENERAL DIALOGEX 0, 0, 252, 234
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
CAPTION "Obecné"
CAPTION "General"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "&Zobrazovaný název:", IDC_STATIC, 7, 9, 60, 8
LTEXT "&Display name:", IDC_STATIC, 7, 9, 60, 8
EDITTEXT IDC_DISPLAYNAME, 67, 7, 178, 12, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
LTEXT "&Název protokolu:", IDC_STATIC, 7, 25, 60, 8
LTEXT "&Log name:", IDC_STATIC, 7, 25, 60, 8
EDITTEXT IDC_LOGNAME, 67, 23, 178, 12, ES_LEFT | ES_AUTOHSCROLL | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
LTEXT "Soubor &protokolu:", IDC_STATIC, 7, 41, 60, 8
LTEXT "Log &file:", IDC_STATIC, 7, 41, 60, 8
EDITTEXT IDC_LOGFILE, 67, 39, 178, 12, ES_LEFT | ES_AUTOHSCROLL | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
LTEXT "Velikost:", IDC_STATIC, 7, 57, 60, 8
LTEXT "Size:", IDC_STATIC, 7, 57, 60, 8
EDITTEXT IDC_SIZE_LABEL, 67, 57, 178, 12, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
LTEXT "Vytvořeno:", IDC_STATIC, 7, 69, 60, 8
LTEXT "Created:", IDC_STATIC, 7, 69, 60, 8
EDITTEXT IDC_CREATED_LABEL, 67, 69, 178, 12, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
LTEXT "Změněno:", IDC_STATIC, 7, 81, 60, 8
LTEXT "Modified:", IDC_STATIC, 7, 81, 60, 8
EDITTEXT IDC_MODIFIED_LABEL, 67, 81, 178, 12, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
LTEXT "Poslední přístup:", IDC_STATIC, 7, 93, 60, 8
LTEXT "Accessed:", IDC_STATIC, 7, 93, 60, 8
EDITTEXT IDC_ACCESSED_LABEL, 67, 93, 178, 12, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
GROUPBOX "Velikost výpisu", IDC_STATIC, 7, 106, 238, 99
LTEXT "&Maximální velikost:", IDC_STATIC, 17, 122, 58, 8
GROUPBOX "Log size", IDC_STATIC, 7, 106, 238, 99
LTEXT "&Maximum log size:", IDC_STATIC, 17, 122, 58, 8
EDITTEXT IDC_EDIT_MAXLOGSIZE, 80, 119, 40, 14, ES_LEFT | ES_NUMBER | WS_GROUP
CONTROL "", IDC_UPDOWN_MAXLOGSIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_NOTHOUSANDS | UDS_ALIGNRIGHT |
UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 120, 119, 10, 14
LTEXT "KB", IDC_STATIC, 130, 122, 20, 8
LTEXT "Pokud je dosažena maximální velikost:", IDC_STATIC, 17, 140, 219, 8
CONTROL "&Přepsat události podle potřeby", IDC_OVERWRITE_AS_NEEDED, "Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 17, 155, 219, 10
CONTROL "Př&epsat události starší než", IDC_OVERWRITE_OLDER_THAN, "Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 17, 168, 102, 10
LTEXT "When maximum log size is reached:", IDC_STATIC, 17, 140, 219, 8
CONTROL "&Overwrite events as needed", IDC_OVERWRITE_AS_NEEDED, "Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 17, 155, 219, 10
CONTROL "O&verwrite events older than", IDC_OVERWRITE_OLDER_THAN, "Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 17, 168, 102, 10
EDITTEXT IDC_EDIT_EVENTS_AGE, 122, 165, 35, 14, ES_LEFT | ES_NUMBER | WS_GROUP
CONTROL "", IDC_UPDOWN_EVENTS_AGE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT |
UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP, 157, 165, 10, 14
LTEXT "dny", IDC_STATIC, 162, 168, 20, 8
CONTROL "&Nepřepisovat události\n(vyčistit protokol ručně)", IDC_NO_OVERWRITE, "Button", BS_AUTORADIOBUTTON | BS_MULTILINE | WS_GROUP | WS_TABSTOP, 17, 180, 143, 20
PUSHBUTTON "&Obnovit výchozí", IDC_RESTOREDEFAULTS, 166, 183, 70, 14
AUTOCHECKBOX "&Užívá pomalé připojení", IDC_LOW_SPEED_CONNECTION, 7, 217, 167, 10
PUSHBUTTON "&Vyčistit", ID_CLEARLOG, 195, 213, 50, 14
LTEXT "days", IDC_STATIC, 162, 168, 20, 8
CONTROL "Do &not overwrite events\n(clear log manually)", IDC_NO_OVERWRITE, "Button", BS_AUTORADIOBUTTON | BS_MULTILINE | WS_GROUP | WS_TABSTOP, 17, 180, 143, 20
PUSHBUTTON "&Restore Defaults", IDC_RESTOREDEFAULTS, 166, 183, 70, 14
AUTOCHECKBOX "Using a lo&w-speed connection", IDC_LOW_SPEED_CONNECTION, 7, 217, 167, 10
PUSHBUTTON "&Clear Log", ID_CLEARLOG, 195, 213, 50, 14
END
STRINGTABLE
@@ -133,10 +133,10 @@ BEGIN
IDS_APP_TITLE_EX "%s - Protkol %s na \\\\"
IDS_STATUS_MSG "Počet událostí v protokolu %s: %lu (listed: %lu)"
IDS_LOADING_WAIT "Načítám protokol událostí. Prosím čekejte..."
IDS_NO_ITEMS "Žádné události v tomto výpisu." // "No events in this log."
IDS_EVENTLOG_SYSTEM "Systémové protokoly"
IDS_EVENTLOG_APP "Protokoly aplikací"
IDS_EVENTLOG_USER "Uživatelské protokoly"
IDS_NO_ITEMS "There are no items to show in this view." // "No events in this log."
IDS_EVENTLOG_SYSTEM "System Logs"
IDS_EVENTLOG_APP "Application Logs"
IDS_EVENTLOG_USER "User Logs"
IDS_EVENTSTRINGIDNOTFOUND "Popis ID události ( %lu ) zdroj ( %s ) nebyl nalezen. Místní počítač neobsahuje potřebné informace v registru nebo chybí DLL soubory pro zobrazení zpráv ze vzdáleného počítače.\n\nThe following information is part of the event:\n\n"
IDS_CLEAREVENTS_MSG "Chcete tento protokol před odstraněním uložit?"
IDS_SAVE_FILTER "Protokol událostí (*.evt)\0*.evt\0"
@@ -155,7 +155,7 @@ END
STRINGTABLE
BEGIN
IDS_BYTES_FORMAT "byty" // "%s bytes"
IDS_BYTES_FORMAT "bytes" // "%s bytes"
// "%1!ls! (%2!ls! bytes)"
END
@@ -173,15 +173,15 @@ END
STRINGTABLE
BEGIN
IDS_COPY "Typ události: %s\r\n\
Zdroj: %s\r\n\
Kategorie: %s\r\n\
ID: %s\r\n\
Datum: %s\r\n\
Čas: %s\r\n\
Uživatel: %s\r\n\
Počítač: %s\r\n\
Popis: \r\n%s"
IDS_COPY "Event Type: %s\r\n\
Event Source: %s\r\n\
Event Category: %s\r\n\
Event ID: %s\r\n\
Date: %s\r\n\
Time: %s\r\n\
User: %s\r\n\
Computer: %s\r\n\
Description:\r\n%s"
END
STRINGTABLE

View File

@@ -139,7 +139,7 @@ BEGIN
IDS_COPYRIGHT "Telif Hakkı: 2007 - Marc Piulachs (marc.piulachs@codexchange.net)"
IDS_APP_TITLE "Olay Görüntüleyicisi"
IDS_APP_TITLE_EX "%s - %s Oturum Aç \\\\"
IDS_STATUS_MSG "%s -> %lu olay var (dizelgelenmiş: %lu)"
IDS_STATUS_MSG "%s -> %lu olay var (listed: %lu)"
IDS_LOADING_WAIT "Olay kayıtları yükleniyor. Lütfen bekleyiniz..."
IDS_NO_ITEMS "Bu görünümde görüntülenecek bir öğe bile yok." // "No events in this log."
IDS_EVENTLOG_SYSTEM "Dizge Kayıtları"

View File

@@ -75,7 +75,7 @@ BEGIN
END
IDD_DLG_GENERAL DIALOGEX 6, 6, 253, 232
CAPTION "Obecné"
CAPTION "General"
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_VISIBLE | WS_DLGFRAME | WS_SYSMENU | WS_GROUP | WS_TABSTOP
BEGIN
@@ -102,52 +102,52 @@ BEGIN
END
IDD_LOGON DIALOGEX 6, 6, 253, 232
CAPTION "Přihlášení"
CAPTION "Log On"
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_VISIBLE | WS_DLGFRAME | WS_SYSMENU | WS_GROUP | WS_TABSTOP
BEGIN
LTEXT "Přihlásit jako:", IDC_STATIC, 7, 7, 238, 8
AUTORADIOBUTTON "&Místní systémový účet", IDC_LOGON_SYSTEMACCOUNT, 7, 22, 238, 10, BS_TOP | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP
AUTORADIOBUTTON "&Tento účets:", IDC_LOGON_THISACCOUNT, 7, 52, 60, 10, BS_TOP | BS_MULTILINE | WS_CHILD | WS_VISIBLE
AUTOCHECKBOX "Povolit &aplikaci používat plochu", IDC_LOGON_INTERACTIVE, 18, 34, 227, 10, WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | BS_TOP | BS_MULTILINE
LTEXT "Log on as:", IDC_STATIC, 7, 7, 238, 8
AUTORADIOBUTTON "&Local System account", IDC_LOGON_SYSTEMACCOUNT, 7, 22, 238, 10, BS_TOP | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP
AUTORADIOBUTTON "&This account:", IDC_LOGON_THISACCOUNT, 7, 52, 60, 10, BS_TOP | BS_MULTILINE | WS_CHILD | WS_VISIBLE
AUTOCHECKBOX "Allo&w service to interact with desktop", IDC_LOGON_INTERACTIVE, 18, 34, 227, 10, WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | BS_TOP | BS_MULTILINE
EDITTEXT IDC_LOGON_ACCOUNTNAME, 72, 50, 103, 14, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Procházet...", IDC_LOGON_SEARCH, 185, 50, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
LTEXT "&Heslo:", IDC_LOGON_PW1TEXT, 18, 71, 33, 8, WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_GROUP
PUSHBUTTON "&Browse...", IDC_LOGON_SEARCH, 185, 50, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
LTEXT "&Password:", IDC_LOGON_PW1TEXT, 18, 71, 33, 8, WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_GROUP
EDITTEXT IDC_LOGON_PASSWORD1, 72, 68, 104, 14, ES_LEFT | ES_PASSWORD | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
LTEXT "P&otvrdit heslo:", IDC_LOGON_PW2TEXT, 18, 84, 47, 18, WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_GROUP
LTEXT "&Confirm password:", IDC_LOGON_PW2TEXT, 18, 84, 47, 18, WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_GROUP
EDITTEXT IDC_LOGON_PASSWORD2, 72, 86, 104, 14, ES_LEFT | ES_PASSWORD | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
LTEXT "Tuto službu můžete povolit nebo zakázat pro nsáledující hardwarové profily:", IDC_STATIC, 7, 114, 210, 8, WS_CHILD | WS_VISIBLE | WS_GROUP
LTEXT "You can enable or disable this service for the hardware profiles listed below:", IDC_STATIC, 7, 114, 210, 8, WS_CHILD | WS_VISIBLE | WS_GROUP
CONTROL "", IDC_LOGON_HWPROFILE, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP | WS_TABSTOP, 7, 124, 238, 65
PUSHBUTTON "Po&volit", IDC_LOGON_HWENABLE, 116, 197, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
PUSHBUTTON "&Zakázat", IDC_LOGON_HWDISABLE, 185, 197, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
PUSHBUTTON "&Enable", IDC_LOGON_HWENABLE, 116, 197, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
PUSHBUTTON "&Disable", IDC_LOGON_HWDISABLE, 185, 197, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
END
IDD_RECOVERY DIALOGEX 6, 6, 253, 232
CAPTION "Obnove"
CAPTION "Recovery"
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_VISIBLE | WS_DLGFRAME | WS_SYSMENU | WS_GROUP | WS_TABSTOP
BEGIN
LTEXT "Zvolte, co dělat v případě, že služba selže.", IDC_STATIC, 7, 7, 238, 8
LTEXT "&První selhání:", IDC_STATIC, 7, 24, 92, 8
LTEXT "Select the computer's response if this service fails.", IDC_STATIC, 7, 7, 238, 8
LTEXT "&First failure:", IDC_STATIC, 7, 24, 92, 8
COMBOBOX IDC_FIRST_FAILURE, 104, 22, 141, 147, WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST
LTEXT "&Druhé selhání:", IDC_STATIC, 7, 41, 92, 8
LTEXT "&Second failure:", IDC_STATIC, 7, 41, 92, 8
COMBOBOX IDC_SECOND_FAILURE, 104, 39, 141, 147, WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST
LTEXT "&Následná selhání:", IDC_STATIC, 7, 58, 92, 8
LTEXT "Subsequent failures:", IDC_STATIC, 7, 58, 92, 8
COMBOBOX IDC_SUBSEQUENT_FAILURES, 104, 56, 141, 147, WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST
LTEXT "&Vymazat čítač selhání po:", IDC_STATIC, 7, 75, 72, 8
LTEXT "Reset fail c&ounter after:", IDC_STATIC, 7, 75, 72, 8
EDITTEXT IDC_RESET_TIME, 104, 73, 40, 13, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_LEFT | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "dnech", IDC_STATIC, 150, 75, 95, 8
LTEXT "Restartovat &službu po:", IDC_RESTART_TEXT1, 7, 92, 92, 8
LTEXT "days", IDC_STATIC, 150, 75, 95, 8
LTEXT "Restart ser&vice after:", IDC_RESTART_TEXT1, 7, 92, 92, 8
EDITTEXT IDC_RESTART_TIME, 104, 90, 40, 13, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_LEFT | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "minutách", IDC_RESTART_TEXT2, 150, 92, 95, 8
GROUPBOX "Spustit aplikaci", IDC_RUN_GROUPBOX, 7, 108, 238, 80
LTEXT "&Aplikace:", IDC_RUN_TEXT1, 14, 121, 168, 8
LTEXT "minutes", IDC_RESTART_TEXT2, 150, 92, 95, 8
GROUPBOX "Run program", IDC_RUN_GROUPBOX, 7, 108, 238, 80
LTEXT "&Program:", IDC_RUN_TEXT1, 14, 121, 168, 8
EDITTEXT IDC_PROGRAM, 14, 131, 165, 14
PUSHBUTTON "&Procházet...", IDC_BROWSE_PROGRAM, 180, 131, 58, 14
LTEXT "Pa&rametry příkazového řádku:", IDC_RUN_TEXT2, 14, 155, 108, 8
PUSHBUTTON "&Browse...", IDC_BROWSE_PROGRAM, 180, 131, 58, 14
LTEXT "&Command line parameters:", IDC_RUN_TEXT2, 14, 155, 108, 8
EDITTEXT IDC_PARAMETERS, 128, 152, 110, 14
AUTOCHECKBOX "Připojit počet selhání na &konec příkazu (/fail=%1%)", IDC_ADD_FAILCOUNT, 14, 171, 219, 10, WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_TOP | BS_MULTILINE
PUSHBUTTON "&Možnosti restartování počítače...", IDC_RESTART_OPTIONS, 116, 197, 129, 14
AUTOCHECKBOX "Append fail count to &end of command line (/fail=%1%)", IDC_ADD_FAILCOUNT, 14, 171, 219, 10, WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_TOP | BS_MULTILINE
PUSHBUTTON "&Restart Computer Options...", IDC_RESTART_OPTIONS, 116, 197, 129, 14
END
IDD_DLG_DEPEND DIALOGEX 6, 6, 253, 225
@@ -331,14 +331,14 @@ END
STRINGTABLE
BEGIN
IDS_NO_ACTION "Nevykonávat žádnou akci"
IDS_RESTART_SERVICE "Restartovat službu"
IDS_RUN_PROGRAM "Spustit aplikaci"
IDS_RESTART_COMPUTER "Restartovat počítač"
IDS_NO_ACTION "Take no action"
IDS_RESTART_SERVICE "Restart the Service"
IDS_RUN_PROGRAM "Run a Program"
IDS_RESTART_COMPUTER "Restart the Computer"
END
STRINGTABLE
BEGIN
IDS_NOT_SAME_PASSWORD "Hesla nesouhlasí!"
IDS_INVALID_PASSWORD "Zadejte platné heslo!"
IDS_NOT_SAME_PASSWORD "The Passwords are not the same!"
IDS_INVALID_PASSWORD "Enter a valid Password!"
END

View File

@@ -248,6 +248,7 @@ RefreshServiceList(PMAIN_WND_INFO Info)
{
ENUM_SERVICE_STATUS_PROCESS *pService;
LVITEMW lvItem;
DWORD NumServices;
DWORD Index;
SendMessage (Info->hListView,
@@ -257,9 +258,9 @@ RefreshServiceList(PMAIN_WND_INFO Info)
(void)ListView_DeleteAllItems(Info->hListView);
if (GetServiceList(Info))
if (GetServiceList(Info, &NumServices))
{
for (Index = 0; Index < Info->NumServices; Index++)
for (Index = 0; Index < NumServices; Index++)
{
INT i;

View File

@@ -880,7 +880,10 @@ MainWndProc(HWND hwnd,
case WM_CLOSE:
{
FreeServiceList(Info);
HeapFree(ProcessHeap,
0,
Info->pAllServices);
DestroyMenu(Info->hShortcutMenu);
DestroyWindow(hwnd);
}

View File

@@ -54,7 +54,6 @@ typedef struct _MAIN_WND_INFO
ENUM_SERVICE_STATUS_PROCESS *pAllServices;
ENUM_SERVICE_STATUS_PROCESS *pCurrentService;
DWORD NumServices;
INT SelectedItem;/* selection number in the list view */
INT SortSelection;
@@ -116,10 +115,9 @@ BOOL SetServiceConfig(LPQUERY_SERVICE_CONFIG pServiceConfig, LPWSTR lpServiceNam
LPWSTR GetServiceDescription(LPWSTR lpServiceName);
BOOL SetServiceDescription(LPWSTR lpServiceName, LPWSTR lpDescription);
LPWSTR GetExecutablePath(LPWSTR lpServiceName);
VOID FreeServiceList(PMAIN_WND_INFO Info);
BOOL RefreshServiceList(PMAIN_WND_INFO Info);
BOOL UpdateServiceStatus(ENUM_SERVICE_STATUS_PROCESS* pService);
BOOL GetServiceList(PMAIN_WND_INFO Info);
BOOL GetServiceList(PMAIN_WND_INFO Info, DWORD *NumServices);
/* propsheet.c */

View File

@@ -9,17 +9,6 @@
#include "precomp.h"
typedef struct _PAGEDATA
{
PSERVICEPROPSHEET dlgInfo;
BOOL bDisplayNameChanged;
BOOL bDescriptionChanged;
BOOL bBinaryPathChanged;
BOOL bStartTypeChanged;
} PAGEDATA, *PPAGEDATA;
static VOID
SetButtonStates(PSERVICEPROPSHEET dlgInfo,
HWND hwndDlg)
@@ -56,12 +45,12 @@ SetButtonStates(PSERVICEPROPSHEET dlgInfo,
EnableWindow (hButton, TRUE);
}
hButton = GetDlgItem(hwndDlg, IDC_START_PARAM);
EnableWindow(hButton, (State == SERVICE_STOPPED && lpServiceConfig && lpServiceConfig->dwStartType != SERVICE_DISABLED));
if (lpServiceConfig)
if(lpServiceConfig)
HeapFree(GetProcessHeap(), 0, lpServiceConfig);
hButton = GetDlgItem(hwndDlg, IDC_START_PARAM);
EnableWindow(hButton, (State == SERVICE_STOPPED));
/* set the main toolbar */
SetMenuAndButtonStates(dlgInfo->Info);
}
@@ -195,8 +184,8 @@ InitGeneralPage(PSERVICEPROPSHEET dlgInfo,
0,
(LPARAM)pServiceConfig->lpBinaryPathName);
HeapFree(ProcessHeap,
0,
pServiceConfig);
0,
pServiceConfig);
}
@@ -208,18 +197,19 @@ InitGeneralPage(PSERVICEPROPSHEET dlgInfo,
if (dlgInfo->Info->bIsUserAnAdmin)
{
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT), TRUE);
HWND hEdit = GetDlgItem(hwndDlg,
IDC_EDIT);
EnableWindow(hEdit,
TRUE);
}
}
VOID
SaveDlgInfo(PPAGEDATA pPageData,
SaveDlgInfo(PSERVICEPROPSHEET dlgInfo,
HWND hwndDlg)
{
LPQUERY_SERVICE_CONFIG pServiceConfig = NULL;
PWSTR pDisplayName = NULL;
PWSTR pDescription;
INT nLength;
HWND hList;
DWORD StartUp;
pServiceConfig = HeapAlloc(ProcessHeap,
@@ -229,93 +219,31 @@ SaveDlgInfo(PPAGEDATA pPageData,
{
pServiceConfig->dwServiceType = SERVICE_NO_CHANGE;
pServiceConfig->dwErrorControl = SERVICE_NO_CHANGE;
pServiceConfig->dwStartType = SERVICE_NO_CHANGE;
if (pPageData->bStartTypeChanged)
hList = GetDlgItem(hwndDlg, IDC_START_TYPE);
StartUp = SendMessage(hList,
CB_GETCURSEL,
0,
0);
switch (StartUp)
{
StartUp = SendDlgItemMessageW(hwndDlg, IDC_START_TYPE, CB_GETCURSEL, 0, 0);
switch (StartUp)
{
case 0:
pServiceConfig->dwStartType = SERVICE_AUTO_START;
break;
case 1:
pServiceConfig->dwStartType = SERVICE_DEMAND_START;
break;
case 2:
pServiceConfig->dwStartType = SERVICE_DISABLED;
break;
}
}
if (pPageData->bBinaryPathChanged)
{
nLength = SendDlgItemMessageW(hwndDlg, IDC_EXEPATH, WM_GETTEXTLENGTH, 0, 0);
pServiceConfig->lpBinaryPathName = HeapAlloc(ProcessHeap,
HEAP_ZERO_MEMORY,
(nLength + 1) * sizeof(WCHAR));
if (pServiceConfig->lpBinaryPathName != NULL)
SendDlgItemMessageW(hwndDlg, IDC_EXEPATH, WM_GETTEXT, nLength + 1, (LPARAM)pServiceConfig->lpBinaryPathName);
}
if (pPageData->bDisplayNameChanged)
{
nLength = SendDlgItemMessageW(hwndDlg, IDC_DISP_NAME, WM_GETTEXTLENGTH, 0, 0);
pDisplayName = HeapAlloc(ProcessHeap,
HEAP_ZERO_MEMORY,
(nLength + 1) * sizeof(WCHAR));
if (pDisplayName != NULL)
{
SendDlgItemMessageW(hwndDlg, IDC_DISP_NAME, WM_GETTEXT, nLength + 1, (LPARAM)pDisplayName);
if (pPageData->dlgInfo->pService->lpDisplayName)
HeapFree(ProcessHeap, 0, pPageData->dlgInfo->pService->lpDisplayName);
pPageData->dlgInfo->pService->lpDisplayName = pDisplayName;
pServiceConfig->lpDisplayName = pDisplayName;
}
case 0: pServiceConfig->dwStartType = SERVICE_AUTO_START; break;
case 1: pServiceConfig->dwStartType = SERVICE_DEMAND_START; break;
case 2: pServiceConfig->dwStartType = SERVICE_DISABLED; break;
}
if (SetServiceConfig(pServiceConfig,
pPageData->dlgInfo->pService->lpServiceName,
dlgInfo->pService->lpServiceName,
NULL))
{
if (pPageData->bDisplayNameChanged)
ChangeListViewText(pPageData->dlgInfo->Info,
pPageData->dlgInfo->pService,
LVNAME);
if (pPageData->bStartTypeChanged)
ChangeListViewText(pPageData->dlgInfo->Info,
pPageData->dlgInfo->pService,
LVSTARTUP);
ChangeListViewText(dlgInfo->Info,
dlgInfo->pService,
LVSTARTUP);
}
if (pServiceConfig->lpBinaryPathName != NULL)
HeapFree(ProcessHeap, 0, pServiceConfig->lpBinaryPathName);
HeapFree(ProcessHeap, 0, pServiceConfig);
}
if (pPageData->bDescriptionChanged)
{
nLength = SendDlgItemMessageW(hwndDlg, IDC_DESCRIPTION, WM_GETTEXTLENGTH, 0, 0);
pDescription = HeapAlloc(ProcessHeap, HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR));
if (pDescription != NULL)
{
SendDlgItemMessageW(hwndDlg, IDC_DESCRIPTION, WM_GETTEXT, nLength + 1, (LPARAM)pDescription);
if (SetServiceDescription(pPageData->dlgInfo->pService->lpServiceName,
pDescription))
{
ChangeListViewText(pPageData->dlgInfo->Info,
pPageData->dlgInfo->pService,
LVDESC);
}
HeapFree(ProcessHeap, 0, pDescription);
}
HeapFree(ProcessHeap,
0,
pServiceConfig);
}
}
@@ -329,12 +257,12 @@ GeneralPageProc(HWND hwndDlg,
WPARAM wParam,
LPARAM lParam)
{
PPAGEDATA pPageData;
PSERVICEPROPSHEET dlgInfo;
/* Get the window context */
pPageData = (PPAGEDATA)GetWindowLongPtr(hwndDlg,
GWLP_USERDATA);
if (pPageData == NULL && uMsg != WM_INITDIALOG)
dlgInfo = (PSERVICEPROPSHEET)GetWindowLongPtr(hwndDlg,
GWLP_USERDATA);
if (dlgInfo == NULL && uMsg != WM_INITDIALOG)
{
return FALSE;
}
@@ -342,60 +270,26 @@ GeneralPageProc(HWND hwndDlg,
switch (uMsg)
{
case WM_INITDIALOG:
pPageData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PAGEDATA));
if (pPageData != NULL)
{
dlgInfo = (PSERVICEPROPSHEET)(((LPPROPSHEETPAGE)lParam)->lParam);
if (dlgInfo != NULL)
{
SetWindowLongPtr(hwndDlg,
GWLP_USERDATA,
(LONG_PTR)pPageData);
pPageData->dlgInfo = (PSERVICEPROPSHEET)(((LPPROPSHEETPAGE)lParam)->lParam);
if (pPageData->dlgInfo != NULL)
{
InitGeneralPage(pPageData->dlgInfo, hwndDlg);
SetButtonStates(pPageData->dlgInfo, hwndDlg);
}
(LONG_PTR)dlgInfo);
InitGeneralPage(dlgInfo, hwndDlg);
SetButtonStates(dlgInfo, hwndDlg);
}
break;
case WM_DESTROY:
HeapFree(GetProcessHeap(), 0, pPageData);
break;
}
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_START_TYPE:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
pPageData->bStartTypeChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_DISP_NAME:
if (HIWORD(wParam) == EN_CHANGE)
{
pPageData->bDisplayNameChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_DESCRIPTION:
if (HIWORD(wParam) == EN_CHANGE)
{
pPageData->bDescriptionChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_EXEPATH:
if (HIWORD(wParam) == EN_CHANGE)
{
pPageData->bBinaryPathChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
break;
case IDC_START:
{
@@ -405,88 +299,91 @@ GeneralPageProc(HWND hwndDlg,
if (GetDlgItemText(hwndDlg, IDC_START_PARAM, szStartParams, 256) > 0)
lpStartParams = szStartParams;
EnableWindow(GetDlgItem(hwndDlg, IDC_START_PARAM), FALSE);
RunActionWithProgress(hwndDlg,
pPageData->dlgInfo->pService->lpServiceName,
pPageData->dlgInfo->pService->lpDisplayName,
dlgInfo->pService->lpServiceName,
dlgInfo->pService->lpDisplayName,
ACTION_START,
lpStartParams);
UpdateServiceStatus(pPageData->dlgInfo->pService);
ChangeListViewText(pPageData->dlgInfo->Info, pPageData->dlgInfo->pService, LVSTATUS);
SetButtonStates(pPageData->dlgInfo, hwndDlg);
SetServiceStatusText(pPageData->dlgInfo, hwndDlg);
UpdateServiceStatus(dlgInfo->pService);
ChangeListViewText(dlgInfo->Info, dlgInfo->pService, LVSTATUS);
SetButtonStates(dlgInfo, hwndDlg);
SetServiceStatusText(dlgInfo, hwndDlg);
break;
}
case IDC_STOP:
RunActionWithProgress(hwndDlg,
pPageData->dlgInfo->pService->lpServiceName,
pPageData->dlgInfo->pService->lpDisplayName,
dlgInfo->pService->lpServiceName,
dlgInfo->pService->lpDisplayName,
ACTION_STOP,
NULL);
UpdateServiceStatus(pPageData->dlgInfo->pService);
ChangeListViewText(pPageData->dlgInfo->Info, pPageData->dlgInfo->pService, LVSTATUS);
SetButtonStates(pPageData->dlgInfo, hwndDlg);
SetServiceStatusText(pPageData->dlgInfo, hwndDlg);
UpdateServiceStatus(dlgInfo->pService);
ChangeListViewText(dlgInfo->Info, dlgInfo->pService, LVSTATUS);
SetButtonStates(dlgInfo, hwndDlg);
SetServiceStatusText(dlgInfo, hwndDlg);
break;
case IDC_PAUSE:
RunActionWithProgress(hwndDlg,
pPageData->dlgInfo->pService->lpServiceName,
pPageData->dlgInfo->pService->lpDisplayName,
dlgInfo->pService->lpServiceName,
dlgInfo->pService->lpDisplayName,
ACTION_PAUSE,
NULL);
UpdateServiceStatus(pPageData->dlgInfo->pService);
ChangeListViewText(pPageData->dlgInfo->Info, pPageData->dlgInfo->pService, LVSTATUS);
SetButtonStates(pPageData->dlgInfo, hwndDlg);
SetServiceStatusText(pPageData->dlgInfo, hwndDlg);
UpdateServiceStatus(dlgInfo->pService);
ChangeListViewText(dlgInfo->Info, dlgInfo->pService, LVSTATUS);
SetButtonStates(dlgInfo, hwndDlg);
SetServiceStatusText(dlgInfo, hwndDlg);
break;
case IDC_RESUME:
RunActionWithProgress(hwndDlg,
pPageData->dlgInfo->pService->lpServiceName,
pPageData->dlgInfo->pService->lpDisplayName,
dlgInfo->pService->lpServiceName,
dlgInfo->pService->lpDisplayName,
ACTION_RESUME,
NULL);
UpdateServiceStatus(pPageData->dlgInfo->pService);
ChangeListViewText(pPageData->dlgInfo->Info, pPageData->dlgInfo->pService, LVSTATUS);
SetButtonStates(pPageData->dlgInfo, hwndDlg);
SetServiceStatusText(pPageData->dlgInfo, hwndDlg);
UpdateServiceStatus(dlgInfo->pService);
ChangeListViewText(dlgInfo->Info, dlgInfo->pService, LVSTATUS);
SetButtonStates(dlgInfo, hwndDlg);
SetServiceStatusText(dlgInfo, hwndDlg);
break;
case IDC_EDIT:
SendDlgItemMessage(hwndDlg, IDC_DISP_NAME, EM_SETREADONLY, FALSE, 0);
SendDlgItemMessage(hwndDlg, IDC_DESCRIPTION, EM_SETREADONLY, FALSE, 0);
SendDlgItemMessage(hwndDlg, IDC_EXEPATH, EM_SETREADONLY, FALSE, 0);
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT), FALSE);
{
HWND hName, hDesc, hExePath;
hName = GetDlgItem(hwndDlg, IDC_DISP_NAME);
hDesc = GetDlgItem(hwndDlg, IDC_DESCRIPTION);
hExePath = GetDlgItem(hwndDlg, IDC_EXEPATH);
SendMessage(hName, EM_SETREADONLY, FALSE, 0);
SendMessage(hDesc, EM_SETREADONLY, FALSE, 0);
SendMessage(hExePath, EM_SETREADONLY, FALSE, 0);
break;
}
case IDC_START_PARAM:
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
break;
case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code)
{
case PSN_APPLY:
if (pPageData->bDisplayNameChanged ||
pPageData->bDescriptionChanged ||
pPageData->bBinaryPathChanged ||
pPageData->bStartTypeChanged)
{
SaveDlgInfo(pPageData, hwndDlg);
SetButtonStates(pPageData->dlgInfo, hwndDlg);
pPageData->bDisplayNameChanged = FALSE;
pPageData->bDescriptionChanged = FALSE;
pPageData->bBinaryPathChanged = FALSE;
pPageData->bStartTypeChanged = FALSE;
}
LPNMHDR lpnm = (LPNMHDR)lParam;
switch (lpnm->code)
{
case PSN_APPLY:
SaveDlgInfo(dlgInfo, hwndDlg);
SetButtonStates(dlgInfo, hwndDlg);
break;
}
}
break;
break;
}
return FALSE;

View File

@@ -314,7 +314,7 @@ LogonPageProc(
case IDC_LOGON_INTERACTIVE:
if (HIWORD(wParam) == BN_CLICKED)
{
if (pLogonData->bInitialized)
if (pLogonData->bInitialized && pLogonData->bInitialized)
{
pLogonData->bAccountChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);

View File

@@ -15,7 +15,7 @@ typedef struct _RECOVERYDATA
{
ENUM_SERVICE_STATUS_PROCESS *pService;
LPSERVICE_FAILURE_ACTIONS pServiceFailure;
BOOL bChanged;
} RECOVERYDATA, *PRECOVERYDATA;
static
@@ -367,74 +367,6 @@ BrowseFile(
}
static
VOID
SetFailureActions(
HWND hwndDlg)
{
SERVICE_FAILURE_ACTIONS FailureActions;
BOOL bRestartService = FALSE;
BOOL bRunProgram = FALSE;
BOOL bRebootComputer = FALSE;
INT id, index;
ZeroMemory(&FailureActions, sizeof(FailureActions));
/* Count the number of valid failure actions */
for (id = IDC_FIRST_FAILURE; id <= IDC_SUBSEQUENT_FAILURES; id++)
{
index = SendDlgItemMessageW(hwndDlg,
id,
CB_GETCURSEL,
0,
0);
switch (index)
{
case 1: /* Restart Service */
bRestartService = TRUE;
FailureActions.cActions++;
break;
case 2: /* Run Program */
bRunProgram = TRUE;
FailureActions.cActions++;
break;
case 3: /* Reboot Computer */
bRebootComputer = TRUE;
FailureActions.cActions++;
break;
}
}
if (bRestartService)
{
// IDC_RESTART_TIME
}
if (bRunProgram)
{
// IDC_RESTART_TIME
}
if (bRebootComputer)
{
// IDC_RESTART_TIME
}
#if 0
typedef struct _SERVICE_FAILURE_ACTIONS {
DWORD dwResetPeriod;
LPTSTR lpRebootMsg;
LPTSTR lpCommand;
DWORD cActions;
SC_ACTION *lpsaActions;
} SERVICE_FAILURE_ACTIONS, *LPSERVICE_FAILURE_ACTIONS;
#endif
}
INT_PTR
CALLBACK
RecoveryPageProc(
@@ -491,26 +423,6 @@ RecoveryPageProc(
if (HIWORD(wParam) == CBN_SELCHANGE)
{
UpdateFailureActions(hwndDlg, pRecoveryData);
pRecoveryData->bChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_RESET_TIME:
case IDC_RESTART_TIME:
case IDC_PROGRAM:
case IDC_PARAMETERS:
if (HIWORD(wParam) == EN_CHANGE)
{
pRecoveryData->bChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_ADD_FAILCOUNT:
if (HIWORD(wParam) == BN_CLICKED)
{
pRecoveryData->bChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
@@ -518,9 +430,6 @@ RecoveryPageProc(
case IDC_BROWSE_PROGRAM:
BrowseFile(hwndDlg);
break;
case IDC_RESTART_OPTIONS:
break;
}
break;
@@ -528,11 +437,6 @@ RecoveryPageProc(
switch (((LPNMHDR)lParam)->code)
{
case PSN_APPLY:
if (pRecoveryData->bChanged)
{
SetFailureActions(hwndDlg);
pRecoveryData->bChanged = FALSE;
}
break;
}
break;

View File

@@ -253,41 +253,25 @@ SetServiceDescription(LPWSTR lpServiceName,
return bRet;
}
VOID
FreeServiceList(PMAIN_WND_INFO Info)
{
DWORD i;
if (Info->pAllServices != NULL)
{
for (i = 0; i < Info->NumServices; i++)
{
if (Info->pAllServices[i].lpServiceName)
HeapFree(ProcessHeap, 0, Info->pAllServices[i].lpServiceName);
if (Info->pAllServices[i].lpDisplayName)
HeapFree(ProcessHeap, 0, Info->pAllServices[i].lpDisplayName);
}
HeapFree(ProcessHeap, 0, Info->pAllServices);
Info->pAllServices = NULL;
Info->NumServices = 0;
}
}
BOOL
GetServiceList(PMAIN_WND_INFO Info)
GetServiceList(PMAIN_WND_INFO Info,
DWORD *NumServices)
{
ENUM_SERVICE_STATUS_PROCESS *pServices = NULL;
SC_HANDLE ScHandle;
BOOL bRet = FALSE;
DWORD BytesNeeded = 0;
DWORD ResumeHandle = 0;
DWORD NumServices = 0;
DWORD i;
FreeServiceList(Info);
*NumServices = 0;
if (Info->pAllServices != NULL)
{
HeapFree(ProcessHeap,
0,
Info->pAllServices);
Info->pAllServices = NULL;
}
ScHandle = OpenSCManagerW(NULL,
NULL,
@@ -301,7 +285,7 @@ GetServiceList(PMAIN_WND_INFO Info)
NULL,
0,
&BytesNeeded,
&NumServices,
NumServices,
&ResumeHandle,
0))
{
@@ -309,20 +293,20 @@ GetServiceList(PMAIN_WND_INFO Info)
if (GetLastError() == ERROR_MORE_DATA)
{
/* reserve memory for service info array */
pServices = (ENUM_SERVICE_STATUS_PROCESS *)HeapAlloc(ProcessHeap,
0,
BytesNeeded);
if (pServices)
Info->pAllServices = (ENUM_SERVICE_STATUS_PROCESS *) HeapAlloc(ProcessHeap,
0,
BytesNeeded);
if (Info->pAllServices)
{
/* fill array with service info */
if (EnumServicesStatusEx(ScHandle,
SC_ENUM_PROCESS_INFO,
SERVICE_WIN32,
SERVICE_STATE_ALL,
(LPBYTE)pServices,
(LPBYTE)Info->pAllServices,
BytesNeeded,
&BytesNeeded,
&NumServices,
NumServices,
&ResumeHandle,
0))
{
@@ -336,36 +320,13 @@ GetServiceList(PMAIN_WND_INFO Info)
if (ScHandle)
CloseServiceHandle(ScHandle);
Info->pAllServices = (ENUM_SERVICE_STATUS_PROCESS *)HeapAlloc(ProcessHeap,
HEAP_ZERO_MEMORY,
NumServices * sizeof(ENUM_SERVICE_STATUS_PROCESS));
if (Info->pAllServices != NULL)
if (!bRet && Info->pAllServices)
{
Info->NumServices = NumServices;
for (i = 0; i < NumServices; i++)
{
Info->pAllServices[i].lpServiceName = HeapAlloc(ProcessHeap,
HEAP_ZERO_MEMORY,
(wcslen(pServices[i].lpServiceName) + 1) * sizeof(WCHAR));
if (Info->pAllServices[i].lpServiceName)
wcscpy(Info->pAllServices[i].lpServiceName, pServices[i].lpServiceName);
Info->pAllServices[i].lpDisplayName = HeapAlloc(ProcessHeap,
HEAP_ZERO_MEMORY,
(wcslen(pServices[i].lpDisplayName) + 1) * sizeof(WCHAR));
if (Info->pAllServices[i].lpDisplayName)
wcscpy(Info->pAllServices[i].lpDisplayName, pServices[i].lpDisplayName);
CopyMemory(&Info->pAllServices[i].ServiceStatusProcess,
&pServices[i].ServiceStatusProcess,
sizeof(SERVICE_STATUS_PROCESS));
}
HeapFree(ProcessHeap,
0,
Info->pAllServices);
}
if (pServices)
HeapFree(ProcessHeap, 0, pServices);
return bRet;
}

View File

@@ -53,16 +53,16 @@ DoStartService(LPWSTR ServiceName,
lpChar++;
}
/*
* Allocate the arguments vector.
* Do not add the service name here because services.exe does it for us!
*/
lpArgsVector = LocalAlloc(LMEM_FIXED, dwArgsCount * sizeof(LPCWSTR));
/* Allocate the arguments vector and add one for the service name */
lpArgsVector = LocalAlloc(LMEM_FIXED, (dwArgsCount + 1) * sizeof(LPCWSTR));
if (!lpArgsVector)
return FALSE;
/* Make the service name the first argument */
lpArgsVector[0] = ServiceName;
/* Fill the arguments vector */
dwArgsCount = 0;
dwArgsCount = 1;
bWhiteSpace = TRUE;
lpChar = lpStartParams;
while (*lpChar != 0)

View File

@@ -167,9 +167,9 @@ END
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
CAPTION "Roztáhnout a zkosit"
CAPTION "Stretch and skew image"
BEGIN
GROUPBOX "Roztáhnout", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
LTEXT "Vodorovně:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
@@ -178,15 +178,15 @@ BEGIN
LTEXT "Svisle:", IDD_STRETCHSKEWTEXTVSTRETCH, 45, 49, 40, 10
EDITTEXT IDD_STRETCHSKEWEDITVSTRETCH, 90, 48, 32, 12
LTEXT "%", IDD_STRETCHSKEWTEXTVPERCENT, 125, 49, 15, 10
GROUPBOX "Zkosit", IDD_STRETCHSKEWGROUPSKEW, 6, 76, 158, 66
GROUPBOX "Skew", IDD_STRETCHSKEWGROUPSKEW, 6, 76, 158, 66
ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
LTEXT "Vodorovně:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
LTEXT "stupně", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
LTEXT "Svisle:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
LTEXT "stupně", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
PUSHBUTTON "Storno", IDCANCEL, 170, 24, 48, 14
END
@@ -220,9 +220,9 @@ BEGIN
IDS_ALLPICTUREFILES "All Picture Files"
IDS_FILESIZE "%d bajtů"
IDS_PRINTRES "%d x %d pixelů na metr"
IDS_INTNUMBERS "Zadávejte pouze celá čísla!"
IDS_PERCENTAGE "Měřítko musí být mezi 1 a 500."
IDS_ANGLE "Úhel musí být -89 a 89."
IDS_LOADERRORTEXT "Soubor %s nemohl být načten."
IDS_ENLARGEPROMPTTEXT "Obrázek ve schránce je větší než bitmapa.\nChcete bitmapu zvětšit?"
IDS_INTNUMBERS "Please enter integral numbers only!"
IDS_PERCENTAGE "The percentage must be between 1 and 500."
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?"
END

View File

@@ -222,8 +222,6 @@ LRESULT CMainWindow::OnInitMenuPopup(UINT nMsg, WPARAM wParam, LPARAM lParam, BO
switch (lParam)
{
case 0: /* File menu */
if ((HMENU)wParam != GetSubMenu(menu, 0))
break;
EnableMenuItem(menu, IDM_FILEASWALLPAPERPLANE, ENABLED_IF(isAFile));
EnableMenuItem(menu, IDM_FILEASWALLPAPERCENTERED, ENABLED_IF(isAFile));
EnableMenuItem(menu, IDM_FILEASWALLPAPERSTRETCHED, ENABLED_IF(isAFile));

View File

@@ -96,7 +96,7 @@ BEGIN
IDS_USER_FULL_NAME "Nume complet"
IDS_USER_COMMENT "Comentariu"
IDS_USER_USER_COMMENT "Comentariu de utilizator"
IDS_USER_COUNTRY_CODE "Cod de țară"
IDS_USER_COUNTRY_CODE "Cod de ţară"
IDS_USER_ACCOUNT_ACTIVE "Cont activ"
IDS_USER_ACCOUNT_EXPIRES "Cont expiră"
IDS_USER_PW_LAST_SET "Parolă recent instituită"
@@ -104,20 +104,20 @@ BEGIN
IDS_USER_PW_CHANGEABLE "Parolă modificabilă"
IDS_USER_PW_REQUIRED "Parolă necesară"
IDS_USER_CHANGE_PW "Utilizatorul poate schimba parola"
IDS_USER_WORKSTATIONS "Stații de lucru permise"
IDS_USER_WORKSTATIONS "Staţii de lucru permise"
IDS_USER_LOGON_SCRIPT "Script de autentificare"
IDS_USER_PROFILE "Profil de utilizator"
IDS_USER_HOME_DIR "Director personal"
IDS_USER_LAST_LOGON "Ultimă autentificare"
IDS_USER_LOGON_HOURS "Ore de autentificare permise"
IDS_USER_LOCAL_GROUPS "Apartenență grup local"
IDS_USER_GLOBAL_GROUPS "Apartenență grup global"
IDS_USER_LOCAL_GROUPS "Apartenenţă grup local"
IDS_USER_GLOBAL_GROUPS "Apartenenţă grup global"
IDS_USER_ENTER_PASSWORD1 "Introduceți o parolă nouă pentru utilizatorul (curent): "
IDS_USER_ENTER_PASSWORD1 "Introduceţi o parolă nouă pentru utilizatorul (curent): "
IDS_USER_ENTER_PASSWORD2 "Introduceți din nou parola: "
IDS_USER_NO_PASSWORD_MATCH "Parolele diferă!"
IDS_USE_NOW_CONNECTED "Conectarea %s la %s a fost realizată.\n"
IDS_USE_NOW_CONNECTED "%s is now connected to %s\n"
IDS_GENERIC_YES "Da"
IDS_GENERIC_NO "Nu"
@@ -126,8 +126,8 @@ BEGIN
IDS_GENERIC_ALL "Toate"
IDS_GENERIC_LOCKED "Blocat"
IDS_ERROR_OPTION_NOT_SUPPORTED "Opțiunea %s încă nu este admisă.\n"
IDS_ERROR_INVALID_OPTION_VALUE "Ați introdus o valoare nevalidă pentru opțiunea %s.\n"
IDS_ERROR_SYSTEM_ERROR "A survenit eroarea de sistem %d.\n"
IDS_ERROR_NO_ERROR "Comanda a fost executată cu succes.\n"
IDS_ERROR_OPTION_NOT_SUPPORTED "Opţiunea %s încă nu este admisă.\n"
IDS_ERROR_INVALID_OPTION_VALUE "Aţi introdus o valoare nevalidă pentru opţiunea %s.\n"
IDS_ERROR_SYSTEM_ERROR "The system error %d happened.\n"
IDS_ERROR_NO_ERROR "The command got executed successfully.\n"
END

View File

@@ -113,7 +113,7 @@ BEGIN
IDS_USER_ENTER_PASSWORD2 "Повторите ввод пароля для подтверждения: "
IDS_USER_NO_PASSWORD_MATCH "Пароли не совпадают!"
IDS_USE_NOW_CONNECTED "%s сейчас подключен к %s\n"
IDS_USE_NOW_CONNECTED "%s is now connected to %s\n"
IDS_GENERIC_YES "Да"
IDS_GENERIC_NO "Нет"
@@ -124,6 +124,6 @@ BEGIN
IDS_ERROR_OPTION_NOT_SUPPORTED "Опция %s в данный момент не поддерживается.\n"
IDS_ERROR_INVALID_OPTION_VALUE "Вы ввели неверный данные для данной опции %s.\n"
IDS_ERROR_SYSTEM_ERROR "Произошла системная ошибка: %d.\n"
IDS_ERROR_NO_ERROR "Команда успешно выполнена.\n"
IDS_ERROR_SYSTEM_ERROR "The system error %d happened.\n"
IDS_ERROR_NO_ERROR "The command got executed successfully.\n"
END

View File

@@ -113,7 +113,7 @@ BEGIN
IDS_USER_ENTER_PASSWORD2 "Şifreyi yeniden giriniz: "
IDS_USER_NO_PASSWORD_MATCH "Şifreler uyuşmuyor!"
IDS_USE_NOW_CONNECTED "%s şuna bağlandı: %s\n"
IDS_USE_NOW_CONNECTED "%s is now connected to %s\n"
IDS_GENERIC_YES "Evet"
IDS_GENERIC_NO "Hayır"
@@ -124,6 +124,6 @@ BEGIN
IDS_ERROR_OPTION_NOT_SUPPORTED "%s seçeneği daha desteklenmiyor.\n"
IDS_ERROR_INVALID_OPTION_VALUE "%s seçeneği için geçersiz bir değer girdiniz.\n"
IDS_ERROR_SYSTEM_ERROR "%d dizge hatâsı oldu.\n"
IDS_ERROR_NO_ERROR "Komut başarılı bir şekilde çalıştırıldı.\n"
IDS_ERROR_SYSTEM_ERROR "The system error %d happened.\n"
IDS_ERROR_NO_ERROR "The command got executed successfully.\n"
END

View File

@@ -1,8 +1,5 @@
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/conutils)
add_executable(ping ping.c ping.rc)
set_module_type(ping win32cui UNICODE)
target_link_libraries(ping conutils ${PSEH_LIB})
add_importlibs(ping ws2_32 iphlpapi msvcrt kernel32 ntdll)
add_importlibs(ping ws2_32 iphlpapi user32 msvcrt kernel32 ntdll)
add_cd_file(TARGET ping DESTINATION reactos/system32 FOR all)

View File

@@ -33,34 +33,34 @@ Options:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Not enough resources available.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Bad option %s.\n"
IDS_BAD_PARAMETER "Bad parameter %s.\n"
IDS_BAD_VALUE "Bad value for option %s, valid range is from %u to %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %s "
IDS_PINGING_HOSTNAME "\nPinging %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "with %lu bytes of data:\n\n"
IDS_REPLY_FROM "Reply from %s: "
IDS_REPLY_BYTES "bytes=%d "
IDS_REPLY_TIME_MS "time=%lums "
IDS_REPLY_TIME_0MS "time<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Bad option %1.\n"
IDS_BAD_PARAMETER "Bad parameter %1.\n"
IDS_BAD_VALUE "Bad value for option %1, valid range is from %2!d! to %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %1 %0"
IDS_PINGING_HOSTNAME "\nPinging %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "with %1!d! bytes of data:\n\n"
IDS_REPLY_FROM "Reply from %1: %0"
IDS_REPLY_BYTES "bytes=%1!d! %0"
IDS_REPLY_TIME_MS "time=%1!d!ms %0"
IDS_REPLY_TIME_0MS "time<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Request timed out.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Ping statistics for %s:\n\
Packets: Sent = %d, Received = %d, Lost %d (%d%% loss),\n"
Ping statistics for %1!s!:\n\
Packets: Sent = %2!d!, Received = %3!d!, Lost %4!d! (%5!u!%% loss),\n"
IDS_APPROXIMATE_RTT "Approximate round-trip time in milliseconds:\n\
Minimum = %lums, Maximum = %lums, Average = %lums\n"
Minimum = %1!u!ms, Maximum = %2!u!ms, Average = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Options:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Není k dispozici dostatek volných zdrojů.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Nesprávná volba %s.\n"
IDS_BAD_PARAMETER "Nesprávný parametr %s.\n"
IDS_BAD_VALUE "Nesprávná hodnota volby %s, platný rozsah je od %u do %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %s "
IDS_PINGING_HOSTNAME "\nPinging %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "with %lu bytes of data:\n\n"
IDS_REPLY_FROM "Odpověď od %s: "
IDS_REPLY_BYTES "bajtů=%d "
IDS_REPLY_TIME_MS "čas=%lums "
IDS_REPLY_TIME_0MS "čas<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Nesprávná volba %1.\n"
IDS_BAD_PARAMETER "Nesprávný parametr %1.\n"
IDS_BAD_VALUE "Nesprávná hodnota volby %1, platný rozsah je od %2!d! do %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %1 %0"
IDS_PINGING_HOSTNAME "\nPinging %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "with %1!d! bytes of data:\n\n"
IDS_REPLY_FROM "Odpověď od %1: %0"
IDS_REPLY_BYTES "bajtů=%1!d! %0"
IDS_REPLY_TIME_MS "čas=%1!d!ms %0"
IDS_REPLY_TIME_0MS "čas<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Časový limit žádosti vypršel.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Statistika pro %s:\n\
Pakety: Odesláno = %d, Přijato = %d, Ztraceno %d (%d%% ztráta),\n"
Statistika pro %1!s!:\n\
Pakety: Odesláno = %2!d!, Přijato = %3!d!, Ztraceno %4!d! (%5!u!%% ztráta),\n"
IDS_APPROXIMATE_RTT "Přibližná doba do přijetí odezvy v milisekundách:\n\
Minimum = %lums, Maximum = %lums, Průměr = %lums\n"
Minimum = %1!u!ms, Maximum = %2!u!ms, Průměr = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -32,34 +32,34 @@ Optionen:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Nicht genügend freie Resourcen verfügbar.\n"
IDS_MISSING_ADDRESS "Name oder IP-Adresse des Zielhosts muss angegeben werden.\n"
IDS_MISSING_VALUE "Fehlender Wert für Option %s.\n"
IDS_BAD_OPTION "Ungültige Option %s.\n"
IDS_BAD_PARAMETER "Ungültiger Parameter %s.\n"
IDS_BAD_VALUE "Ungültiger Wert für Option %s, Erlaubter Bereich ist von %u bis %u.\n"
IDS_WRONG_FAMILY "Die Option %s ist nur erlaubt für %s.\n"
IDS_UNKNOWN_HOST "Unbekannter Host %s.\n"
IDS_PINGING_ADDRESS "\nPing wird ausgeführt für %s "
IDS_PINGING_HOSTNAME "\nPing wird ausgeführt für %s [%s] "
IDS_SOURCE_ADDRESS "von %s %s"
IDS_PING_SIZE "mit %lu Bytes Daten:\n\n"
IDS_REPLY_FROM "Antwort von %s: "
IDS_REPLY_BYTES "Bytes=%d "
IDS_REPLY_TIME_MS "Zeit=%lums "
IDS_REPLY_TIME_0MS "Zeit<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo antwortete mit %lu.\n"
IDS_MISSING_VALUE "Fehlender Wert für Option %1.\n"
IDS_BAD_OPTION "Ungültige Option %1.\n"
IDS_BAD_PARAMETER "Ungültiger Parameter %1.\n"
IDS_BAD_VALUE "Ungültiger Wert für Option %1, Erlaubter Bereich ist von %2!d! bis %3!u!.\n"
IDS_WRONG_FAMILY "Die Option %1 ist nur erlaubt für %2.\n"
IDS_UNKNOWN_HOST "Unbekannter Host %1.\n"
IDS_PINGING_ADDRESS "\nPing wird ausgeführt für %1 %0"
IDS_PINGING_HOSTNAME "\nPing wird ausgeführt für %1 [%2] %0"
IDS_SOURCE_ADDRESS "von %1!s! %0"
IDS_PING_SIZE "mit %1!d! Bytes Daten:\n\n"
IDS_REPLY_FROM "Antwort von %1: %0"
IDS_REPLY_BYTES "Bytes=%1!d! %0"
IDS_REPLY_TIME_MS "Zeit=%1!d!ms %0"
IDS_REPLY_TIME_0MS "Zeit<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo antwortete mit %1.\n"
IDS_DEST_HOST_UNREACHABLE "Zielhost nicht erreichbar.\n"
IDS_DEST_NET_UNREACHABLE "Zielnetz nicht erreichbar.\n"
IDS_REQUEST_TIMED_OUT "Zeitüberschreitung der Anforderung.\n"
IDS_TTL_EXPIRED "TTL überschritten.\n"
IDS_TRANSMIT_FAILED "PING: Übertragung fehlgeschlagen. (Fehler %u)\n"
IDS_TRANSMIT_FAILED "PING: Übertragung fehlgeschlagen. (Fehler %1!u!)\n"
IDS_STATISTICS "\n\
Ping Statistik für %s:\n\
Pakete: Gesendet = %d, Empfangen = %d, Verloren %d (%d%% Verlust),\n"
Ping Statistik für %1!s!:\n\
Pakete: Gesendet = %2!d!, Empfangen = %3!d!, Verloren %4!d! (%5!u!%% Verlust),\n"
IDS_APPROXIMATE_RTT "Durchschnittliche Antwortzeit in Millisekunden:\n\
Minimum = %lums, Maximum = %lums, Durchschnitt = %lums\n"
Minimum = %1!u!ms, Maximum = %2!u!ms, Durchschnitt = %3!u!ms\n"
IDS_WINSOCK_FAIL "Fehler beim Initialisieren von WinSock: %i\n"
IDS_WINSOCK_FAIL "Fehler beim Initialisieren von WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Options:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Not enough resources available.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Bad option %s.\n"
IDS_BAD_PARAMETER "Bad parameter %s.\n"
IDS_BAD_VALUE "Bad value for option %s, valid range is from %u to %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %s "
IDS_PINGING_HOSTNAME "\nPinging %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "with %lu bytes of data:\n\n"
IDS_REPLY_FROM "Reply from %s: "
IDS_REPLY_BYTES "bytes=%d "
IDS_REPLY_TIME_MS "time=%lums "
IDS_REPLY_TIME_0MS "time<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Bad option %1.\n"
IDS_BAD_PARAMETER "Bad parameter %1.\n"
IDS_BAD_VALUE "Bad value for option %1, valid range is from %2!d! to %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %1 %0"
IDS_PINGING_HOSTNAME "\nPinging %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "with %1!d! bytes of data:\n\n"
IDS_REPLY_FROM "Reply from %1: %0"
IDS_REPLY_BYTES "bytes=%1!d! %0"
IDS_REPLY_TIME_MS "time=%1!d!ms %0"
IDS_REPLY_TIME_0MS "time<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Request timed out.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Ping statistics for %s:\n\
Packets: Sent = %d, Received = %d, Lost %d (%d%% loss),\n"
Ping statistics for %1!s!:\n\
Packets: Sent = %2!d!, Received = %3!d!, Lost %4!d! (%5!u!%% loss),\n"
IDS_APPROXIMATE_RTT "Approximate round-trip time in milliseconds:\n\
Minimum = %lums, Maximum = %lums, Average = %lums\n"
Minimum = %1!u!ms, Maximum = %2!u!ms, Average = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Opciones:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "No hay suficientes recursos libres disponibles.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "La opción %s no es válida.\n"
IDS_BAD_PARAMETER "El parámetro %s no es válido.\n"
IDS_BAD_VALUE "El valor para la opción %s no es válido, debe de estar entre %u y %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nHaciendo ping a %s "
IDS_PINGING_HOSTNAME "\nHaciendo ping a %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "con %lu bytes de datos:\n\n"
IDS_REPLY_FROM "Respuesta desde %s: "
IDS_REPLY_BYTES "bytes=%d "
IDS_REPLY_TIME_MS "tiempo=%lums "
IDS_REPLY_TIME_0MS "tiempo<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "La opción %1 no es válida.\n"
IDS_BAD_PARAMETER "El parámetro %1 no es válido.\n"
IDS_BAD_VALUE "El valor para la opción %1 no es válido, debe de estar entre %2!d! y %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nHaciendo ping a %1 %0"
IDS_PINGING_HOSTNAME "\nHaciendo ping a %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "con %1!d! bytes de datos:\n\n"
IDS_REPLY_FROM "Respuesta desde %1: %0"
IDS_REPLY_BYTES "bytes=%1!d! %0"
IDS_REPLY_TIME_MS "tiempo=%1!d!ms %0"
IDS_REPLY_TIME_0MS "tiempo<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "La petición ha caducado.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Estadísticas de ping para %s:\n\
Paquetes: enviados = %d, recibidos = %d, perdidos %d (%d%% perdidos),\n"
Estadísticas de ping para %1!s!:\n\
Paquetes: enviados = %2!d!, recibidos = %3!d!, perdidos %4!d! (%5!u!%% perdidos),\n"
IDS_APPROXIMATE_RTT "Tiempos aproximados de ida y vuelta en milisegundos:\n\
Mínimo = %lums, Máximo = %lums, Media = %lums\n"
Mínimo = %1!u!ms, Máximo = %2!u!ms, Media = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Options :\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Ressources libres disponibles insuffisantes.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Option incorrecte %s.\n"
IDS_BAD_PARAMETER "Paramètre incorrect %s.\n"
IDS_BAD_VALUE "Valeur incorrecte pour l'option %s, elle doit être entre %u et %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPing de %s "
IDS_PINGING_HOSTNAME "\nPing de %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "avec %lu octets de données :\n\n"
IDS_REPLY_FROM "Réponse de %s : "
IDS_REPLY_BYTES "octets=%d "
IDS_REPLY_TIME_MS "durée=%lums "
IDS_REPLY_TIME_0MS "durée<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Option incorrecte %1.\n"
IDS_BAD_PARAMETER "Paramètre incorrect %1.\n"
IDS_BAD_VALUE "Valeur incorrecte pour l'option %1, elle doit être entre %2!d! et %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPing de %1 %0"
IDS_PINGING_HOSTNAME "\nPing de %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "avec %1!d! octets de données :\n\n"
IDS_REPLY_FROM "Réponse de %1 : %0"
IDS_REPLY_BYTES "octets=%1!d! %0"
IDS_REPLY_TIME_MS "durée=%1!d!ms %0"
IDS_REPLY_TIME_0MS "durée<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Expiration du délai d'attente.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Statistiques du ping de %s :\n\
Paquets : Envoyés = %d, Reçus = %d, Perdus %d (%d%% de perte),\n"
Statistiques du ping de %1!s! :\n\
Paquets : Envoyés = %2!d!, Reçus = %3!d!, Perdus %4!d! (%5!u!%% de perte),\n"
IDS_APPROXIMATE_RTT "Délai approximatif de réponse en millisecondes :\n\
Minimum = %lums, Maximum = %lums, Moyenne = %lums\n"
Minimum = %1!u!ms, Maximum = %2!u!ms, Moyenne = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Opzioni:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Risorse disponibili insufficienti.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Opzione errata %s.\n"
IDS_BAD_PARAMETER "Parametro errato %s.\n"
IDS_BAD_VALUE "Valore errato per il parametro %s, è valido un valore tra %u to %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPing in corso %s "
IDS_PINGING_HOSTNAME "\nPing in corso %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "con %lu bytes di dati:\n\n"
IDS_REPLY_FROM "Risposta da %s: "
IDS_REPLY_BYTES "bytes=%d "
IDS_REPLY_TIME_MS "time=%lums "
IDS_REPLY_TIME_0MS "time<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Opzione errata %1.\n"
IDS_BAD_PARAMETER "Parametro errato %1.\n"
IDS_BAD_VALUE "Valore errato per il parametro %1, è valido un valore tra %2!d! to %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPing in corso %1 %0"
IDS_PINGING_HOSTNAME "\nPing in corso %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "con %1!d! bytes di dati:\n\n"
IDS_REPLY_FROM "Risposta da %1: %0"
IDS_REPLY_BYTES "bytes=%1!d! %0"
IDS_REPLY_TIME_MS "time=%1!d!ms %0"
IDS_REPLY_TIME_0MS "time<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Richiesta scaduta.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Statistiche di Ping per %s:\n\
Pacchetti: Inviati = %d, Ricevuti = %d, Persi %d (%d%% perdita),\n"
Statistiche di Ping per %1!s!:\n\
Pacchetti: Inviati = %2!d!, Ricevuti = %3!d!, Persi %4!d! (%5!u!%% perdita),\n"
IDS_APPROXIMATE_RTT "Tempo approssimato di andata e ritorno in milli-secondi:\n\
Minimo = %lums, Massimo = %lums, Media = %lums\n"
Minimo = %1!u!ms, Massimo = %2!u!ms, Media = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Options:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Brak dostępnych zasobów.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Nieprawidłowa opcja %s.\n"
IDS_BAD_PARAMETER "Nieprawidłowy parametr %s.\n"
IDS_BAD_VALUE "Nieprawidłowa wartość dla opcji %s, wymagana liczba naturalna od %u do %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPingowanie %s "
IDS_PINGING_HOSTNAME "\nPingowanie %s [%s] "
IDS_SOURCE_ADDRESS "z %s %s"
IDS_PING_SIZE "przy użyciu %lu bajtów danych:\n\n"
IDS_REPLY_FROM "Odpowiedź z %s: "
IDS_REPLY_BYTES "bajtów=%d "
IDS_REPLY_TIME_MS "czas=%lums "
IDS_REPLY_TIME_0MS "czas<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Nieprawidłowa opcja %1.\n"
IDS_BAD_PARAMETER "Nieprawidłowy parametr %1.\n"
IDS_BAD_VALUE "Nieprawidłowa wartość dla opcji %1, wymagana liczba naturalna od %2!d! do %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPingowanie %1 %0"
IDS_PINGING_HOSTNAME "\nPingowanie %1 [%2] %0"
IDS_SOURCE_ADDRESS "z %1!s! %0"
IDS_PING_SIZE "przy użyciu %1!d! bajtów danych:\n\n"
IDS_REPLY_FROM "Odpowiedź z %1: %0"
IDS_REPLY_BYTES "bajtów=%1!d! %0"
IDS_REPLY_TIME_MS "czas=%1!d!ms %0"
IDS_REPLY_TIME_0MS "czas<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Brak odpowiedzi.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Statystyka rezultatu badania hosta %s:\n\
Pakiety: Wysłane = %d, Odebrane = %d, Utracone %d (%d%% strat),\n"
Statystyka rezultatu badania hosta %1!s!:\n\
Pakiety: Wysłane = %2!d!, Odebrane = %3!d!, Utracone %4!d! (%5!u!%% strat),\n"
IDS_APPROXIMATE_RTT "Całkowity, przybliżony czas podróży pakietu w millisekundach:\n\
Minimum = %lums, Maksimum = %lums, Uśredniony = %lums\n"
Minimum = %1!u!ms, Maksimum = %2!u!ms, Uśredniony = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -34,34 +34,34 @@ Opțiuni:\n\
IDS_CTRL_C "Ctrl-C\n"
IDS_NO_RESOURCES "Nu există suficiente resurse disponibile.\n"
IDS_MISSING_ADDRESS "Este necesară specificarea unei adrese IP.\n"
IDS_MISSING_VALUE "Nu a fost furnizată nici o valoare pentru opțiunea %s.\n"
IDS_BAD_OPTION "%s este o opțiune eronată.\n"
IDS_BAD_PARAMETER "Parametru eronat: %s.\n"
IDS_BAD_VALUE "Valoare eronată pentru opțiunea %s, domeniul valid este %u - %u.\n"
IDS_WRONG_FAMILY "Opțiunea %s este acceptată doar pentru %s.\n"
IDS_UNKNOWN_HOST "Eșec la localizarea gazdei %s. Verificați numele apoi reîncercați.\n"
IDS_PINGING_ADDRESS "\nTransmitere către %s "
IDS_PINGING_HOSTNAME "\nTransmitere către %s [%s] "
IDS_SOURCE_ADDRESS "de la %s %s"
IDS_PING_SIZE "cu %lu octeți de date:\n\n"
IDS_REPLY_FROM "Răspuns de %s: "
IDS_REPLY_BYTES "octeți=%d "
IDS_REPLY_TIME_MS "timp=%lums "
IDS_REPLY_TIME_0MS "timp<1ms "
IDS_REPLY_TTL "TDV=%d\n"
IDS_REPLY_STATUS "Răspunsul ecou este %lu.\n"
IDS_MISSING_VALUE "Nu a fost furnizată nici o valoare pentru opțiunea %1.\n"
IDS_BAD_OPTION "%1 este o opțiune eronată.\n"
IDS_BAD_PARAMETER "Parametru eronat: %1.\n"
IDS_BAD_VALUE "Valoare eronată pentru opțiunea %1, domeniul valid este %2!d! - %3!u!.\n"
IDS_WRONG_FAMILY "Opțiunea %1 este acceptată doar pentru %2.\n"
IDS_UNKNOWN_HOST "Eșec la localizarea gazdei %1. Verificați numele apoi reîncercați.\n"
IDS_PINGING_ADDRESS "\nTransmitere către %1 %0"
IDS_PINGING_HOSTNAME "\nTransmitere către %1 [%2] %0"
IDS_SOURCE_ADDRESS "de la %1!s! %0"
IDS_PING_SIZE "cu %1!d! octeți de date:\n\n"
IDS_REPLY_FROM "Răspuns de %1: %0"
IDS_REPLY_BYTES "octeți=%1!d! %0"
IDS_REPLY_TIME_MS "timp=%1!d!ms %0"
IDS_REPLY_TIME_0MS "timp<1ms %0"
IDS_REPLY_TTL "TDV=%1!d!\n"
IDS_REPLY_STATUS "Răspunsul ecou este %1.\n"
IDS_DEST_HOST_UNREACHABLE "Gazda de destinație nu este accesibilă.\n"
IDS_DEST_NET_UNREACHABLE "Rețeaua de destinație nu este accesibilă.\n"
IDS_REQUEST_TIMED_OUT "Cererea a expirat.\n"
IDS_TTL_EXPIRED "TDV a expirat în tranzit.\n"
IDS_TRANSMIT_FAILED "PING: eșec la transmisie. (Eroare %u)\n"
IDS_TRANSMIT_FAILED "PING: eșec la transmisie. (Eroare %1!u!)\n"
IDS_STATISTICS "\n\
statistici de transmisie pentru %s:\n\
pachete: transmise = %d, recepționate = %d, pierdute %d (%d%% pierderi),\n"
statistici de transmisie pentru %1!s!:\n\
pachete: transmise = %2!d!, recepționate = %3!d!, pierdute %4!d! (%5!u!%% pierderi),\n"
IDS_APPROXIMATE_RTT "timpul aproximativ de tur-retur, in milisecunde:\n\
minim = %lums, maxim = %lums, mediu = %lums\n"
minim = %1!u!ms, maxim = %2!u!ms, mediu = %3!u!ms\n"
IDS_WINSOCK_FAIL "Eșec la inițializarea WinSock: %i\n"
IDS_WINSOCK_FAIL "Eșec la inițializarea WinSock: %1!d!\n"
END

View File

@@ -34,34 +34,34 @@ BEGIN
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Невозможно выделить требуемую память.\n"
IDS_MISSING_ADDRESS "Необходимо указать адрес IP.\n"
IDS_MISSING_VALUE "Для опции %s должно быть указано значение.\n"
IDS_BAD_OPTION "Неверная опция %s.\n"
IDS_BAD_PARAMETER "Неверный параметр %s.\n"
IDS_BAD_VALUE "Недопустимое значение параметра %s, допустимый диапазон с %u по %u.\n"
IDS_WRONG_FAMILY "Опция %s доступна только для %s.\n"
IDS_UNKNOWN_HOST "Ping не может найти узел %s. Пожалуйста, проверьте имя и повторите попытку.\n"
IDS_PINGING_ADDRESS "\nОбмен пакетами с %s "
IDS_PINGING_HOSTNAME "\nОбмен пакетами с %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"/* unused string */
IDS_PING_SIZE "по %lu байта данных:\n\n"
IDS_REPLY_FROM "Ответ от %s: "
IDS_REPLY_BYTES "число байт=%d "
IDS_REPLY_TIME_MS "время=%luмс "
IDS_REPLY_TIME_0MS "время<1мс "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Ответ от %lu.\n"
IDS_MISSING_VALUE "Для опции %1 должно быть указано значение.\n"
IDS_BAD_OPTION "Неверная опция %1.\n"
IDS_BAD_PARAMETER "Неверный параметр %1.\n"
IDS_BAD_VALUE "Недопустимое значение параметра %1, допустимый диапазон с %2!d! по %3!u!.\n"
IDS_WRONG_FAMILY "Опция %1 доступна только для %2.\n"
IDS_UNKNOWN_HOST "Ping не может найти узел %1. Пожалуйста, проверьте имя и повторите попытку.\n"
IDS_PINGING_ADDRESS "\nОбмен пакетами с %1 %0"
IDS_PINGING_HOSTNAME "\nОбмен пакетами с %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"/* unused string */
IDS_PING_SIZE "по %1!d! байта данных:\n\n"
IDS_REPLY_FROM "Ответ от %1: %0"
IDS_REPLY_BYTES "число байт=%1!d! %0"
IDS_REPLY_TIME_MS "время=%1!d!мс %0"
IDS_REPLY_TIME_0MS "время<1мс %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Ответ от %1.\n"
IDS_DEST_HOST_UNREACHABLE "Заданный узел недоступен.\n"
IDS_DEST_NET_UNREACHABLE "Заданная сеть недоступна.\n"
IDS_REQUEST_TIMED_OUT "Превышен интервал ожидания для запроса.\n"
IDS_TTL_EXPIRED "Превышен срок жизни (TTL) при передаче пакета.\n"
IDS_TRANSMIT_FAILED "PING: сбой передачи. (Ошибка %u)\n"
IDS_TRANSMIT_FAILED "PING: сбой передачи. (Ошибка %1!u!)\n"
IDS_STATISTICS "\n\
Статистика Ping для %s:\n\
Пакетов: отправлено = %d, получено = %d, потеряно %d (%d%% потерь),\n"
Статистика Ping для %1!s!:\n\
Пакетов: отправлено = %2!d!, получено = %3!d!, потеряно %4!d! (%5!u!%% потерь),\n"
IDS_APPROXIMATE_RTT "Приблизительное время приема-передачи в мс:\n\
Минимальное = %luмс, Максимальное = %luмс, Среднее = %luмс\n"
Минимальное = %1!u!мс, Максимальное = %2!u!мс, Среднее = %3!u!мс\n"
IDS_WINSOCK_FAIL "Не удалось инициализировать WinSock: %i\n"
IDS_WINSOCK_FAIL "Не удалось инициализировать WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Options:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Nuk mjaftojne burimet ne dispozicion.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Opsion i keq %s.\n"
IDS_BAD_PARAMETER "Parametra i keq %s.\n"
IDS_BAD_VALUE "Vlere e keqe per opsion %s, varh i vlefshem nga %u në %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPing ne vazhdim %s "
IDS_PINGING_HOSTNAME "\nPing ne vazhdim %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "me %lu bytes data:\n\n"
IDS_REPLY_FROM "Reply from %s: "
IDS_REPLY_BYTES "bytes=%d "
IDS_REPLY_TIME_MS "time=%lums "
IDS_REPLY_TIME_0MS "time<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Opsion i keq %1.\n"
IDS_BAD_PARAMETER "Parametra i keq %1.\n"
IDS_BAD_VALUE "Vlere e keqe per opsion %1, varh i vlefshem nga %2!d! në %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPing ne vazhdim %1 %0"
IDS_PINGING_HOSTNAME "\nPing ne vazhdim %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "me %1!d! bytes data:\n\n"
IDS_REPLY_FROM "Reply from %1: %0"
IDS_REPLY_BYTES "bytes=%1!d! %0"
IDS_REPLY_TIME_MS "time=%1!d!ms %0"
IDS_REPLY_TIME_0MS "time<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Kerkese kohe mbaroj.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Statistikat e Ping për %s:\n\
Packeta: Dërguar = %d, Marr = %d, Humbur %d (%d%% loss),\n"
Statistikat e Ping për %1!s!:\n\
Packeta: Dërguar = %2!d!, Marr = %3!d!, Humbur %4!d! (%5!u!%% loss),\n"
IDS_APPROXIMATE_RTT "Afersisht koha e matjes në mili-sekonda:\n\
Minimum = %lums, Maximum = %lums, Mesatar = %lums\n"
Minimum = %1!u!ms, Maximum = %2!u!ms, Mesatar = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Alternativ:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Inte tillräckliga resurser tillgänliga.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Ogiltigt alternativ %s.\n"
IDS_BAD_PARAMETER "Ogiltig parameter %s.\n"
IDS_BAD_VALUE "Ogiltigt värde för alternativ %s, giltig intervall är från %u till %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPingar %s "
IDS_PINGING_HOSTNAME "\nPingar %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "med %lu bytes data:\n\n"
IDS_REPLY_FROM "Svar från %s: "
IDS_REPLY_BYTES "bytes=%d "
IDS_REPLY_TIME_MS "tid=%lums "
IDS_REPLY_TIME_0MS "tid<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Ogiltigt alternativ %1.\n"
IDS_BAD_PARAMETER "Ogiltig parameter %1.\n"
IDS_BAD_VALUE "Ogiltigt värde för alternativ %1, giltig intervall är från %2!d! till %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPingar %1 %0"
IDS_PINGING_HOSTNAME "\nPingar %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "med %1!d! bytes data:\n\n"
IDS_REPLY_FROM "Svar från %1: %0"
IDS_REPLY_BYTES "bytes=%1!d! %0"
IDS_REPLY_TIME_MS "tid=%1!d!ms %0"
IDS_REPLY_TIME_0MS "tid<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Förfrågan gjorde timeout.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Ping statistk för %s:\n\
Packet: Sända = %d, Mottagna = %d, Förlorade %d (%d%% förlust),\n"
Ping statistk för %1!s!:\n\
Packet: Sända = %2!d!, Mottagna = %3!d!, Förlorade %4!d! (%5!u!%% förlust),\n"
IDS_APPROXIMATE_RTT "Ungefärliga slingtider i millisekunder:\n\
Minimum = %lums, Maximum = %lums, Genomsnittlig = %lums\n"
Minimum = %1!u!ms, Maximum = %2!u!ms, Genomsnittlig = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Seçenekler:\n\
IDS_CTRL_C "Denetim+C\n"
IDS_NO_RESOURCES "Kullanılabilir yeterli boş kaynak yok.\n"
IDS_MISSING_ADDRESS "IP adresi belirtilmelidir.\n"
IDS_MISSING_VALUE "Değer %s seçeneği için sağlanmalıdır.\n"
IDS_BAD_OPTION "Geçersiz seçenek: %s.\n"
IDS_BAD_PARAMETER "Geçersiz değişken: %s.\n"
IDS_BAD_VALUE "%s seçeneği için geçersiz değer, geçerli aralık %u'den %u'e dektir.\n"
IDS_WRONG_FAMILY "%s seçeneği yalnızca %s için desteklenmektedir.\n"
IDS_UNKNOWN_HOST "Ping %s anabilgisayarını bulamadı. Lütfen adı gözden geçirip yeniden deneyiniz.\n"
IDS_PINGING_ADDRESS "\nPing yapılıyor: %s "
IDS_PINGING_HOSTNAME "\nPing yapılıyor: %s [%s] "
IDS_SOURCE_ADDRESS "%s'den %s"
IDS_PING_SIZE " %lu çoklu veriyle:\n\n"
IDS_REPLY_FROM "%s varışından yanıt: "
IDS_REPLY_BYTES "çoklu=%d "
IDS_REPLY_TIME_MS "süre=%lums "
IDS_REPLY_TIME_0MS "süre<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Yankı yanıtı geri döndü %lu.\n"
IDS_MISSING_VALUE "Değer %1 seçeneği için sağlanmalıdır.\n"
IDS_BAD_OPTION "Geçersiz seçenek: %1.\n"
IDS_BAD_PARAMETER "Geçersiz değişken: %1.\n"
IDS_BAD_VALUE "%1 seçeneği için geçersiz değer, geçerli aralık %2!d!'den %3!u!'e dektir.\n"
IDS_WRONG_FAMILY "%1 seçeneği yalnızca %2 için desteklenmektedir.\n"
IDS_UNKNOWN_HOST "Ping %1 anabilgisayarını bulamadı. Lütfen adı gözden geçirip yeniden deneyiniz.\n"
IDS_PINGING_ADDRESS "\nPing yapılıyor: %1 %0"
IDS_PINGING_HOSTNAME "\nPing yapılıyor: %1 [%2] %0"
IDS_SOURCE_ADDRESS "%1!s!'den %0"
IDS_PING_SIZE " %1!d! çoklu veriyle:\n\n"
IDS_REPLY_FROM "%1 varışından yanıt: %0"
IDS_REPLY_BYTES "çoklu=%1!d! %0"
IDS_REPLY_TIME_MS "süre=%1!d!ms %0"
IDS_REPLY_TIME_0MS "süre<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Yankı yanıtı geri döndü %1.\n"
IDS_DEST_HOST_UNREACHABLE "Varış anabilgisayarı erişilemez.\n"
IDS_DEST_NET_UNREACHABLE "Varış ağı erişilemez.\n"
IDS_REQUEST_TIMED_OUT "İstek süre aşımına uğradı.\n"
IDS_TTL_EXPIRED "Geçişte yaşama süresi bitti.\n"
IDS_TRANSMIT_FAILED "PING: Geçiş başarısız oldu. (Yanlışlık %u)\n"
IDS_TRANSMIT_FAILED "PING: Geçiş başarısız oldu. (Yanlışlık %1!u!)\n"
IDS_STATISTICS "\n\
%s için ping sayımlamaları:\n\
Paketler: Gönderilen = %d, Alınan = %d, Yitirilen %d (%%%d yitik),\n"
%1!s! için ping sayımlamaları:\n\
Paketler: Gönderilen = %2!d!, Alınan = %3!d!, Yitirilen %4!d! (%%%5!u! yitik),\n"
IDS_APPROXIMATE_RTT "Mili sâniye olarak yaklaşık gidiş geliş süreleri:\n\
En Az = %lums, En Çok = %lums, Ortalama = %lums\n"
En Az = %1!u!ms, En Çok = %2!u!ms, Ortalama = %3!u!ms\n"
IDS_WINSOCK_FAIL "WinSock'u başlatma başarısız oldu: %i\n"
IDS_WINSOCK_FAIL "WinSock'u başlatma başarısız oldu: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Options:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Not enough resources available.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Bad option %s.\n"
IDS_BAD_PARAMETER "Bad parameter %s.\n"
IDS_BAD_VALUE "Bad value for option %s, valid range is from %u to %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %s "
IDS_PINGING_HOSTNAME "\nPinging %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "with %lu bytes of data:\n\n"
IDS_REPLY_FROM "Reply from %s: "
IDS_REPLY_BYTES "bytes=%d "
IDS_REPLY_TIME_MS "time=%lums "
IDS_REPLY_TIME_0MS "time<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Bad option %1.\n"
IDS_BAD_PARAMETER "Bad parameter %1.\n"
IDS_BAD_VALUE "Bad value for option %1, valid range is from %2!d! to %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %1 %0"
IDS_PINGING_HOSTNAME "\nPinging %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "with %1!d! bytes of data:\n\n"
IDS_REPLY_FROM "Reply from %1: %0"
IDS_REPLY_BYTES "bytes=%1!d! %0"
IDS_REPLY_TIME_MS "time=%1!d!ms %0"
IDS_REPLY_TIME_0MS "time<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Request timed out.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Ping statistics for %s:\n\
Packets: Sent = %d, Received = %d, Lost %d (%d%% loss),\n"
Ping statistics for %1!s!:\n\
Packets: Sent = %2!d!, Received = %3!d!, Lost %4!d! (%5!u!%% loss),\n"
IDS_APPROXIMATE_RTT "Approximate round-trip time in milliseconds:\n\
Minimum = %lums, Maximum = %lums, Average = %lums\n"
Minimum = %1!u!ms, Maximum = %2!u!ms, Average = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

View File

@@ -33,34 +33,34 @@ Options:\n\
IDS_CTRL_C "Control-C\n"
IDS_NO_RESOURCES "Not enough resources available.\n"
IDS_MISSING_ADDRESS "IP address must be specified.\n"
IDS_MISSING_VALUE "Value must be supplied for option %s.\n"
IDS_BAD_OPTION "Bad option %s.\n"
IDS_BAD_PARAMETER "Bad parameter %s.\n"
IDS_BAD_VALUE "Bad value for option %s, valid range is from %u to %u.\n"
IDS_WRONG_FAMILY "The option %s is only supported for %s.\n"
IDS_UNKNOWN_HOST "Ping could not find host %s. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %s "
IDS_PINGING_HOSTNAME "\nPinging %s [%s] "
IDS_SOURCE_ADDRESS "from %s %s"
IDS_PING_SIZE "with %lu bytes of data:\n\n"
IDS_REPLY_FROM "Reply from %s: "
IDS_REPLY_BYTES "bytes=%d "
IDS_REPLY_TIME_MS "time=%lums "
IDS_REPLY_TIME_0MS "time<1ms "
IDS_REPLY_TTL "TTL=%d\n"
IDS_REPLY_STATUS "Echo reply returned %lu.\n"
IDS_MISSING_VALUE "Value must be supplied for option %1.\n"
IDS_BAD_OPTION "Bad option %1.\n"
IDS_BAD_PARAMETER "Bad parameter %1.\n"
IDS_BAD_VALUE "Bad value for option %1, valid range is from %2!d! to %3!u!.\n"
IDS_WRONG_FAMILY "The option %1 is only supported for %2.\n"
IDS_UNKNOWN_HOST "Ping could not find host %1. Please check the name and try again.\n"
IDS_PINGING_ADDRESS "\nPinging %1 %0"
IDS_PINGING_HOSTNAME "\nPinging %1 [%2] %0"
IDS_SOURCE_ADDRESS "from %1!s! %0"
IDS_PING_SIZE "with %1!d! bytes of data:\n\n"
IDS_REPLY_FROM "Reply from %1: %0"
IDS_REPLY_BYTES "bytes=%1!d! %0"
IDS_REPLY_TIME_MS "time=%1!d!ms %0"
IDS_REPLY_TIME_0MS "time<1ms %0"
IDS_REPLY_TTL "TTL=%1!d!\n"
IDS_REPLY_STATUS "Echo reply returned %1.\n"
IDS_DEST_HOST_UNREACHABLE "Destination host unreachable.\n"
IDS_DEST_NET_UNREACHABLE "Destination net unreachable.\n"
IDS_REQUEST_TIMED_OUT "Request timed out.\n"
IDS_TTL_EXPIRED "TTL expired in transit.\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %u)\n"
IDS_TRANSMIT_FAILED "PING: transmit failed. (Error %1!u!)\n"
IDS_STATISTICS "\n\
Ping statistics for %s:\n\
Packets: Sent = %d, Received = %d, Lost %d (%d%% loss),\n"
Ping statistics for %1!s!:\n\
Packets: Sent = %2!d!, Received = %3!d!, Lost %4!d! (%5!u!%% loss),\n"
IDS_APPROXIMATE_RTT "Approximate round-trip time in milliseconds:\n\
Minimum = %lums, Maximum = %lums, Average = %lums\n"
Minimum = %1!u!ms, Maximum = %2!u!ms, Average = %3!u!ms\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %i\n"
IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n"
END

Some files were not shown because too many files have changed in this diff Show More