mirror of
https://github.com/WindowsNT351/CE-Collections.git
synced 2025-12-28 01:50:26 +08:00
Compare commits
80 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1166c60d51 | ||
|
|
fd0359a37c | ||
|
|
484fc1b738 | ||
|
|
2c7fb2ee94 | ||
|
|
62c66fec6c | ||
|
|
e9baf36447 | ||
|
|
70f2860221 | ||
|
|
7451b9cdb2 | ||
|
|
f6aa765b4d | ||
|
|
47aa52ee2a | ||
|
|
4c73dfbffc | ||
|
|
6393084f54 | ||
|
|
426d4b8e54 | ||
|
|
3c16010d41 | ||
|
|
b50be14f3b | ||
|
|
e7330cd0fe | ||
|
|
8f25400991 | ||
|
|
c8fc4b101c | ||
|
|
002e7b3c5b | ||
|
|
0fe5b9320f | ||
|
|
ee96f06234 | ||
|
|
b9be8f4746 | ||
|
|
afa21246ae | ||
|
|
c952d07516 | ||
|
|
0d833b1313 | ||
|
|
e646930fe4 | ||
|
|
b90ea3d6f8 | ||
|
|
5581c18bd8 | ||
|
|
54ffedacee | ||
|
|
5fe72cef2a | ||
|
|
7f435ff783 | ||
|
|
42c21b6a89 | ||
|
|
5f858be3cf | ||
|
|
3e46772429 | ||
|
|
259f2c563a | ||
|
|
045d733578 | ||
|
|
f44c8768a2 | ||
|
|
81f96c3ddf | ||
|
|
61ae773f22 | ||
|
|
290cb992e4 | ||
|
|
0baca08d13 | ||
|
|
c9817c23e5 | ||
|
|
661025fe1e | ||
|
|
7390ed79d7 | ||
|
|
11a9b235a5 | ||
|
|
78a2ebccf5 | ||
|
|
0258a742ae | ||
|
|
7dfea0158c | ||
|
|
0a6c025148 | ||
|
|
645dc67cac | ||
|
|
f485f1e31d | ||
|
|
00be57c2d3 | ||
|
|
3e3ff63cdc | ||
|
|
bda64c81a8 | ||
|
|
78af0daa47 | ||
|
|
711c11e0e2 | ||
|
|
e09fea8a0b | ||
|
|
66a6df7902 | ||
|
|
a0a71f9d81 | ||
|
|
628838bdf4 | ||
|
|
d0c435e777 | ||
|
|
ed3c72c32b | ||
|
|
7433f0f309 | ||
|
|
61ce5e589f | ||
|
|
358e0cbfeb | ||
|
|
7153c8532e | ||
|
|
284da074ce | ||
|
|
b411e92c6e | ||
|
|
d7a1ddfa64 | ||
|
|
aca0ac35ba | ||
|
|
15ce1d12c7 | ||
|
|
65277e2906 | ||
|
|
78f53ca0da | ||
|
|
6ede10e4f1 | ||
|
|
48ed4e73cc | ||
|
|
2e9d8f4b8b | ||
|
|
0d2a52cf81 | ||
|
|
56e6ecd2d4 | ||
|
|
1dc6113314 | ||
|
|
0cf8203cca |
@ -1,5 +1,5 @@
|
||||
/*CEVCHECK.EXE for CECollections P2.0 2.01*/
|
||||
/*Copyright 351Workshop 2022-2024*/
|
||||
/*CEVCHECK.EXE for CECollections 2.02*/
|
||||
/*Copyright 351Workshop 2022-2025*/
|
||||
/*Build on Tubro C++*/
|
||||
/*Run on x86 DOS*/
|
||||
|
||||
@ -11,17 +11,17 @@ int main(int argc, char **argv)
|
||||
{
|
||||
if (argc == 1)
|
||||
{
|
||||
printf("\nWindows CE video support checking program\n\n");
|
||||
printf("\nWindows CE video & CPU support checking program\n\n");
|
||||
printf("Usage: cevcheck [CEVER]\n");
|
||||
printf("CEVER sample: 211STD\n\n");
|
||||
|
||||
printf("Return: VESASupport*10+MobileSupport\n\n");
|
||||
printf("Last build:ver.201B101 Copyright 351Workshop 2022-2024\n");
|
||||
printf("Return: NormolCPUSpt*100 + LegacyDisp*10 + InverDisp\n\n");
|
||||
printf("Last build:ver.202B102 Copyright 351Workshop 2022-2025\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(!(argv[1][0] >= '0' && argv[1][0] <= '9'))
|
||||
return 100;
|
||||
return 200;
|
||||
char CEID[10] = {0};
|
||||
strcpy(CEID, argv[1]);
|
||||
|
||||
@ -32,6 +32,7 @@ int main(int argc, char **argv)
|
||||
char CEEdion[10] = { 0 };
|
||||
strncpy(CEEdion, CEID + 3, 3);
|
||||
|
||||
int currentCPUSupport = 1;
|
||||
int currentVESASupport = 1;
|
||||
int currentHalfSupport = 0;
|
||||
|
||||
@ -41,10 +42,16 @@ int main(int argc, char **argv)
|
||||
else
|
||||
currentVESASupport = 0;
|
||||
|
||||
if (iCEVer <= 210)
|
||||
currentCPUSupport=0;
|
||||
else
|
||||
currentCPUSupport=1;
|
||||
|
||||
if ((CEEdion[0] == 'S' && CEEdion[1] == 'P' && CEEdion[2] == 0) || (CEEdion[0] == 'P' && CEEdion[1] == 'P' && CEEdion[2] == 'C' && CEEdion[3] == 0))
|
||||
currentHalfSupport = 1;
|
||||
else
|
||||
currentHalfSupport = 0;
|
||||
|
||||
return currentVESASupport * 10 + currentHalfSupport;
|
||||
printf("%d",currentCPUSupport * 100 + currentVESASupport * 10 + currentHalfSupport);
|
||||
return currentCPUSupport * 100 + currentVESASupport * 10 + currentHalfSupport;
|
||||
}
|
||||
Binary file not shown.
BIN
DOS/LOADCEPC.exe/LOADCEPC.bsc
Normal file
BIN
DOS/LOADCEPC.exe/LOADCEPC.bsc
Normal file
Binary file not shown.
@ -611,7 +611,8 @@ main_error:
|
||||
XmsFreeExtendedMemory(usBlockHandle);
|
||||
}
|
||||
|
||||
printf("\n\n Press any key to cancel.\n");
|
||||
//printf("\n\n Press any key to cancel.\n");
|
||||
printf("\n\n ==============Press any key to cancel==============\n ");
|
||||
__asm
|
||||
{
|
||||
push dx
|
||||
@ -751,7 +752,7 @@ static void usage( char *pszProgramNameArg )
|
||||
" treated as the name of the file.\n"
|
||||
" It is an error for <pattern> to match multiple files\n"
|
||||
" when <destination> specifies a file.\n"
|
||||
"For CE Collections - Last built with ver.2.01-Beta1-02",
|
||||
"For CE Collections - Last built with ver.2.01-Beta1-03",
|
||||
|
||||
pszProgram );
|
||||
}
|
||||
@ -873,6 +874,8 @@ static int LoadImage( BOOL bVerbose,
|
||||
long int bootType;
|
||||
unsigned len;
|
||||
|
||||
char cReturnStri[60]={0};
|
||||
strcpy(cReturnStri,"\r \r\n ");
|
||||
|
||||
// Find the largest Extended Memory block and allocate it
|
||||
|
||||
@ -900,8 +903,8 @@ static int LoadImage( BOOL bVerbose,
|
||||
fprintf(stderr, " ");
|
||||
if( bVerbose )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
// Print info about memory available
|
||||
|
||||
printf( "Total free extended memory = %u, largest block = %u\n",
|
||||
usTotalFree, usLargestBlock);
|
||||
}
|
||||
@ -912,6 +915,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( xmsError != XMS_SUCCESS )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf( "Error allocating extended memory - %s\n",
|
||||
XmsErrorString(xmsError));
|
||||
|
||||
@ -932,7 +936,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( xmsError != XMS_SUCCESS )
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Error locking extended memory - %s\n", XmsErrorString(xmsError));
|
||||
|
||||
XmsFreeExtendedMemory(usBlockHandle);
|
||||
@ -950,7 +954,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( bVerbose )
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Block allocated at 0x%lX\n", ulLinearAddress);
|
||||
}
|
||||
|
||||
@ -976,7 +980,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( xmsError != XMS_SUCCESS )
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Error zeroing extended memory - %s\n", XmsErrorString(xmsError));
|
||||
if( !bParallelDownload && !bSerialDownload )
|
||||
_close(hImage);
|
||||
@ -1010,6 +1014,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( pszFileName )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
if( bSerialDownload )
|
||||
printf("Loading image %s via serial port.\r\n",pszFileName);
|
||||
else
|
||||
@ -1027,6 +1032,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
if( bSerialDownload )
|
||||
printf("Loading host default image via serial port.\r\n");
|
||||
else
|
||||
@ -1071,7 +1077,11 @@ static int LoadImage( BOOL bVerbose,
|
||||
}
|
||||
|
||||
|
||||
if( bVerbose ) printf("Sending boot packet: ");
|
||||
if( bVerbose )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Sending boot packet: ");
|
||||
}
|
||||
|
||||
usIndex=0;
|
||||
|
||||
@ -1082,7 +1092,11 @@ static int LoadImage( BOOL bVerbose,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if( bVerbose ) printf("%x ",BootPacket[usIndex]);
|
||||
if( bVerbose )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("%x ",BootPacket[usIndex]);
|
||||
}
|
||||
|
||||
if( bSerialDownload )
|
||||
{
|
||||
@ -1103,12 +1117,14 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( hImage == -1 )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("%s: Error opening file - %s\n", pszFileName, _strerror(NULL));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if( (lImageSize = _filelength(hImage)) == -1 )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("%s: Error obtaining file size - %s\n", pszFileName, _strerror(NULL));
|
||||
if( !bParallelDownload && !bSerialDownload )
|
||||
_close(hImage);
|
||||
@ -1118,6 +1134,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( bVerbose )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Loading %s, size = %ld\n", pszFileName, lImageSize);
|
||||
DisplayCEOSVersion( pszFileName ); // Extract Version Number from image if available
|
||||
}
|
||||
@ -1129,6 +1146,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( DownloadRead( hImage, ucBuffer, usReadSize, bParallelDownload) != usReadSize )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Error reading signature - %s\n", _strerror(NULL));
|
||||
if( !bParallelDownload && !bSerialDownload )
|
||||
_close(hImage);
|
||||
@ -1138,6 +1156,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( memcmp(ucBuffer, ucSignature, sizeof(ucSignature)) != 0 )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Error invalid signature\nData: ");
|
||||
for( i = 0; i < (int)usReadSize; i++ )
|
||||
printf("%x ",ucBuffer[i]);
|
||||
@ -1154,6 +1173,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( bVerbose )
|
||||
{
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf( "Image physical start = 0x%8.8lX, size = %ld\n",
|
||||
*(PULONG)&ucBuffer[sizeof(ucSignature)],
|
||||
*(PULONG)&ucBuffer[sizeof(ucSignature) + sizeof(ULONG)]);
|
||||
@ -1172,7 +1192,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( usAmountRead != 3 * sizeof(ULONG) )
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Error reading header - %s\n", XmsErrorString(xmsError));
|
||||
if( !bParallelDownload && !bSerialDownload )
|
||||
_close(hImage);
|
||||
@ -1195,14 +1215,14 @@ static int LoadImage( BOOL bVerbose,
|
||||
(ulSectionAddress + ulSectionSize) >
|
||||
(ulLinearAddress + (ULONG)usLargestBlock * 1024) )
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf(
|
||||
"Error image section doesn't fit in allocated block\n"
|
||||
"Block allocated at 0x%lX, size = %ld\n"
|
||||
"Section physical start = 0x%8.8lX, size = %ld\n"
|
||||
"Memory too low in your VM might cause this.\n"
|
||||
" Block allocated at 0x%lX, size = %ld\n"
|
||||
" Section physical start = 0x%8.8lX, size = %ld\n"
|
||||
" Memory too low in your VM might cause this.\n"
|
||||
"\n"
|
||||
">> Increase memory may fix this.\n",
|
||||
" >> Increase memory may fix this.\n",
|
||||
ulLinearAddress, (ULONG)usLargestBlock * 1024,
|
||||
ulSectionAddress, ulSectionSize);
|
||||
|
||||
@ -1214,7 +1234,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( bVerbose )
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf(
|
||||
"Section physical start = 0x%8.8lX, size = %ld\n",
|
||||
ulSectionAddress, ulSectionSize);
|
||||
@ -1236,7 +1256,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( usAmountRead != usReadSize )
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Error reading section - %s\n", XmsErrorString(xmsError));
|
||||
if( !bParallelDownload && !bSerialDownload )
|
||||
_close(hImage);
|
||||
@ -1261,7 +1281,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
|
||||
if( xmsError != XMS_SUCCESS )
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf("Error moving extended memory - %s\n", XmsErrorString(xmsError));
|
||||
if( !bParallelDownload && !bSerialDownload )
|
||||
_close(hImage);
|
||||
@ -1274,7 +1294,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
#if 0
|
||||
if( ulChecksum != ulSectionChecksum )
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
printf(
|
||||
"Bad checksum 0x%8.8lX, expected 0x%8.8lX\n",
|
||||
ulChecksum, ulSectionChecksum);
|
||||
@ -1305,7 +1325,7 @@ static int LoadImage( BOOL bVerbose,
|
||||
out dx, al
|
||||
pop dx
|
||||
}
|
||||
fprintf(stderr, "\r \r");
|
||||
fprintf(stderr,cReturnStri);
|
||||
|
||||
// Indicate success
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
13
DOS/VESATEST.exe/bld.bat
Normal file
13
DOS/VESATEST.exe/bld.bat
Normal file
@ -0,0 +1,13 @@
|
||||
@REM
|
||||
@REM Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
@REM
|
||||
@REM
|
||||
@REM Use of this sample source code is subject to the terms of the Microsoft
|
||||
@REM license agreement under which you licensed this sample source code. If
|
||||
@REM you did not accept the terms of the license agreement, you are not
|
||||
@REM authorized to use this sample source code. For the terms of the license,
|
||||
@REM please see the license agreement between you and Microsoft or, if applicable,
|
||||
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
|
||||
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
|
||||
@REM
|
||||
cl vesatest.c
|
||||
59
DOS/VESATEST.exe/setupen2.bat
Normal file
59
DOS/VESATEST.exe/setupen2.bat
Normal file
@ -0,0 +1,59 @@
|
||||
@REM
|
||||
@REM Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
@REM
|
||||
@REM
|
||||
@REM Use of this sample source code is subject to the terms of the Microsoft
|
||||
@REM license agreement under which you licensed this sample source code. If
|
||||
@REM you did not accept the terms of the license agreement, you are not
|
||||
@REM authorized to use this sample source code. For the terms of the license,
|
||||
@REM please see the license agreement between you and Microsoft or, if applicable,
|
||||
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
|
||||
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
|
||||
@REM
|
||||
|
||||
@ECHO OFF
|
||||
|
||||
@REM Note: Please read the README.TXT in this directory for build instructions
|
||||
@REM for loadcepc.
|
||||
@REM
|
||||
@REM The environment variable WINCEROOT must be set. The assembler
|
||||
@REM "ml" used for TRANSFER.ASM requires this program.
|
||||
|
||||
if "%_WINCEROOT%"=="" goto ERROR2
|
||||
|
||||
PROMPT *** 16-bit dev mode - type exit to return to normal ***$_%prompt%
|
||||
|
||||
@REM Locate the 16 bit dev tools. Try local drive, then Windows CE tree
|
||||
@REM and finally, the \\boneyard share.
|
||||
|
||||
if not exist %HOMEDRIVE%\msvc goto ENLIST_PATH
|
||||
set __MSVCDIR=%HOMEDRIVE%\msvc
|
||||
goto PATH_DONE
|
||||
|
||||
:ENLIST_PATH
|
||||
if not exist %_WINCEROOT%\sdk\vc150.win goto SHARE_PATH
|
||||
set __MSVCDIR=%_WINCEROOT%\sdk\vc150.win
|
||||
goto PATH_DONE
|
||||
|
||||
:SHARE_PATH
|
||||
if not exist \\boneyard\rellang\vc150.win\msvc goto ERROR
|
||||
set __MSVCDIR=\\boneyard\rellang\vc150.win\msvc
|
||||
|
||||
@REM Setup PATH, DevDir, LIB, and INCLUDE locations.
|
||||
|
||||
:PATH_DONE
|
||||
set PATH=%__MSVCDIR%\bin;%PATH%;%_WINCEROOT%\sdk\bin\i386;C:\MASM\BIN
|
||||
set MSDevDir=%__MSVCDIR%
|
||||
set LIB=%__MSVCDIR%\lib
|
||||
set INCLUDE=%__MSVCDIR%\include
|
||||
goto DONE
|
||||
|
||||
:ERROR
|
||||
echo ERROR: vc150.win path NOT found.
|
||||
goto DONE
|
||||
|
||||
:ERROR2
|
||||
echo ERROR: WINCEROOT must be set.
|
||||
|
||||
:DONE
|
||||
command
|
||||
22
DOS/VESATEST.exe/setupen2.bat_
Normal file
22
DOS/VESATEST.exe/setupen2.bat_
Normal file
@ -0,0 +1,22 @@
|
||||
@REM
|
||||
@REM Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
@REM
|
||||
@REM
|
||||
@REM Use of this sample source code is subject to the terms of the Microsoft
|
||||
@REM license agreement under which you licensed this sample source code. If
|
||||
@REM you did not accept the terms of the license agreement, you are not
|
||||
@REM authorized to use this sample source code. For the terms of the license,
|
||||
@REM please see the license agreement between you and Microsoft or, if applicable,
|
||||
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
|
||||
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
|
||||
@REM
|
||||
@echo off
|
||||
prompt 16-bit dev mode - type exit to return to normal$_%prompt%
|
||||
|
||||
if exist %_WINCEROOT%\sdk\vc150.win set __MSVCDIR=%_WINCEROOT%\sdk\vc150.win
|
||||
if not exist %_WINCEROOT%\sdk\vc150.win set __MSVCDIR=\\boneyard\rellang\vc150.win\msvc
|
||||
|
||||
set PATH=%__MSVCDIR%\bin;%PATH%;%_WINCEROOT%\sdk\bin\i386
|
||||
set MSDevDir=%__MSVCDIR%
|
||||
set lib=%__MSVCDIR%\lib
|
||||
set include=%__MSVCDIR%\include
|
||||
19
DOS/VESATEST.exe/setupenv.bat
Normal file
19
DOS/VESATEST.exe/setupenv.bat
Normal file
@ -0,0 +1,19 @@
|
||||
@REM
|
||||
@REM Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
@REM
|
||||
@REM
|
||||
@REM Use of this sample source code is subject to the terms of the Microsoft
|
||||
@REM license agreement under which you licensed this sample source code. If
|
||||
@REM you did not accept the terms of the license agreement, you are not
|
||||
@REM authorized to use this sample source code. For the terms of the license,
|
||||
@REM please see the license agreement between you and Microsoft or, if applicable,
|
||||
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
|
||||
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
|
||||
@REM
|
||||
|
||||
@echo off
|
||||
|
||||
SET _WINCEROOT=C:\WINCE600
|
||||
|
||||
%comspec% /k setupen2.bat
|
||||
|
||||
28
DOS/VESATEST.exe/setupenv.bat_
Normal file
28
DOS/VESATEST.exe/setupenv.bat_
Normal file
@ -0,0 +1,28 @@
|
||||
@REM
|
||||
@REM Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
@REM
|
||||
@REM
|
||||
@REM Use of this sample source code is subject to the terms of the Microsoft
|
||||
@REM license agreement under which you licensed this sample source code. If
|
||||
@REM you did not accept the terms of the license agreement, you are not
|
||||
@REM authorized to use this sample source code. For the terms of the license,
|
||||
@REM please see the license agreement between you and Microsoft or, if applicable,
|
||||
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
|
||||
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
|
||||
@REM
|
||||
@REM set __MSVCDIR=\\boneyard\boneyard-dfs\us\rellang\vc150.win\msvc
|
||||
@REM
|
||||
@REM set PATH=%__MSVCDIR%\bin;%PATH%;%_WINCEROOT%\sdk\bin\i386
|
||||
@REM set MSDevDir=%__MSVCDIR%
|
||||
@REM set lib=%__MSVCDIR%\lib
|
||||
@REM set include=%__MSVCDIR%\include
|
||||
|
||||
@REM
|
||||
@REM changed to the following code to allow exiting from 16-bit development mode back to the main 32 bit dev mode window
|
||||
@REM setupen2.bat also checks for vc1.5 being installed on the local HD (under %_WINCEROOT%\sdk\vc150.win) and uses that if found
|
||||
@REM else it goes to corpnet (under \\boneyard\rellan\vc150.win\msvc)
|
||||
@REM
|
||||
|
||||
@echo off
|
||||
%comspec% /k setupen2.bat
|
||||
|
||||
170
DOS/VESATEST.exe/vesatest.c
Normal file
170
DOS/VESATEST.exe/vesatest.c
Normal file
@ -0,0 +1,170 @@
|
||||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//
|
||||
//
|
||||
// Use of this sample source code is subject to the terms of the Microsoft
|
||||
// license agreement under which you licensed this sample source code. If
|
||||
// you did not accept the terms of the license agreement, you are not
|
||||
// authorized to use this sample source code. For the terms of the license,
|
||||
// please see the license agreement between you and Microsoft or, if applicable,
|
||||
// see the LICENSE.RTF on your install media or the root of your tools installation.
|
||||
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
|
||||
//
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <conio.h>
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
typedef int BOOL;
|
||||
|
||||
typedef unsigned char BYTE, *LPBYTE, UCHAR, *PUCHAR;
|
||||
typedef unsigned int USHORT, *PUSHORT;
|
||||
typedef unsigned long ULONG, *PULONG;
|
||||
|
||||
typedef unsigned short WORD, *PWORD;
|
||||
typedef unsigned long DWORD, *PDWORD;
|
||||
|
||||
typedef signed char INT8;
|
||||
typedef unsigned char UINT8;
|
||||
typedef signed short INT16;
|
||||
typedef unsigned short UINT16;
|
||||
typedef signed int INT32;
|
||||
typedef unsigned int UINT32;
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
typedef struct _VESA_GENERAL_INFO
|
||||
{
|
||||
UCHAR szSignature[4];
|
||||
WORD wVersion;
|
||||
UCHAR far * pszVendor;
|
||||
DWORD dwCapabilities;
|
||||
WORD far * pModeList;
|
||||
WORD wTotalMemory;
|
||||
WORD wOemSoftwareRev;
|
||||
UCHAR far* pszVenderName;
|
||||
UCHAR far* pszProductName;
|
||||
UCHAR far* pszProductRev;
|
||||
UCHAR ucReserved[222];
|
||||
UCHAR ucOemData[256];
|
||||
} VESA_GENERAL_INFO;
|
||||
|
||||
typedef struct _VESA_MODE_INFO
|
||||
{
|
||||
WORD wModeAttributes; /* Mode attributes */
|
||||
UCHAR ucWindowAAttributes; /* Window A attributes */
|
||||
UCHAR ucWindowBAttributes; /* Window B attributes */
|
||||
WORD wWindowGranularity; /* Window granularity in k */
|
||||
WORD wWindowSize; /* Window size in k */
|
||||
WORD wWindowASegment; /* Window A segment */
|
||||
WORD wWindowBSegment; /* Window B segment */
|
||||
DWORD pWindowSchemeFunction; /* Pointer to window function */
|
||||
WORD wBytesPerScanLine; /* Bytes per scanline */
|
||||
WORD wXResolution; /* Horizontal resolution */
|
||||
WORD wYResolution; /* Vertical resolution */
|
||||
UCHAR ucXCharSize; /* Character cell width */
|
||||
UCHAR ucYCharSize; /* Character cell height */
|
||||
UCHAR ucNumberOfPlanes; /* Number of memory planes */
|
||||
UCHAR ucBitsPerPixel; /* Bits per pixel */
|
||||
UCHAR ucNumberOfBanks; /* Number of CGA style banks */
|
||||
UCHAR ucMemoryModel; /* Memory model type */
|
||||
UCHAR ucBankSize; /* Size of CGA style banks */
|
||||
UCHAR ucNumberOfImagePages; /* Number of images pages */
|
||||
UCHAR ucReserved1; /* Reserved */
|
||||
UCHAR ucRedMaskSize; /* Size of direct color red mask */
|
||||
UCHAR ucRedFieldPosition; /* Bit posn of lsb of red mask */
|
||||
UCHAR ucGreenMaskSize; /* Size of direct color green mask */
|
||||
UCHAR ucGreenFieldPosition; /* Bit posn of lsb of green mask */
|
||||
UCHAR ucBlueMaskSize; /* Size of direct color blue mask */
|
||||
UCHAR ucBlueFieldPosition; /* Bit posn of lsb of blue mask */
|
||||
UCHAR ucRsvdMaskSize; /* Size of direct color res mask */
|
||||
UCHAR ucRsvdFieldPosition; /* Bit posn of lsb of res mask */
|
||||
UCHAR ucDirectColorModeInfo; /* Direct color mode attributes */
|
||||
/* VESA 2.0 variables */
|
||||
DWORD dwPhysBasePtr; /* physical address for flat frame buffer */
|
||||
UCHAR ucReserved2[212]; /* Pad to 256 byte block size */
|
||||
} VESA_MODE_INFO;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
int listedModes=0;
|
||||
void ListVideoModes(void)
|
||||
{
|
||||
VESA_GENERAL_INFO vesaInfo, far *pVesaInfo = &vesaInfo;
|
||||
WORD far * ModePtr;
|
||||
int ValidModeCount = 0;
|
||||
|
||||
vesaInfo.szSignature[0] = 'V';
|
||||
vesaInfo.szSignature[1] = 'B';
|
||||
vesaInfo.szSignature[2] = 'E';
|
||||
vesaInfo.szSignature[3] = '2';
|
||||
|
||||
__asm
|
||||
{
|
||||
push es
|
||||
mov ax, 04F00h ; Get VESA info
|
||||
les di, pVesaInfo ; Pointer to info buffer
|
||||
int 10h ; check for VESA
|
||||
pop es
|
||||
}
|
||||
|
||||
//printf("Vesa BIOS Version: %d.%d\n", vesaInfo.wVersion >> 8, vesaInfo.wVersion & 0xff);
|
||||
|
||||
ModePtr = vesaInfo.pModeList;
|
||||
|
||||
while (*ModePtr != 0xffff)
|
||||
{
|
||||
VESA_MODE_INFO modeInfo, far *pModeInfo = &modeInfo;
|
||||
WORD modeNumber = *ModePtr++;
|
||||
|
||||
__asm
|
||||
{
|
||||
push es
|
||||
mov cx, modeNumber ; mode to request info on
|
||||
les di, pModeInfo ; pointer to info buffer
|
||||
mov ax, 04f01h ; get MODE info
|
||||
int 10h
|
||||
pop es
|
||||
}
|
||||
|
||||
if (modeInfo.ucNumberOfPlanes == 1 &&
|
||||
modeInfo.dwPhysBasePtr != 0 &&
|
||||
modeInfo.ucBitsPerPixel != 15)
|
||||
{
|
||||
if(!(modeInfo.ucBitsPerPixel == 16 &&
|
||||
(modeInfo.ucRedMaskSize != 5 ||
|
||||
modeInfo.ucGreenMaskSize != 6 ||
|
||||
modeInfo.ucBlueMaskSize != 5)))
|
||||
{
|
||||
if ((ValidModeCount % 5) == 0)
|
||||
{
|
||||
//printf("\n");
|
||||
}
|
||||
/*printf(" %4dx%4dx%2d",
|
||||
modeInfo.wXResolution,
|
||||
modeInfo.wYResolution,
|
||||
modeInfo.ucBitsPerPixel);*/
|
||||
ValidModeCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//printf("\n\nNumber of valid FLAT driver modes: %d\n", ValidModeCount);
|
||||
listedModes=ValidModeCount;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
ListVideoModes();
|
||||
if(listedModes==0)
|
||||
{
|
||||
system("cls");
|
||||
printf("Your video card doesn't support VESA,please choose another one!\n");
|
||||
getch();
|
||||
while(1);
|
||||
}
|
||||
printf("VESATEST_201B103 - VESA check succesfuly\n");
|
||||
}
|
||||
|
||||
BIN
DOS/VESATEST.exe/vesatest.exe
Normal file
BIN
DOS/VESATEST.exe/vesatest.exe
Normal file
Binary file not shown.
BIN
DOS/VESATEST.exe/vesatest.obj
Normal file
BIN
DOS/VESATEST.exe/vesatest.obj
Normal file
Binary file not shown.
404
README.md
404
README.md
@ -1,58 +1,354 @@
|
||||
### CE Collections 2.0
|
||||
## 什么是CE Collections 2.0<br />
|
||||
CE Collections 2.0集合了几乎所有的CE镜像和模拟器,包括使用Loadcepc引导的x86Bin镜像、使用DeviceEmulator引导的ArmBin镜像和适用于Windows NT的Shell模拟器。<br />
|
||||
## 如何使用
|
||||
将iso载入虚拟光驱或虚拟机里(推荐Windows XP SP3,因为Windows PPC 2000模拟器无法在NT6.x上运行)打开根目录下的WNT\MENU.exe,选择想要开启的Windows CE版本,单击Run即可打开模拟器<br />
|
||||
注意,在这里只能打开以DeviceEmulator或ShellEmulator为基础的模拟器,若想引导x86Loadcepc,请在虚拟机内引导iso,进入到引导菜单后,选择想要的版本(用鼠标单击或使用键盘)。<br />
|
||||
在引导早期的CE时,菜单可能会询问是否使用高分辨率模式,这是因为现代虚拟机无法正常模拟当时的显卡,导致早期CE只能用低分辨率模式,如果想使用高分辨率模式,请使用PCEM或者86Box等可以模拟当时的硬件的模拟器,推荐使用PCEM中的S3 ViRGE<br />
|
||||
## QA:
|
||||
Q:从光盘引导后,选择Windows CE 2.x到Windows 3.x黑屏 A:分辨率可能选错了,在VMware等虚拟机中,需要使用低分辨率模式,另外,VMware新版本在模拟老系统时非常卡,也有可能导致黑屏。<br />
|
||||
Q:我已经使用了PCem,但是依旧用不了高分辨率 A:在PCem中,需要选择S3 ViRGE显卡搭配性能大于等于486/33的CPU才能使用高分辨率。<br />
|
||||
Q:PCem中,无法引导光盘 A:使用7Zip等压缩软件打开ISO文件,解压[boot]下的img文件,并从软盘引导。<br />
|
||||
Q:关机怎么用不了 A:真就用不了。<br />
|
||||
Q:在CEPC引导器中,选择完系统后显示Error image section doesn't fit in allocated block A:内存太小了,调大内存。<br />
|
||||
Q:Windows EC 2013引导后黑屏 A:创建虚拟机时不要使用VMware的DOS,换用Windows XP。<br />
|
||||
Q:Windows Mobile分辨率太抽象了 A:换另一个分辨率选项试试。<br />
|
||||
Q:Shell Emulator无法多个一起启动 A:不要多个Shell Emulator一起启动,若不小心一起启动,请注销或重启,并运行[CDROM]:\WNT\200HPC\ceu.reg。<br />
|
||||
Q:Windows PPC 2000没法在Windows Vista及以上系统工作 A:没办法,Windows API不兼容,所以最好的体验Shell Emulator的系统是Windows XP。
|
||||
Q:我的Windows CE/Mobile实体机不起动了,你能帮帮我吗 A:6<br />
|
||||
<div align="center">
|
||||
<img alt="LOGO" src="./WNT/menu3.exe/res/about.bmp" /><br />
|
||||
<h1>CE Collections -2.02-</h1>
|
||||
<p>不止一个合集</p>
|
||||
<p>
|
||||
English version: <a href="./README_EN.md">https://github.com/WindowsNT351/CE-Collections/blob/main/README_EN.md</a><br />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# ✏️ 什么是 CE Collections
|
||||
CE Collections 集合了几乎所有基于 CE 内核的官方Windows版本(例如 Windows CE Core,Windows Mobile,Windows Phone等)的镜像和模拟器。
|
||||
|
||||
镜像包括:
|
||||
- 使用 Loadcepc 引导的 x86Bin 镜像
|
||||
- 使用 DeviceEmulator 引导的 ArmBin 镜像
|
||||
- 使用 XDE Emulator 引导的 ArmBin 镜像
|
||||
|
||||
模拟器包括:
|
||||
- 适用于 Windows 7-11 的 <a href="https://github.com/WindowsNT351/Whitebox">Whitebox</a> 模拟器
|
||||
- 适用于 Windows XP-11 的 Arm DeviceEmulator 模拟器
|
||||
- 适用于 Windows 7 - 8.1 的 XDE Emulator 模拟器
|
||||
- 适用于 Windows NT(4.0-11,部分版本不支持新的Windows版本) 的独立 Shell 模拟器
|
||||
|
||||
# 📥 如何使用
|
||||
## WinNT平台模拟器使用方法
|
||||
1. 在插入光盘之前,启动宿主操作系统(NT4.0-Win11)。
|
||||
2. 插入光盘并等待弹出菜单,如果没有,运行[CD(DVD)ROM]:\WNT\Menu3.exe。
|
||||
3. 选择要启动的操作系统(模拟器)。注意,当使用不同的主机操作系统时,会有一些不同的限制。
|
||||
- Windows NT 4.0 可用Shell Emulator,这是Shell Emulator的最佳宿主操作系统。
|
||||
- Windows 2000 - XP 可以Shell Emulator(x64宿主系统上不能运行Auto PC 1.0)和ARM DeviceEmulator。
|
||||
- Windows 7 - 8.1 可用Shell Emulator(Pocket PC 2000和x64宿主系统上的Auto PC 1.0除外)ARM DeviceEmulator、XDE Emulator和Whitebox Emulator。
|
||||
- Windows 10 - 11 可用Shell Emulator(Pocket PC 2000和x64宿主系统上的Auto PC 1.0除外)ARM DeviceEmulator和Whitebox Emulator。
|
||||
<img src="./menuwnt.png" width="900px;" alt=""/>
|
||||
4. 完成!
|
||||
|
||||
## CEPC平台使用方法
|
||||
|
||||
**注意!CEPC平台并不能启动全部镜像或模拟器。**
|
||||
1. 插入光盘(或启动软盘)并从中启动。
|
||||
2. 选择要启动的操作系统,[下一页]和[上一页]按键位于右下角和左下角。注意,启动镜像时存在一些限制。
|
||||
- 全部镜像
|
||||
- 请使用大于64MB以上的内存,否则有些过大的镜像不能装载进内存或可用运行用内存过小,推荐使用128MB。
|
||||
- Windows CE 2.0-2.10
|
||||
- 对于PCem、VMware、VBox、Qemu现代实体机或其他现代虚拟机,这些镜像无法正常启动。
|
||||
- 对于86Box,请使用WinChip CPU,并关闭动态重编译器。
|
||||
- 对于实体机,请使用486或Pentium(586)CPU。
|
||||
<img src="./menudos.png" width="800px;" alt=""/>
|
||||
3. 选择想使用的分辨率或确认启动。请注意,启动镜像有时存在一些限制。
|
||||
- VGA8BPP显示驱动:
|
||||
- 对于VMware、VBox、Qemu或其他现代虚拟机,只能使用低分辨率模式。
|
||||
- 对于86Box PCem或实体机,务必使用S3视频卡(WinCE2.0使用S3Trio64,其他版本使用S3Virge),这样能开启高分辨率,否则只能使用低分辨率。
|
||||
- Windows Mobile 的VESA显示驱动:
|
||||
- 由于Windows Mobile显示为竖向,有些显卡在遇到此分辨率时会显示错误,发生这种情况时请尝试使用另一个分辨率。
|
||||
<img src="./menudos2.png" width="800px;" alt=""/>
|
||||
<img src="./menudos3.png" width="800px;" alt=""/>
|
||||
4. 完成!
|
||||
|
||||
# 🔧 CE-Collections 各部分是如何工作的
|
||||
## WinNT Platform
|
||||
1. 插入光盘,自动打开[CD(DVD)ROM]:\WNT\Menu3.exe
|
||||
2. Menu3.exe加载显示[CD(DVD)ROM]:\WNT\menu.enus配置文件,加载[CD(DVD)ROM]:\CECV20.D0版本配置文件。
|
||||
3. 选择要启动的模拟器/镜像
|
||||
- Shell Emulator类
|
||||
1. 使用shellmgr [模拟器种类] [路径] [主程序名称]。
|
||||
2. shellmgr将模拟器复制到系统(用户)TEMP文件夹。
|
||||
3. shellmgr检测宿主系统是否符合当前模拟器。
|
||||
4. shellmgr对于不同模拟器做准备工作。
|
||||
- WinCE 1.0: 设置需要的环境变量
|
||||
- HPC/PPC 2.x: 替换模板注册表内模拟器路径,合并注册表
|
||||
- PPC 2000: 替换模板注册表内模拟器路径,合并注册表(不同的目录结构)
|
||||
- APC 1.0: 替换模板注册表内模拟器路径,合并注册表,加载WCEFS.sys驱动,如果是Windows Vista以上系统,循环终止ApcHook.sys(如果不终止会导致系统蓝屏)。
|
||||
5. shellmgr启动对应的主程序。
|
||||
6. shellmgr等待主程序关闭。
|
||||
7. shellmgr卸载装载的驱动,删除临时文件。
|
||||
- ARM DeviceEmulator类
|
||||
1. 直接使用DeviceEmulator /video [适用于本镜像的分辨率] /memsize 256
|
||||
- CEPC WhiteboxEmulator类
|
||||
1. 直接使用Whitebox [分辨率选择,见CEPC,相比于DOSCEPC,此处区分更详细] /M:[对应的86Box配置文件] [NK.bin]
|
||||
- XDE Emulator类
|
||||
1. 使用xdemgr [XDE版本] [NK.bin]。
|
||||
2. xdemgr检测宿主系统是否符合当前模拟器。
|
||||
3. xdemgr复制XDE的VMM.sys(系统为32位)或VMM64.sys(系统为64位)到TEMP文件夹并加载。
|
||||
4. xdemgr复制XDE的配置文件到TEMP文件夹。
|
||||
5. xdemgr启动XDE模拟器。
|
||||
6. xdemgr等待XDE关闭。
|
||||
7. xdemgr卸载驱动,删除临时文件。
|
||||
## CEPC Platform
|
||||
1. 插入光盘/启动软盘,并从中引导至MS-DOS 7.1。
|
||||
2. 加载LOGO.sys显示启动logo。加载光驱驱动(IDE)。
|
||||
3. 检测D:是否为CE-Collections光盘,若不是,遍历寻找。
|
||||
4. 打开[CD(DVD)ROM]:\DOS\Menu.bat,加载[CD(DVD)ROM]:\CECV20.D0版本配置文件。
|
||||
5. 用户选择启动的镜像。
|
||||
6. 自动检测选择的镜像为何种镜像(2.0-2.10/2.11-2.12 HPC2000/3.0-2013/WinMobile)。
|
||||
- 2.0-2.10
|
||||
1. 显示警告提示框。
|
||||
2. 使用Loadcepc /D:3 [NK.bin]
|
||||
- 2.11-2.12 HPC2000
|
||||
1. 显示分辨率选择提示框。
|
||||
2. 高分辨率使用Loadcepc /D:3 [NK.bin]
|
||||
低分辨率使用Loadcepc /D:0 [NK.bin](此分辨率几乎不可用)
|
||||
- 3.0-2013
|
||||
1. 显示确认启动提示框。
|
||||
2. 使用Loadcepc /L:800x600x16 [NK.bin]
|
||||
- WinMobile
|
||||
1. 显示分辨率选择提示框。
|
||||
2. 修复分辨率使用Loadcepc /L:175x240x16 [NK.bin]
|
||||
原始分辨率使用Loadcepc /L:320x400x16 [NK.bin]
|
||||
### Loadcepc是什么?
|
||||
Loadcepc是Windows CE x86镜像的引导器(Bootloader),起到将NK.bin加载至内存,设置显示分辨率,跳转到指定地址的作用。
|
||||
DOS只是CE启动的跳板,CE启动后,DOS提供的中断例程和驻留在内存的程序将不可用,x86CE不是基于DOS的。
|
||||
|
||||
# ❓ QA
|
||||
Q: 在 86Box 或 PCem 中无法引导光盘
|
||||
A: 请使用 7Zip 等压缩软件打开 ISO 文件,解压 [boot] 文件夹中的 img 文件,然后从软盘引导。
|
||||
|
||||
Q: 在 CEPC 引导器中选择完系统后显示 “Error image section doesn't fit in allocated block”
|
||||
A: 内存可能设定过小,请适当调大内存。
|
||||
|
||||
Q: Windows EC 2013 引导后黑屏
|
||||
A: 内存可能设定过小,请适当调大内存。
|
||||
|
||||
Q: 为什么我在WinNT Loader里面打开某个版本后没有反应?
|
||||
A: 可能是窗口在Menu背后打开,或者宿主系统版本低于本模拟器所需的版本。
|
||||
|
||||
Q: 为什么整体内容是英文的?
|
||||
A: 因为英文镜像资源较全,构建也较完善,所以选择了英文版镜像;菜单等内容也相应采用英文格式。
|
||||
|
||||
Q: 我的 Windows CE/Mobile 实体机无法启动,能帮忙解决吗? / 能帮我安装一下这个WinCE软件吗?
|
||||
A: 无法回答。
|
||||
|
||||
Q: 你能把其他 Windows 系统集成进来吗?
|
||||
A: 请看项目名称——答案自明。
|
||||
|
||||
|
||||
## 以下是本项目集成的CE镜像和模拟器
|
||||
CEPC:<br />
|
||||
? Windows CE 2.11<br />
|
||||
√ Windows CE 2.12<br />
|
||||
√ Windows CE 3.0<br />
|
||||
√ Windows CE 4.0(Thin Client)<br />
|
||||
√ Windows CE 4.1(Thin Client)<br />
|
||||
√ Windows CE 4.2(Thin Client)<br />
|
||||
√ Windows CE 5(Thin Client,IP Phone)<br />
|
||||
√ Windows CE 6 [R3](Thin Client,IP Phone)<br />
|
||||
√ Windows EC 7(Thin Client,Silverlight)<br />
|
||||
√ Windows EC 2013(Thin Client,Silverlight)<br />
|
||||
√ Windows HPC 2000<br />
|
||||
√ Windows Mobile 2002 PPC<br />
|
||||
√ Windows Mobile 2002 SP<br />
|
||||
√ Windows Mobile 2003 PPC<br />
|
||||
√ Windows Mobile 2003 SP<br />
|
||||
√ Windows Mobile 2003 PPC SE<br />
|
||||
√ Windows Mobile 2003 SP SE<br />
|
||||
# 🔨 本项目集成的 CE 镜像和模拟器
|
||||
|
||||
| | | | CE-Collections Supporting | | |
|
||||
|---------------------------|---------|--------------|-----------------------------------|----------------------|----------------------|
|
||||
| | Version | Core Version | Name | Shell | Emulator |
|
||||
| | 1.x | 1.00 | Windows CE 1.00 | ----- | Shell Emulator |
|
||||
| | | 1.01 | Windows CE 1.01 | ----- | Shell Emulator |
|
||||
| | 2.x | 2.00 | Windows CE 2.0(or 2.01?) | ----- | CEPC |
|
||||
| | | | Handheld PC 2.0 | ----- | Shell Emulator |
|
||||
| | | 2.01 | Auto PC 1.0 | ----- | Shell Emulator |
|
||||
| | | | Palm-size PC 1.0 | ----- | Shell Emulator |
|
||||
| | | 2.10 | Windows CE 2.10 | ----- | CEPC |
|
||||
| | | 2.11 | Windows CE 2.11 | ----- | CEPC |
|
||||
| | | | Palm-size PC 1.1<br>(Simplified Chinese) | ----- | Shell Emulator |
|
||||
| | | | Palm-size PC 1.2 | ----- | Shell Emulator |
|
||||
| | | | Handheld PC 3.0 | ----- | Shell Emulator |
|
||||
| | | 2.12 | Windows CE 2.12 | ----- | CEPC |
|
||||
| | 3.x | 3.00 | Windows CE 3.0 | ----- | CEPC |
|
||||
| | | | Pocket PC 2000 | ----- | Shell Emulator |
|
||||
| | | | Handheld PC 2000 | ----- | CEPC |
|
||||
| | | | Windows Mobile 2002 | Pocket PC | CEPC |
|
||||
| | | | | Smart Phone | CEPC |
|
||||
| | 4.x | 4.00 | Windows CE 4.0 | Standard Shell | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | 4.10 | Windows CE 4.1 | Standard Shell | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | 4.20 | Windows CE 4.2 | Standard Shell | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | | Windows Mobile 2003 | Pocket PC | CEPC |
|
||||
| | | | | Smart Phone | CEPC |
|
||||
| | | 4.21 | Windows Mobile 2003 SE | Pocket PC | CEPC |
|
||||
| | | | | Smart Phone | CEPC |
|
||||
| | 5.x | 5.00 | Windows CE 5.0 | Standard Shell | CEPC |
|
||||
| | | | | IP Phone | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | | Networked Media Device 5.0 | ----- | CEPC |
|
||||
| | | 5.10 | Windows Mobile 5.0 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| Windows <br>CE Famliy | | | Windows Mobile 5.2 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | 5.20 | Windows Mobile 6.0 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.0.2 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.1 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.1.4 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.5 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.5.3 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | 6.x | 6.00 | Windows CE 6.0<br>(RTM&R2&R3) | Standard Shell | CEPC |
|
||||
| | | | | IP Phone | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | | | NMD UI(5.0) | CEPC |
|
||||
| | 7.x | 7.00 | Windows Embedded <br>Compact 7.0 | Standard Shell | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | | | Silverlight ThemeA | CEPC |
|
||||
| | | | | Silverlight ThemeB | CEPC |
|
||||
| | | | | Silverlight ThemeC | CEPC |
|
||||
| | | | | Silverlight ThemeD | CEPC |
|
||||
| | | | Automotive Embedded 7 | ----- | CEPC |
|
||||
| | | | Windows Phone 7 | ----- | XDE 1.0 |
|
||||
| | | | Windows Phone 7 NoDo | ----- | XDE 1.0 |
|
||||
| | | 7.10 | Windows Phone 7.5 | ----- | XDE "1.2" |
|
||||
| | | | Windows Phone 7.5 Refresh | ----- | XDE "1.2" |
|
||||
| | | | Windows Phone 7.8 | ----- | XDE "1.2" |
|
||||
| | 8.x | 8.00 | Windows Embedded <br>Compact 2013 | Mini Shell | CEPC |
|
||||
| | | | | Silverlight ThemeA | CEPC |
|
||||
| | | | | Silverlight ThemeB | CEPC |
|
||||
| | | | | Silverlight ThemeC | CEPC |
|
||||
| | | | | Silverlight ThemeD | CEPC |
|
||||
|
||||
|
||||
# ℹ 关于
|
||||
## 开发团队 / 贡献者
|
||||
<div class="center" >
|
||||
<table>
|
||||
<td>
|
||||
主开发者<br />
|
||||
- <a href="https://www.351workshop.top/">351 - 351Workshop@Bilibili</a><br />
|
||||
赞助<br />
|
||||
- <a href="https://space.bilibili.com/432808178">IBM_Official@Bilibili</a><br />
|
||||
- <a href="https://www.zhihu.com/people/peng-an-dr-quest/posts">蓬岸@知乎</a><br />
|
||||
</td>
|
||||
<td>
|
||||
镜像 / 开发工具提供<br />
|
||||
- <a href="https://space.bilibili.com/432808178">IBM_Official@Bilibili</a><br />
|
||||
- <a href="https://www.zhihu.com/people/peng-an-dr-quest/posts">蓬岸@知乎</a><br />
|
||||
- <a href="https://alexisgaming95.neocities.org/">lucss21a@Discord</a><br />
|
||||
美工<br />
|
||||
- <a href="https://space.bilibili.com/1756824708">WinPad - とある科学の手机副屏@Bilibili</a><br />
|
||||
</td>
|
||||
<td>
|
||||
协助开发<br />
|
||||
- <a href="https://space.bilibili.com/648710692">Inter - -INTER_INIT-@Bilibili</a><br />
|
||||
- <a href="https://space.bilibili.com/437201853">Zesa - Zesa_IO1i0lO@Bilibili</a><br />
|
||||
- <a href="https://space.bilibili.com/410046866">不务正业的金苹果@Bilibili</a><br />
|
||||
- <a href="https://space.bilibili.com/2057331843">DZY20070614@Bilibili</a><br />
|
||||
</td>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p align="center">
|
||||
开发团队 ONEW Studio QQ 群:981893945 —— 欢迎加入!
|
||||
</p>
|
||||
|
||||
## 特别感谢
|
||||
- ONEW Studio<br />
|
||||
- <a href="http://panretro.com">厦门市远东在线技术研究院</a><br />
|
||||
- <a href="https://www.compumuseum.com/">网页里的电脑博物馆</a><br />
|
||||
|
||||
## 使用到的其他开源项目
|
||||
- DOS-LOGO: http://retro.timb.us/Documents/Software/DOS-LOGO.html
|
||||
- Whitebox: https://github.com/WindowsNT351/Whitebox
|
||||
|
||||
# ⚒️ SDK及其他相关工具下载
|
||||
### Windows CE 1.x
|
||||
#### Windows CE 1.0x
|
||||
[Microsoft Visual C++ For Windows CE Version 1.0](https://archive.org/details/msvcceu.100)<br />
|
||||
<br />
|
||||
ARM Emulator:<br />
|
||||
√ Windows Mobile 5.0 PPC<br />
|
||||
√ Windows Mobile 5.0 SP<br />
|
||||
√ Windows Mobile 6.0 PPC<br />
|
||||
√ Windows Mobile 6.0 SP<br />
|
||||
√ Windows Mobile 6.1 PPC<br />
|
||||
√ Windows Mobile 6.1 SP<br />
|
||||
√ Windows Mobile 6.5 PPC<br />
|
||||
√ Windows Mobile 6.5 SP<br />
|
||||
|
||||
### Windows CE 2.x
|
||||
#### Windows CE 2.00
|
||||
Microsoft Windows CE Embedded Toolkit<br />
|
||||
[Microsoft Handheld PC 2.0 Platform SDK](https://archive.org/details/wincesdk)<br />
|
||||
#### Windows CE 2.01
|
||||
Microsoft Palm-size PC 1.0 Platform SDK: [Programming Windows CE Disc](https://archive.org/details/mspress_programmingwindowsce_0970002166)<br />
|
||||
Microsoft Auto PC 1.0 Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
|
||||
#### Windows CE 2.10
|
||||
[Microsoft Windows CE 2.10 Enhancement Pack for Windows CE Embedded Toolkit](https://www.betaarchive.com/database/view_release.php?uuid=0bef77bc-078b-468d-9ed0-18c51508948d)<br />
|
||||
#### Windows CE 2.11
|
||||
[Microsoft Windows CE 2.11 Platform Builder](https://archive.org/details/MicrosoftWindowsCEPlatformBuilder2.11Disc1.iso.7z)<br />
|
||||
[Microsoft Palm-size PC 1.1 Platform SDK](https://web.archive.org/web/20051218093617/http://download.microsoft.com/download/wincepalm/pdasdk/1.1/WCE/CN/PPC_SDK(CHS).zip)<br />
|
||||
Microsoft Palm-size PC 1.2 Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
|
||||
Microsoft Handheld PC 3.0(HPC Pro) Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
|
||||
#### Windows CE 2.12
|
||||
[Microsoft Windows CE 2.12 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=e73feaeb-c4dc-4915-9b16-1692c269d3b5)<br />
|
||||
<br />
|
||||
Shell Emulator:<br />
|
||||
√ Windows CE 1.0 Beta 2<br />
|
||||
√ Windows CE 1.0 Beta 3<br />
|
||||
√ Windows CE 1.0 RTM<br />
|
||||
√ Windows CE 2.00<br />
|
||||
√ Windows CE 2.11 Palm<br />
|
||||
√ Windows CE HPC 3<br />
|
||||
√ Windows PPC 2000<br />
|
||||
|
||||
### Windows CE 3.x
|
||||
#### Windows CE 3.00
|
||||
[Microsoft Windows CE 3.0 Platform Builder(Part 1)](https://archive.org/details/ms-wince-pb30)<br />
|
||||
[Microsoft Windows CE 3.0 Platform Builder(Part 2)](https://archive.org/details/ms-wince-pb30_5-11)<br />
|
||||
[Microsoft Pocket PC 2000(Palm-size PC 3.0) Platform SDK(Backup)](https://pan.baidu.com/s/14ykCvhJfTmiYzloPs6ApRg) 提取码6zjx<br />
|
||||
[Microsoft Handheld PC 2000 SDK](https://archive.org/details/hpc2ksdkusa)<br />
|
||||
[Microsoft Smart Phone 2002 SDK](https://archive.org/download/windows-mobile-sdks-2023/smartphone_2002_sdk.exe)<br />
|
||||
[Microsoft Pocket PC 2002 SDK](https://archive.org/download/windows-mobile-sdks-2023/ppc2002_sdk.exe)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 4.x
|
||||
#### Windows CE 4.00
|
||||
[Microsoft Windows CE.net 4.0 Platform Builder Emulation Edition(Backup)](https://www.123pan.com/s/KDyhTd-zTPN3) 提取码:eGCt<br />
|
||||
[Microsoft Windows CE.net 4.0 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=51000b20-9a15-4403-8b56-c3759aa682b7)<br />
|
||||
#### Windows CE 4.10
|
||||
[Microsoft Windows CE.net 4.1 Platform Builder Emulation Edition](https://archive.org/details/winceemul41)<br />
|
||||
[Microsoft Windows CE.net 4.1 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=fc6d66f5-e047-4303-9f0e-82e7f1de6645)<br />
|
||||
#### Windows CE 4.20
|
||||
[Microsoft Windows CE.net 4.2 Platform Builder Emulation Edition](https://archive.org/details/winceemul42)<br />
|
||||
[Microsoft Windows CE.net 4.2 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=2b657ca7-2b53-4aac-8b1e-446b5669fda9)<br />
|
||||
[Microsoft Windows Mobile 2003 SDK](https://archive.org/download/WMSDK/Microsoft%20Pocket%20PC%202003%20SDK.msi)<br />
|
||||
#### Windows CE 4.21
|
||||
[Microsoft Windows Mobile 2003 SE Images](https://archive.org/download/WMSDK/WM2003SEimages.msi)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 5.x
|
||||
#### Windows CE 5.00
|
||||
[Microsoft Windows CE.net 5.0 Platform Builder](https://archive.org/details/en_win_ce_net_cd1)<br />
|
||||
[Microsoft Windows CE.net 5.0 Networked Media Device Feature Pack](https://www.hpcfactor.com/downloads/2011/Windows_CE_5.0_Networked_Media_Device_Feature_Pack/version_1.0)<br />
|
||||
#### Windows CE 5.10
|
||||
[Microsoft Windows Mobile 5.0 SDK](https://archive.org/download/WMSDK/Windows%20Mobile%205.0%20Pocket%20PC%20SDK.msi)<br />
|
||||
[Microsoft Windows Mobile 5.2 Images](https://web.archive.org/web/20130219020835/http://download.microsoft.com/download/c/b/b/cbb8bc58-07b9-46bb-86ba-d12bb0d9b1d9/efp.msi)<br />
|
||||
#### Windows CE 5.20
|
||||
[Microsoft Windows Mobile 6 Professional SDK](https://web.archive.org/web/20200108141243*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Professional%20SDK.msi)<br />
|
||||
[Microsoft Windows Mobile 6 Standard SDK](https://web.archive.org/web/20200108142416*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Standard%20SDK.msi)<br />
|
||||
[Microsoft Windows Mobile 6.0.2 Professional SDK](https://web.archive.org/web/20231105012934*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Professional%20SDK%20Refresh.msi)<br />
|
||||
[Microsoft Windows Mobile 6.0.2 Standard SDK](https://web.archive.org/web/20220707014038*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Standard%20SDK%20Refresh.msi)<br />
|
||||
[Microsoft Windows Mobile 6.1 Standard Images](https://web.archive.org/web/20130330025109/http://download.microsoft.com/download/d/c/7/dc73c8e7-f9c3-49de-821f-5588eeefcac4/Windows%20Mobile%206.1%20Standard%20Images%20(USA).msi)<br />
|
||||
[Microsoft Windows Mobile 6.1 Professional Images](https://web.archive.org/web/20130330025531/http://download.microsoft.com/download/d/c/7/dc73c8e7-f9c3-49de-821f-5588eeefcac4/Windows%20Mobile%206.1%20Professional%20Images%20(USA).msi)<br />
|
||||
[Microsoft Windows Mobile 6.1.4 Professional Images](https://archive.org/download/WMSDK/Windows%20Mobile%206.1.4%20Professional%20Images%20%28USA%29.msi)<br />
|
||||
[Microsoft Windows Mobile 6.1.4 Standard Images](https://archive.org/download/WMSDK/Windows%20Mobile%206.1.4%20Standard%20Images%20%28USA%29.msi)<br />
|
||||
[Microsoft Windows Mobile 6.5 Professional DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5%20Professional%20Developer%20Tool%20Kit%20%28USA%29.msi)<br />
|
||||
[Microsoft Windows Mobile 6.5 Standard DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5%20Standard%20Developer%20Tool%20Kit%20%28USA%29.msi)<br />
|
||||
[Microsoft Windows Mobile 6.5.3 Professional DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5.3%20Professional%20DTK.msi)<br />
|
||||
[Microsoft Windows Mobile 6.5.3 Standard DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5.3%20Standard%20DTK.msi)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 6.x
|
||||
#### Windows CE 6.00
|
||||
[Microsoft Windows Embedded CE 6.0 Platform Builder](https://archive.org/details/en_windows_embedded_ce_6.0_dvd)<br />
|
||||
[Microsoft Windows Embedded CE 6.0 Platform Builder R2](https://archive.org/details/windows-embedded-ce-6.0-r2)<br />
|
||||
[Microsoft Windows Embedded CE 6.0 Platform Builder R3](https://archive.org/details/en_windows_embedded_ce_6.0_r3_dvd__x16-28730)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 7.x
|
||||
#### Windows CE 7.00
|
||||
[Microsoft Windows Embedded Compact 7.0 Platform Builder](https://archive.org/details/WindowsEmbeddedCompact7)<br />
|
||||
[Microsoft Windows Embedded Automotive 7.0 Platform Builder](https://archive.org/details/windows-embedded-automotive-7)<br />
|
||||
[Microsoft Windows Phone 7 SDK](https://archive.org/download/wpdt-rtm-en-1/WPDT_RTM_en1.iso)<br />
|
||||
#### Windows CE 7.10
|
||||
[Microsoft Windows Phone 7.1 SDK](https://archive.org/download/wpsdkv-71-en-1_202303/WPSDKv71_en1.iso)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 8.x
|
||||
#### Windows CE 8.00
|
||||
[Microsoft Windows Embedded Compact 2013 Platform Builder](https://archive.org/details/en_windows_embedded_compact_2013_x86_x64_dvd_2247108)
|
||||
|
||||
## 🤝友情链接
|
||||
[WinPad的CEShellCollection](https://github.com/WinPad1993/Windows_CE_Win32_Shell_Emulator_Collection_in_a_WindowsPE)<br />
|
||||
👆点击戳一下WinPad<br />
|
||||
[Inter的PenPointOS模拟器](https://github.com/Inter1006/PenPointOS_Vbox/tree/main)<br />
|
||||
👆点击戳一下Inter<br />
|
||||
|
||||
<br /><br /><br /><br />
|
||||
Copyright 351Workshop 2022-2025
|
||||
|
||||
|
||||
|
||||
333
README_EN.md
Normal file
333
README_EN.md
Normal file
@ -0,0 +1,333 @@
|
||||
<div align="center">
|
||||
<img alt="LOGO" src="./WNT/menu3.exe/res/about.bmp" /><br />
|
||||
<h1>CE Collections -2.02-</h1>
|
||||
<p>Not just a simple collection.</p>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# ✏️ What is CE Collections?
|
||||
CE Collections gathers almost all the official images and emulators based on the CE kernel (such as Windows CE Core Windows Mobile and Windows Phone).
|
||||
|
||||
The image includes:
|
||||
- x86Bin images booted via Loadcepc.
|
||||
- ArmBin images booted via DeviceEmulator.
|
||||
- ArmBin images booted via XDE Emulator.
|
||||
|
||||
The emulator includes:
|
||||
- <a href="https://github.com/WindowsNT351/Whitebox">Whitebox</a> Emulator compatible with Windows 7 - 11.
|
||||
- Arm DeviceEmulator Emulator compatible with Windows XP - 11.
|
||||
- XDE Emulator Emulator compatible with Windows 7 - 8.1.
|
||||
- Standalone Shell Emulator Emulator compatible with Windows NT(4.0 - 11, some of them don't support newer Windows).
|
||||
|
||||
# 📥 How to use?
|
||||
## WinNT Platform Emulator usage
|
||||
1. Boot the host OS(NT4.0 - Win11) before you Insert the disc.
|
||||
2. Insert the disc and wait the Menu pop out, if not, please run [CD(DVD)ROM]:\WNT\Menu3.exe.
|
||||
3. Select the OS(emulator) you want to start up. Please notice that there is some diffrent limitations when you're using diffrent host OS.
|
||||
- for Windows NT 4.0, you can use emulators based on Shell Emulator, this is the best host OS to use Shell Emulator.
|
||||
- for Windows 2000 - XP, you can use emulators based on Shell Emulator(except Auto PC 1.0 on x64 OS) and ARM Device Emulator.
|
||||
- for Windows 7 - 8.1, you can use emulator based on Shell Emulator(except Pocket PC 2000, and Auto PC 1.0 on x64 OS) ARM Device Emulator XDE Emulator and Whitebox Emulator.
|
||||
- for Windows 10 - 11, you can use emulator based on Shell Emulator(except Pocket PC 2000, and Auto PC 1.0 on x64 OS) ARM Device Emulator and Whitebox Emulator.
|
||||
4. Done! Enjoy your Windows CE.
|
||||
<img src="./menuwnt.png" width="900px;" alt=""/>
|
||||
|
||||
## CEPC Platform Emulator usage
|
||||
**Attention! CEPC Platform cannot boot all the images!**
|
||||
0. Make sure you have more than 64MB memory, lower than 64MB may cause the image can't be loaded into the memory. We suggest to use 128MB memory to use CEPC.
|
||||
1. Insert the disc(or boot floppy) and boot from it.
|
||||
2. Select the OS you want to boot, the [Next Page] and the [Previous Page] are in the bottom right and bottom left corner.Please notice that there is some limitations when you're booting 2.0-2.10 images.
|
||||
- for PCem VMware VBox Qemu modern real machine or other modern VMs, these image won't boot properly.
|
||||
- for 86Box, please use WinChip CPU without Dynamic Recompiler.
|
||||
- for old real machine, please use 486 or Pentium(586) CPU.
|
||||
<img src="./menudos.png" width="800px;" alt=""/>
|
||||
3. Select the resolution you want. Please notice that there is some limitations when you're booting 2.0-3.0 images which using VGA8BPP display driver.
|
||||
- for VMware VBox Qemu or other modern VMs, you can only use the Low Resolution mode.
|
||||
- for 86Box PCem or real machine, please use S3 video card(particular S3Trio64 for WinCE2.0 or S3Virge for higher version) as much as possible to use the High Resolution, if not, you can only use the Low Resolution.
|
||||
<img src="./menudos2.png" width="800px;" alt=""/>
|
||||
<img src="./menudos3.png" width="800px;" alt=""/>
|
||||
4. Done! Enjoy your Windows CE.
|
||||
|
||||
# 🔧 How does CE-Collections works?
|
||||
## WinNT Platform
|
||||
1. Insert the disc, Autorun will start [CD(DVD)ROM]:\WNT\Menu3.exe.
|
||||
2. Menu3.exe load and display [CD(DVD)ROM]:\WNT\menu.enus configuration file, and load [CD(DVD)ROM]:\CECV20.D0 version config file.
|
||||
3. Choose the emulator / image you want to boot(start).
|
||||
- Shell Emulator Family
|
||||
1. Run shellmgr [Type of emulator] [Path to emulator] [Main executable file path].
|
||||
2. Shellmgr copy the whole emulator files into TEMP(User or System) folder。
|
||||
3. Shellmgr check does the host OS is the required OS.
|
||||
4. Shellmgr doing preparation works.
|
||||
- for WinCE 1.0: Set the required environment variable.
|
||||
- for HPC/PPC 2.x: Replace the path to emulator in the REG file, Merge the REG file.
|
||||
- for PPC 2000: Replace the path to emulator in the REG file, Merge the REG file.(diffrent file structure)
|
||||
- for APC 1.0:Replace the path to emulator in the REG file, Merge the REG file, load WCEFS.sys driver. If the host is vista or higher, kill ApcHook.sys driver(if doen't do that will cause BSOD)。
|
||||
5. Shellmgr start the main executable file.
|
||||
6. Shellmgr wait for the main progrom closed.
|
||||
7. Shellmgr unload the driver and delete the TEMP files.
|
||||
- ARM DeviceEmulator Fmaily
|
||||
1. Run DeviceEmulator /video [resolution] /memsize 256
|
||||
- CEPC WhiteboxEmulator Family
|
||||
1. Run Whitebox [resolution, see CEPC. But much more detailed for each image here] /M:[86Box config file] [NK.bin]
|
||||
- XDE Emulator Family
|
||||
1. Run xdemgr [XDE Version] [NK.bin]。
|
||||
2. Xdemgr check does the host OS is the required OS。
|
||||
3. Xdemgr copy VMM.sys(if host OS is x86) or VMM64.sys(if host OS is AMD64) of XDE Emulator to TEMP folder and load it.
|
||||
4. Xdemgr copy the config file of XDE Emulator into TEMP folder.
|
||||
5. Xdemgr start XDE Emulator.
|
||||
6. Xdemgr wait for the Emulator closed。
|
||||
7. Xdemgr unload the driver and delete the TEMP files.
|
||||
## CEPC Platform
|
||||
1. Insert the disc / boot floppy disk, boot MS-DOS 7.1 from it。
|
||||
2. Load LOGO.sys display startup logo. Load CD(DVD)ROM driver(IDE)。
|
||||
3. Detect is D: drive a CE-Collections disc, if not, find the disc ergodic。
|
||||
4. Start [CD(DVD)ROM]:\DOS\Menu.bat, Load [CD(DVD)ROM]:\CECV20.D0 version config file.
|
||||
5. Choose the image to load.
|
||||
6. Auto detect which type is the image(2.0-2.10/2.11-2.12 HPC2000/3.0-2013/WinMobile)。
|
||||
- 2.0-2.10
|
||||
1. Display the Warning Dialog.
|
||||
2. Run Loadcepc /D:3 [NK.bin]
|
||||
- 2.11-2.12 HPC2000
|
||||
1. Display the Resolution Choosing Dialog.
|
||||
2. High Resolution use Loadcepc /D:3 [NK.bin]
|
||||
Low Resolution use Loadcepc /D:0 [NK.bin] (this resolution almost unusable)
|
||||
- 3.0-2013
|
||||
1. Display the Confirm Dialog.
|
||||
2. Run Loadcepc /L:800x600x16 [NK.bin]
|
||||
- WinMobile
|
||||
1. Display the Resolution Choosing Dialog.
|
||||
2. Fixed Resolution use Loadcepc /L:175x240x16 [NK.bin]
|
||||
Original Resolution use Loadcepc /L:320x400x16 [NK.bin]
|
||||
### What is Loadcepc?
|
||||
Loadcepc is Bootloader for Windows CE x86 images, it will load the NK.bin into memory, set the resolution, and jump to the boot address.
|
||||
DOS is just a springboard for CE, after CE booted, the interrupt of DOS won't work after that, x86CE does't based on DOS.
|
||||
|
||||
# ❓ QA
|
||||
Q: I cannot boot the disc in 86Box or PCem.
|
||||
A: Please use 7Zip or another compression tool to open the ISO file, extract the img file from the [boot] folder, and then boot from a floppy disk.
|
||||
|
||||
Q: In the CEPC bootloader, after selecting a system, it shows “Error image section doesn't fit in allocated block”.
|
||||
A: The memory might be set too low; please increase the memory allocation.
|
||||
|
||||
Q: After booting Windows EC 2013, the screen is black.
|
||||
A: The memory might be set too low; please increase the memory allocation.
|
||||
|
||||
Q: Why there is no any activities after I choose a version in WinNT Menu?
|
||||
A: The emulator may display behind the Menu, or the host OS is not the required OS for the emulator.
|
||||
|
||||
Q: My physical Windows CE/Mobile device doesn’t boot, can you help solve this? / Can you install this WinCE software for me?
|
||||
A: Well, I can't answer that.
|
||||
|
||||
Q: Can you integrate other Windows OS?
|
||||
A: Just look at the project name – the answer is self-evident.
|
||||
|
||||
|
||||
# 🔨 CE Images and Emulators Integrated in this Project
|
||||
|
||||
| | | | CE-Collections Supporting | | |
|
||||
|---------------------------|---------|--------------|-----------------------------------|----------------------|----------------------|
|
||||
| | Version | Core Version | Name | Shell | Emulator |
|
||||
| | 1.x | 1.00 | Windows CE 1.00 | ----- | Shell Emulator |
|
||||
| | | 1.01 | Windows CE 1.01 | ----- | Shell Emulator |
|
||||
| | 2.x | 2.00 | Windows CE 2.0(or 2.01?) | ----- | CEPC |
|
||||
| | | | Handheld PC 2.0 | ----- | Shell Emulator |
|
||||
| | | 2.01 | Auto PC 1.0 | ----- | Shell Emulator |
|
||||
| | | | Palm-size PC 1.0 | ----- | Shell Emulator |
|
||||
| | | 2.10 | Windows CE 2.10 | ----- | CEPC |
|
||||
| | | 2.11 | Windows CE 2.11 | ----- | CEPC |
|
||||
| | | | Palm-size PC 1.1<br>(Simplified Chinese) | ----- | Shell Emulator |
|
||||
| | | | Palm-size PC 1.2 | ----- | Shell Emulator |
|
||||
| | | | Handheld PC 3.0 | ----- | Shell Emulator |
|
||||
| | | 2.12 | Windows CE 2.12 | ----- | CEPC |
|
||||
| | 3.x | 3.00 | Windows CE 3.0 | ----- | CEPC |
|
||||
| | | | Pocket PC 2000 | ----- | Shell Emulator |
|
||||
| | | | Handheld PC 2000 | ----- | CEPC |
|
||||
| | | | Windows Mobile 2002 | Pocket PC | CEPC |
|
||||
| | | | | Smart Phone | CEPC |
|
||||
| | 4.x | 4.00 | Windows CE 4.0 | Standard Shell | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | 4.10 | Windows CE 4.1 | Standard Shell | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | 4.20 | Windows CE 4.2 | Standard Shell | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | | Windows Mobile 2003 | Pocket PC | CEPC |
|
||||
| | | | | Smart Phone | CEPC |
|
||||
| | | 4.21 | Windows Mobile 2003 SE | Pocket PC | CEPC |
|
||||
| | | | | Smart Phone | CEPC |
|
||||
| | 5.x | 5.00 | Windows CE 5.0 | Standard Shell | CEPC |
|
||||
| | | | | IP Phone | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | | Networked Media Device 5.0 | ----- | CEPC |
|
||||
| | | 5.10 | Windows Mobile 5.0 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| Windows <br>CE Famliy | | | Windows Mobile 5.2 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | 5.20 | Windows Mobile 6.0 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.0.2 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.1 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.1.4 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.5 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | | | Windows Mobile 6.5.3 | Pocket PC | Device Emulator |
|
||||
| | | | | Smart Phone | Device Emulator |
|
||||
| | 6.x | 6.00 | Windows CE 6.0<br>(RTM&R2&R3) | Standard Shell | CEPC |
|
||||
| | | | | IP Phone | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | | | NMD UI(5.0) | CEPC |
|
||||
| | 7.x | 7.00 | Windows Embedded <br>Compact 7.0 | Standard Shell | CEPC |
|
||||
| | | | | Thin Client | CEPC |
|
||||
| | | | | Silverlight ThemeA | CEPC |
|
||||
| | | | | Silverlight ThemeB | CEPC |
|
||||
| | | | | Silverlight ThemeC | CEPC |
|
||||
| | | | | Silverlight ThemeD | CEPC |
|
||||
| | | | Automotive Embedded 7 | ----- | CEPC |
|
||||
| | | | Windows Phone 7 | ----- | XDE 1.0 |
|
||||
| | | | Windows Phone 7 NoDo | ----- | XDE 1.0 |
|
||||
| | | 7.10 | Windows Phone 7.5 | ----- | XDE "1.2" |
|
||||
| | | | Windows Phone 7.5 Refresh | ----- | XDE "1.2" |
|
||||
| | | | Windows Phone 7.8 | ----- | XDE "1.2" |
|
||||
| | 8.x | 8.00 | Windows Embedded <br>Compact 2013 | Mini Shell | CEPC |
|
||||
| | | | | Silverlight ThemeA | CEPC |
|
||||
| | | | | Silverlight ThemeB | CEPC |
|
||||
| | | | | Silverlight ThemeC | CEPC |
|
||||
| | | | | Silverlight ThemeD | CEPC |
|
||||
|
||||
|
||||
# ℹ About
|
||||
## Develoment Team / Contributor
|
||||
<div class="center" >
|
||||
<table>
|
||||
<td>
|
||||
Developer<br />
|
||||
- <a href="https://www.351workshop.top/">351 - 351Workshop@Bilibili</a><br />
|
||||
Sponsor<br />
|
||||
- <a href="https://space.bilibili.com/432808178">IBM_Official@Bilibili</a><br />
|
||||
- <a href="https://www.zhihu.com/people/peng-an-dr-quest/posts">蓬岸@知乎</a><br />
|
||||
</td>
|
||||
<td>
|
||||
Image / Develoment Tools Providing<br />
|
||||
- <a href="https://space.bilibili.com/432808178">IBM_Official@Bilibili</a><br />
|
||||
- <a href="https://www.zhihu.com/people/peng-an-dr-quest/posts">蓬岸@知乎</a><br />
|
||||
- <a href="https://alexisgaming95.neocities.org/">lucss21a@Discord</a><br />
|
||||
Artworks<br />
|
||||
- <a href="https://space.bilibili.com/1756824708">WinPad - とある科学の手机副屏@Bilibili</a><br />
|
||||
</td>
|
||||
<td>
|
||||
Development Helper<br />
|
||||
- <a href="https://space.bilibili.com/648710692">Inter - -INTER_INIT-@Bilibili</a><br />
|
||||
- <a href="https://space.bilibili.com/437201853">Zesa - Zesa_IO1i0lO@Bilibili</a><br />
|
||||
- <a href="https://space.bilibili.com/410046866">不务正业的金苹果@Bilibili</a><br />
|
||||
- <a href="https://space.bilibili.com/2057331843">DZY20070614@Bilibili</a><br />
|
||||
</td>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
## Thanks to
|
||||
- ONEW Studio<br />
|
||||
- <a href="http://panretro.com">Fareast Online Research</a><br />
|
||||
- <a href="https://www.compumuseum.com/">Compumuseum</a><br />
|
||||
|
||||
## Other opensource project used in the project
|
||||
- DOS-LOGO: http://retro.timb.us/Documents/Software/DOS-LOGO.html
|
||||
- Whitebox: https://github.com/WindowsNT351/Whitebox
|
||||
|
||||
# ⚒️ SDK and other toolkits download
|
||||
### Windows CE 1.x
|
||||
#### Windows CE 1.0x
|
||||
[Microsoft Visual C++ For Windows CE Version 1.0](https://archive.org/details/msvcceu.100)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 2.x
|
||||
#### Windows CE 2.00
|
||||
Microsoft Windows CE Embedded Toolkit<br />
|
||||
[Microsoft Handheld PC 2.0 Platform SDK](https://archive.org/details/wincesdk)<br />
|
||||
#### Windows CE 2.01
|
||||
Microsoft Palm-size PC 1.0 Platform SDK: [Programming Windows CE Disc](https://archive.org/details/mspress_programmingwindowsce_0970002166)<br />
|
||||
Microsoft Auto PC 1.0 Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
|
||||
#### Windows CE 2.10
|
||||
[Microsoft Windows CE 2.10 Enhancement Pack for Windows CE Embedded Toolkit](https://www.betaarchive.com/database/view_release.php?uuid=0bef77bc-078b-468d-9ed0-18c51508948d)<br />
|
||||
#### Windows CE 2.11
|
||||
[Microsoft Windows CE 2.11 Platform Builder](https://archive.org/details/MicrosoftWindowsCEPlatformBuilder2.11Disc1.iso.7z)<br />
|
||||
[Microsoft Palm-size PC 1.1 Platform SDK](https://web.archive.org/web/20051218093617/http://download.microsoft.com/download/wincepalm/pdasdk/1.1/WCE/CN/PPC_SDK(CHS).zip)<br />
|
||||
Microsoft Palm-size PC 1.2 Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
|
||||
Microsoft Handheld PC 3.0(HPC Pro) Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
|
||||
#### Windows CE 2.12
|
||||
[Microsoft Windows CE 2.12 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=e73feaeb-c4dc-4915-9b16-1692c269d3b5)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 3.x
|
||||
#### Windows CE 3.00
|
||||
[Microsoft Windows CE 3.0 Platform Builder(Part 1)](https://archive.org/details/ms-wince-pb30)<br />
|
||||
[Microsoft Windows CE 3.0 Platform Builder(Part 2)](https://archive.org/details/ms-wince-pb30_5-11)<br />
|
||||
[Microsoft Pocket PC 2000(Palm-size PC 3.0) Platform SDK(Backup)](https://pan.baidu.com/s/14ykCvhJfTmiYzloPs6ApRg) Key 6zjx<br />
|
||||
[Microsoft Handheld PC 2000 SDK](https://archive.org/details/hpc2ksdkusa)<br />
|
||||
[Microsoft Smart Phone 2002 SDK](https://archive.org/download/windows-mobile-sdks-2023/smartphone_2002_sdk.exe)<br />
|
||||
[Microsoft Pocket PC 2002 SDK](https://archive.org/download/windows-mobile-sdks-2023/ppc2002_sdk.exe)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 4.x
|
||||
#### Windows CE 4.00
|
||||
[Microsoft Windows CE.net 4.0 Platform Builder Emulation Edition(Backup)](https://www.123pan.com/s/KDyhTd-zTPN3) Key eGCt<br />
|
||||
[Microsoft Windows CE.net 4.0 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=51000b20-9a15-4403-8b56-c3759aa682b7)<br />
|
||||
#### Windows CE 4.10
|
||||
[Microsoft Windows CE.net 4.1 Platform Builder Emulation Edition](https://archive.org/details/winceemul41)<br />
|
||||
[Microsoft Windows CE.net 4.1 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=fc6d66f5-e047-4303-9f0e-82e7f1de6645)<br />
|
||||
#### Windows CE 4.20
|
||||
[Microsoft Windows CE.net 4.2 Platform Builder Emulation Edition](https://archive.org/details/winceemul42)<br />
|
||||
[Microsoft Windows CE.net 4.2 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=2b657ca7-2b53-4aac-8b1e-446b5669fda9)<br />
|
||||
[Microsoft Windows Mobile 2003 SDK](https://archive.org/download/WMSDK/Microsoft%20Pocket%20PC%202003%20SDK.msi)<br />
|
||||
#### Windows CE 4.21
|
||||
[Microsoft Windows Mobile 2003 SE Images](https://archive.org/download/WMSDK/WM2003SEimages.msi)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 5.x
|
||||
#### Windows CE 5.00
|
||||
[Microsoft Windows CE.net 5.0 Platform Builder](https://archive.org/details/en_win_ce_net_cd1)<br />
|
||||
[Microsoft Windows CE.net 5.0 Networked Media Device Feature Pack](https://www.hpcfactor.com/downloads/2011/Windows_CE_5.0_Networked_Media_Device_Feature_Pack/version_1.0)<br />
|
||||
#### Windows CE 5.10
|
||||
[Microsoft Windows Mobile 5.0 SDK](https://archive.org/download/WMSDK/Windows%20Mobile%205.0%20Pocket%20PC%20SDK.msi)<br />
|
||||
[Microsoft Windows Mobile 5.2 Images](https://web.archive.org/web/20130219020835/http://download.microsoft.com/download/c/b/b/cbb8bc58-07b9-46bb-86ba-d12bb0d9b1d9/efp.msi)<br />
|
||||
#### Windows CE 5.20
|
||||
[Microsoft Windows Mobile 6 Professional SDK](https://web.archive.org/web/20200108141243*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Professional%20SDK.msi)<br />
|
||||
[Microsoft Windows Mobile 6 Standard SDK](https://web.archive.org/web/20200108142416*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Standard%20SDK.msi)<br />
|
||||
[Microsoft Windows Mobile 6.0.2 Professional SDK](https://web.archive.org/web/20231105012934*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Professional%20SDK%20Refresh.msi)<br />
|
||||
[Microsoft Windows Mobile 6.0.2 Standard SDK](https://web.archive.org/web/20220707014038*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Standard%20SDK%20Refresh.msi)<br />
|
||||
[Microsoft Windows Mobile 6.1 Standard Images](https://web.archive.org/web/20130330025109/http://download.microsoft.com/download/d/c/7/dc73c8e7-f9c3-49de-821f-5588eeefcac4/Windows%20Mobile%206.1%20Standard%20Images%20(USA).msi)<br />
|
||||
[Microsoft Windows Mobile 6.1 Professional Images](https://web.archive.org/web/20130330025531/http://download.microsoft.com/download/d/c/7/dc73c8e7-f9c3-49de-821f-5588eeefcac4/Windows%20Mobile%206.1%20Professional%20Images%20(USA).msi)<br />
|
||||
[Microsoft Windows Mobile 6.1.4 Professional Images](https://archive.org/download/WMSDK/Windows%20Mobile%206.1.4%20Professional%20Images%20%28USA%29.msi)<br />
|
||||
[Microsoft Windows Mobile 6.1.4 Standard Images](https://archive.org/download/WMSDK/Windows%20Mobile%206.1.4%20Standard%20Images%20%28USA%29.msi)<br />
|
||||
[Microsoft Windows Mobile 6.5 Professional DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5%20Professional%20Developer%20Tool%20Kit%20%28USA%29.msi)<br />
|
||||
[Microsoft Windows Mobile 6.5 Standard DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5%20Standard%20Developer%20Tool%20Kit%20%28USA%29.msi)<br />
|
||||
[Microsoft Windows Mobile 6.5.3 Professional DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5.3%20Professional%20DTK.msi)<br />
|
||||
[Microsoft Windows Mobile 6.5.3 Standard DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5.3%20Standard%20DTK.msi)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 6.x
|
||||
#### Windows CE 6.00
|
||||
[Microsoft Windows Embedded CE 6.0 Platform Builder](https://archive.org/details/en_windows_embedded_ce_6.0_dvd)<br />
|
||||
[Microsoft Windows Embedded CE 6.0 Platform Builder R2](https://archive.org/details/windows-embedded-ce-6.0-r2)<br />
|
||||
[Microsoft Windows Embedded CE 6.0 Platform Builder R3](https://archive.org/details/en_windows_embedded_ce_6.0_r3_dvd__x16-28730)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 7.x
|
||||
#### Windows CE 7.00
|
||||
[Microsoft Windows Embedded Compact 7.0 Platform Builder](https://archive.org/details/WindowsEmbeddedCompact7)<br />
|
||||
[Microsoft Windows Embedded Automotive 7.0 Platform Builder](https://archive.org/details/windows-embedded-automotive-7)<br />
|
||||
[Microsoft Windows Phone 7 SDK](https://archive.org/download/wpdt-rtm-en-1/WPDT_RTM_en1.iso)<br />
|
||||
#### Windows CE 7.10
|
||||
[Microsoft Windows Phone 7.1 SDK](https://archive.org/download/wpsdkv-71-en-1_202303/WPSDKv71_en1.iso)<br />
|
||||
<br />
|
||||
|
||||
### Windows CE 8.x
|
||||
#### Windows CE 8.00
|
||||
[Microsoft Windows Embedded Compact 2013 Platform Builder](https://archive.org/details/en_windows_embedded_compact_2013_x86_x64_dvd_2247108)
|
||||
|
||||
|
||||
<br /><br /><br /><br />
|
||||
Copyright 351Workshop 2022-2025
|
||||
|
||||
|
||||
BIN
TimeLine.xlsx
Normal file
BIN
TimeLine.xlsx
Normal file
Binary file not shown.
21
WNT/hiderun.exe/main.cpp
Normal file
21
WNT/hiderun.exe/main.cpp
Normal file
@ -0,0 +1,21 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <afxwin.h>
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if(argc<=1)
|
||||
return 1;
|
||||
char batBuffer[120] = { 0 };
|
||||
for (int i = 0; i < argc - 2; i++)
|
||||
{
|
||||
strcat_s(batBuffer, argv[i + 2]);
|
||||
strcat_s(batBuffer, " ");
|
||||
}
|
||||
cout << batBuffer << endl;
|
||||
ShellExecute(NULL, "open", argv[1], batBuffer, NULL, SW_HIDE);
|
||||
return 0;
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
Build2553 - 5RC2
|
||||
@ -1,104 +0,0 @@
|
||||
// DigHelp.cpp: 实现文件
|
||||
//
|
||||
|
||||
#include "pch.h"
|
||||
#include "menu2.h"
|
||||
#include "DigHelp.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
|
||||
// DigHelp 对话框
|
||||
|
||||
IMPLEMENT_DYNAMIC(DigHelp, CDialogEx)
|
||||
|
||||
DigHelp::DigHelp(CWnd* pParent /*=nullptr*/)
|
||||
: CDialogEx(IDD_DIALOG1, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
DigHelp::~DigHelp()
|
||||
{
|
||||
}
|
||||
|
||||
void DigHelp::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialogEx::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_STATIC1, m_text1);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(DigHelp, CDialogEx)
|
||||
ON_BN_CLICKED(IDOK, &DigHelp::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDCANCEL, &DigHelp::OnBnClickedCancel)
|
||||
ON_BN_CLICKED(IDC_BUTTON1, &DigHelp::OnBnClickedButton1)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// DigHelp 消息处理程序
|
||||
|
||||
|
||||
void DigHelp::OnBnClickedOk()
|
||||
{
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
CDialogEx::OnOK();
|
||||
}
|
||||
|
||||
|
||||
void DigHelp::OnBnClickedCancel()
|
||||
{
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
CDialogEx::OnCancel();
|
||||
}
|
||||
|
||||
int beforeNum = 0;
|
||||
TCHAR lpPath_[255] = { 0 };
|
||||
void DigHelp::OnBnClickedButton1()
|
||||
{
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
int maxInfo = GetPrivateProfileInt(L"sug", L"maxInfo", -1, lpPath_);
|
||||
TCHAR currentInfo[255] = { 0 };
|
||||
srand(time(0));
|
||||
int curNum = 0;
|
||||
do {
|
||||
curNum = rand() % maxInfo; // 生成随机数
|
||||
} while (curNum==beforeNum);
|
||||
beforeNum = curNum;
|
||||
TCHAR currentID[255] = { 0 };
|
||||
wsprintf(currentID, L"%d", curNum);
|
||||
GetPrivateProfileString(L"sug", currentID, NULL, currentInfo, 255, lpPath_);
|
||||
m_text1.SetWindowText(currentInfo);
|
||||
}
|
||||
|
||||
|
||||
BOOL DigHelp::OnInitDialog()
|
||||
{
|
||||
CDialogEx::OnInitDialog();
|
||||
|
||||
// TODO: 在此添加额外的初始化
|
||||
ShowWindow(SW_NORMAL);
|
||||
CRect rtDesk;
|
||||
CRect rtDlg;
|
||||
::GetWindowRect(::GetDesktopWindow(), &rtDesk);
|
||||
GetWindowRect(&rtDlg);
|
||||
int iXpos = rtDesk.Width() / 2 - rtDlg.Width() / 2;
|
||||
int iYpos = rtDesk.Height() / 2 - rtDlg.Height() / 2;
|
||||
SetWindowPos(NULL, iXpos, iYpos, 0, 0, SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
||||
|
||||
|
||||
GetCurrentDirectory(MAX_PATH, lpPath_);
|
||||
wsprintf(lpPath_, L"%s\\menu.enus", lpPath_);
|
||||
|
||||
int maxInfo = GetPrivateProfileInt(L"sug", L"maxInfo", -1, lpPath_);
|
||||
TCHAR currentInfo[255] = { 0 };
|
||||
srand(time(0));
|
||||
int randomNum = rand()%maxInfo; // 生成随机数
|
||||
beforeNum = randomNum;
|
||||
TCHAR currentID[255] = { 0 };
|
||||
wsprintf(currentID, L"%d", randomNum);
|
||||
GetPrivateProfileString(L"sug", currentID, NULL, currentInfo, 255, lpPath_);
|
||||
m_text1.SetWindowText(currentInfo);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 异常: OCX 属性页应返回 FALSE
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// DigHelp 对话框
|
||||
|
||||
class DigHelp : public CDialogEx
|
||||
{
|
||||
DECLARE_DYNAMIC(DigHelp)
|
||||
|
||||
public:
|
||||
DigHelp(CWnd* pParent = nullptr); // 标准构造函数
|
||||
virtual ~DigHelp();
|
||||
|
||||
// 对话框数据
|
||||
#ifdef AFX_DESIGN_TIME
|
||||
enum { IDD = IDD_DIALOG1 };
|
||||
#endif
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedButton1();
|
||||
virtual BOOL OnInitDialog();
|
||||
CStatic m_text1;
|
||||
};
|
||||
Binary file not shown.
Binary file not shown.
@ -1,22 +0,0 @@
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.pch
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\vc141.pdb
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\pch.obj
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2dlg.obj
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.obj
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\dighelp.obj
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\about.obj
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\release\menu2.exe
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\release\menu2.pdb
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\release\menu2.ipdb
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\release\menu2.iobj
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.res
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\cl.command.1.tlog
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\cl.read.1.tlog
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\cl.write.1.tlog
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\link.command.1.tlog
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\link.read.1.tlog
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\link.write.1.tlog
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\menu2.write.1u.tlog
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\rc.command.1.tlog
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\rc.read.1.tlog
|
||||
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\rc.write.1.tlog
|
||||
@ -1,7 +0,0 @@
|
||||
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\v141_xp\Toolset.targets(39,5): warning MSB8051: 面向 Windows XP 的支持已被弃用,将来的 Visual Studio 版本不再提供该支持。请访问 https://go.microsoft.com/fwlink/?linkid=2023588,获取详细信息。
|
||||
正在生成代码
|
||||
0 of 263 functions ( 0.0%) were compiled, the rest were copied from previous compilation.
|
||||
0 functions were new in current compilation
|
||||
0 functions had inline decision re-evaluated but remain unchanged
|
||||
已完成代码的生成
|
||||
menu2.vcxproj -> C:\Users\351\Documents\Visual Studio 2017\Projects\cec20\Release\menu2.exe
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
#TargetFrameworkVersion=v4.0:PlatformToolSet=v141_xp:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=7.0
|
||||
Release|Win32|C:\Users\351\Documents\Visual Studio 2017\Projects\cec20\|
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,112 +0,0 @@
|
||||
// about.cpp: 实现文件
|
||||
//
|
||||
|
||||
#include "pch.h"
|
||||
#include "menu2.h"
|
||||
#include "about.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
|
||||
// about 对话框
|
||||
|
||||
IMPLEMENT_DYNAMIC(about, CDialogEx)
|
||||
|
||||
about::about(CWnd* pParent /*=nullptr*/)
|
||||
: CDialogEx(IDD_ABOUT_DIALOG, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
about::~about()
|
||||
{
|
||||
}
|
||||
|
||||
void about::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialogEx::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_STATICVER, m_textver);
|
||||
DDX_Control(pDX, IDC_EDIT1, m_edit1);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(about, CDialogEx)
|
||||
ON_BN_CLICKED(IDOK, &about::OnBnClickedOk)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// about 消息处理程序
|
||||
|
||||
|
||||
void about::OnBnClickedOk()
|
||||
{
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
CDialogEx::OnOK();
|
||||
}
|
||||
|
||||
TCHAR* AsciiToUnicode(char *str)
|
||||
{
|
||||
DWORD dwNum = 0;
|
||||
dwNum = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
|
||||
TCHAR* pwHostName = new TCHAR[dwNum];
|
||||
MultiByteToWideChar(CP_ACP, 0, str, -1, pwHostName, dwNum);
|
||||
return pwHostName;
|
||||
}
|
||||
|
||||
TCHAR lpPath__[255] = { 0 };
|
||||
BOOL about::OnInitDialog()
|
||||
{
|
||||
CDialogEx::OnInitDialog();
|
||||
|
||||
// TODO: 在此添加额外的初始化
|
||||
ShowWindow(SW_NORMAL);
|
||||
CRect rtDesk;
|
||||
CRect rtDlg;
|
||||
::GetWindowRect(::GetDesktopWindow(), &rtDesk);
|
||||
GetWindowRect(&rtDlg);
|
||||
int iXpos = rtDesk.Width() / 2 - rtDlg.Width() / 2;
|
||||
int iYpos = rtDesk.Height() / 2 - rtDlg.Height() / 2;
|
||||
SetWindowPos(NULL, iXpos, iYpos, 0, 0, SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
||||
|
||||
wsprintf(lpPath__, L"..\\CECD0.20");
|
||||
|
||||
HANDLE hFile = CreateFile(
|
||||
lpPath__, // 文件名
|
||||
GENERIC_READ, // 读权限
|
||||
0, // 不共享
|
||||
NULL, // 安全属性
|
||||
OPEN_EXISTING, // 打开已存在的文件
|
||||
FILE_ATTRIBUTE_NORMAL, // 文件属性
|
||||
NULL // 模板文件的句柄
|
||||
);
|
||||
if (hFile == INVALID_HANDLE_VALUE) {
|
||||
MessageBox(L"ERROR");
|
||||
return 1;
|
||||
}
|
||||
// 确定文件大小
|
||||
DWORD dwFileSize = GetFileSize(hFile, NULL);
|
||||
// 分配内存读取文件
|
||||
char buffer[255] = { 0 };
|
||||
DWORD dwRead = 0;
|
||||
// 读取文件内容
|
||||
if (ReadFile(hFile, buffer, dwFileSize, &dwRead, NULL)) {
|
||||
buffer[dwFileSize] = '\0'; // 添加字符串终止符
|
||||
}
|
||||
// 关闭文件句柄
|
||||
CloseHandle(hFile);
|
||||
|
||||
m_textver.SetWindowText(AsciiToUnicode(buffer));
|
||||
|
||||
m_edit1.SetWindowText( L"Name Bilibili ID\r\n"
|
||||
"351 351Workshop\r\n"
|
||||
"Inter -INTER_INIT-\r\n"
|
||||
"WinPad とある科学の手机副屏\r\n"
|
||||
"GoldApple 不务正业的金苹果\r\n"
|
||||
"DZY DZY20070614\r\n"
|
||||
"Zesa LinuxMEMZ\r\n"
|
||||
"XJBLMNP(?");
|
||||
//HWND hWndEdit1 = m_edit1.GetSafeHwnd();
|
||||
//::SendMessage(hWndEdit1, EM_LINESCROLL, 0, 3);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 异常: OCX 属性页应返回 FALSE
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// about 对话框
|
||||
|
||||
class about : public CDialogEx
|
||||
{
|
||||
DECLARE_DYNAMIC(about)
|
||||
|
||||
public:
|
||||
about(CWnd* pParent = nullptr); // 标准构造函数
|
||||
virtual ~about();
|
||||
|
||||
// 对话框数据
|
||||
#ifdef AFX_DESIGN_TIME
|
||||
enum { IDD = IDD_ABOUT_DIALOG };
|
||||
#endif
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedOk();
|
||||
virtual BOOL OnInitDialog();
|
||||
CStatic m_textver;
|
||||
afx_msg void OnStnClicked65535();
|
||||
CEdit m_edit1;
|
||||
};
|
||||
@ -1,133 +0,0 @@
|
||||
// Win9x:
|
||||
//
|
||||
// The CRT now uses several "W" versions of functions which is more practial to require
|
||||
// the use of the Microsoft Layer for Unicode (MSLU) for Windows 9x to implement it. The
|
||||
// unicows.dll (for 9x) should be placed in the program folder with the .exe if using it.
|
||||
// unicows.dll is only loaded on 9x platforms. The way Win9x works without the MSLU is
|
||||
// that several "W" version of functions are located in kernel32.dll but they are just a
|
||||
// stub that returns failure code. To implement the unicode layer (unicows) the unicode.lib
|
||||
// must be linked prior to the other libs that should then linked in after unicode.lib.
|
||||
// The libraries are:
|
||||
//
|
||||
// kernel32.lib advapi32.lib user32.lib gdi32.lib shell32.lib comdlg32.lib
|
||||
// version.lib mpr.lib rasapi32.lib winmm.lib winspool.lib vfw32.lib
|
||||
// secur32.lib oleacc.lib oledlg.lib sensapi.lib
|
||||
//
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
// pull items from ntdef.h
|
||||
#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
|
||||
typedef _Return_type_success_(return >= 0) LONG NTSTATUS;
|
||||
|
||||
//
|
||||
// implementation of replacement function for GetModuleHandleExW
|
||||
//
|
||||
extern "C" BOOL WINAPI ImplementGetModuleHandleExW(DWORD dwFlags, LPCWSTR lpModuleName, HMODULE* phModule)
|
||||
{
|
||||
// check flag combinations
|
||||
if (phModule == NULL ||
|
||||
dwFlags & ~(GET_MODULE_HANDLE_EX_FLAG_PIN | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS) ||
|
||||
((dwFlags & GET_MODULE_HANDLE_EX_FLAG_PIN) && (dwFlags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT)) ||
|
||||
(lpModuleName == NULL && (dwFlags & GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS))) {
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
// check if to get by address
|
||||
if (dwFlags & GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS) {
|
||||
*phModule = NULL;
|
||||
|
||||
typedef PVOID(NTAPI *LPFN_RtlPcToFileHeader)(PVOID PcValue, PVOID * BaseOfImage);
|
||||
|
||||
const HMODULE hmodkernel32 = GetModuleHandleW(L"kernel32");
|
||||
const LPFN_RtlPcToFileHeader pfnRtlPcToFileHeader = reinterpret_cast<LPFN_RtlPcToFileHeader>(GetProcAddress(hmodkernel32, "RtlPcToFileHeader"));
|
||||
|
||||
if (pfnRtlPcToFileHeader) {
|
||||
// use RTL function (nt4+)
|
||||
pfnRtlPcToFileHeader((PVOID)lpModuleName, (PVOID*)phModule);
|
||||
}
|
||||
else {
|
||||
// query memory directly (win9x)
|
||||
MEMORY_BASIC_INFORMATION mbi;
|
||||
if (VirtualQuery((PVOID)lpModuleName, &mbi, sizeof(mbi)) >= offsetof(MEMORY_BASIC_INFORMATION, AllocationProtect)) {
|
||||
*phModule = reinterpret_cast<HMODULE>(mbi.AllocationBase);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
// standard getmodulehandle - to see if loaded
|
||||
*phModule = GetModuleHandleW(lpModuleName);
|
||||
}
|
||||
|
||||
|
||||
// check if module found
|
||||
if (*phModule == NULL) {
|
||||
SetLastError(ERROR_DLL_NOT_FOUND);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// check if reference needs updating
|
||||
if ((dwFlags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT) == 0) {
|
||||
|
||||
typedef NTSTATUS(NTAPI *LPFN_LdrAddRefDll)(ULONG Flags, PVOID BaseAddress);
|
||||
#define LDR_ADDREF_DLL_PIN 0x00000001
|
||||
|
||||
const HMODULE hmodntdll = GetModuleHandleW(L"ntdll");
|
||||
const LPFN_LdrAddRefDll pfnLdrAddRefDll = reinterpret_cast<LPFN_LdrAddRefDll>(GetProcAddress(hmodntdll, "LdrAddRefDll"));
|
||||
|
||||
if (pfnLdrAddRefDll) {
|
||||
// update dll reference
|
||||
if (!NT_SUCCESS(pfnLdrAddRefDll((dwFlags & GET_MODULE_HANDLE_EX_FLAG_PIN) ? LDR_ADDREF_DLL_PIN : 0, *phModule))) {
|
||||
SetLastError(ERROR_GEN_FAILURE);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (dwFlags & GET_MODULE_HANDLE_EX_FLAG_PIN) {
|
||||
SetLastError(ERROR_NOT_SUPPORTED);
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
WCHAR *filename;
|
||||
if ((filename = reinterpret_cast<WCHAR*>(VirtualAlloc(NULL, MAX_PATH * sizeof(WCHAR), MEM_COMMIT, PAGE_READWRITE))) != NULL) {
|
||||
DWORD ret = GetModuleFileNameW(*phModule, filename, MAX_PATH);
|
||||
if (ret < MAX_PATH) {
|
||||
*phModule = LoadLibraryW(filename);
|
||||
}
|
||||
else *phModule = NULL;
|
||||
VirtualFree(filename, 0, MEM_RELEASE);
|
||||
// ensure load library success
|
||||
if (*phModule == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//
|
||||
// implementation of replacement function for SetFilePointerEx
|
||||
//
|
||||
extern "C" BOOL WINAPI ImplementSetFilePointerEx(HANDLE hFile, LARGE_INTEGER liDistanceToMove, PLARGE_INTEGER lpNewFilePointer, DWORD dwMoveMethod)
|
||||
{
|
||||
DWORD ret = SetFilePointer(hFile, liDistanceToMove.LowPart, &liDistanceToMove.HighPart, dwMoveMethod);
|
||||
if (ret == INVALID_SET_FILE_POINTER) {
|
||||
if (GetLastError() != NO_ERROR) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
// check if provide file location
|
||||
if (lpNewFilePointer) {
|
||||
lpNewFilePointer->LowPart = ret;
|
||||
lpNewFilePointer->HighPart = liDistanceToMove.HighPart;
|
||||
}
|
||||
// success
|
||||
return TRUE;
|
||||
}
|
||||
@ -1,49 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef VC_EXTRALEAN
|
||||
#define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料
|
||||
#endif
|
||||
|
||||
#include "targetver.h"
|
||||
|
||||
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的
|
||||
|
||||
// 关闭 MFC 的一些常见且经常可放心忽略的隐藏警告消息
|
||||
#define _AFX_ALL_WARNINGS
|
||||
|
||||
#include <afxwin.h> // MFC 核心组件和标准组件
|
||||
#include <afxext.h> // MFC 扩展
|
||||
|
||||
|
||||
#include <afxdisp.h> // MFC 自动化类
|
||||
|
||||
|
||||
|
||||
#ifndef _AFX_NO_OLE_SUPPORT
|
||||
#include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持
|
||||
#endif
|
||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxcmn.h> // MFC 对 Windows 公共控件的支持
|
||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
|
||||
#include <afxcontrolbars.h> // MFC 支持功能区和控制条
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef _UNICODE
|
||||
#if defined _M_IX86
|
||||
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
||||
#elif defined _M_X64
|
||||
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
||||
#else
|
||||
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@ -1,250 +0,0 @@
|
||||
.386
|
||||
.MODEL flat, stdcall
|
||||
|
||||
USE_W_STRINGS EQU 1 ; Flag on which GetModuleHandle version to use
|
||||
USE_WIN9X EQU 1 ; Flag on if to include Win9x specific requirements
|
||||
|
||||
EXTRN STDCALL ImplementGetModuleHandleExW@12 : PROC
|
||||
EXTRN STDCALL ImplementSetFilePointerEx@20 : PROC
|
||||
|
||||
;; Declare functions that we will call statically
|
||||
IF USE_W_STRINGS
|
||||
EXTRN STDCALL _imp__GetModuleHandleW@4 : DWORD
|
||||
ELSE
|
||||
EXTRN STDCALL _imp__GetModuleHandleA@4 : DWORD
|
||||
ENDIF
|
||||
|
||||
EXTRN STDCALL _imp__GetProcAddress@8 : DWORD
|
||||
|
||||
|
||||
.DATA
|
||||
;; Override the import symbols from kernel32.dll
|
||||
__imp__InitializeSListHead@4 DWORD DownlevelInitializeSListHead
|
||||
__imp__GetModuleHandleExW@12 DWORD DownlevelGetModuleHandleExW
|
||||
__imp__EncodePointer@4 DWORD DownlevelEncodeDecodePointer
|
||||
__imp__DecodePointer@4 DWORD DownlevelEncodeDecodePointer
|
||||
;__imp__HeapSetInformation@16 dd DownlevelHeapSetInformation
|
||||
__imp__SetFilePointerEx@20 DWORD ImplementSetFilePointerEx@20
|
||||
|
||||
EXTERNDEF STDCALL __imp__InitializeSListHead@4 : DWORD
|
||||
EXTERNDEF STDCALL __imp__GetModuleHandleExW@12 : DWORD
|
||||
EXTERNDEF STDCALL __imp__EncodePointer@4 : DWORD
|
||||
EXTERNDEF STDCALL __imp__DecodePointer@4 : DWORD
|
||||
;EXTERNDEF STDCALL __imp__HeapSetInformation@16 : DWORD
|
||||
EXTERNDEF STDCALL __imp__SetFilePointerEx@20 : DWORD
|
||||
|
||||
|
||||
; For Win9x support - need to change return value to TRUE for the crt startup
|
||||
IF USE_WIN9X
|
||||
__imp__InitializeCriticalSectionAndSpinCount@8 DWORD DownlevelInitializeCriticalSectionAndSpinCount
|
||||
EXTERNDEF STDCALL __imp__InitializeCriticalSectionAndSpinCount@8 : DWORD
|
||||
ENDIF
|
||||
|
||||
CONST SEGMENT
|
||||
IF USE_W_STRINGS
|
||||
kszKernel32 DB 'k', 00H, 'e', 00H, 'r', 00H, 'n', 00H, 'e', 00H, 'l', 00H, '3', 00H, '2', 00H, 00H, 00H
|
||||
kszAdvApi32 DB 'a', 00H, 'd', 00H, 'v', 00H, 'a', 00H, 'p', 00H, 'i', 00H, '3', 00H, '2', 00H, 00H, 00H
|
||||
ELSE
|
||||
kszKernel32 DB "kernel32", 00H
|
||||
kszAdvApi32 DB "advapi32", 00H
|
||||
ENDIF
|
||||
|
||||
kszInitializeSListHead DB "InitializeSListHead", 00H
|
||||
kszGetModuleHandleExW DB "GetModuleHandleExW", 00H
|
||||
|
||||
kszInitializeCriticalSectionAndSpinCount DB "InitializeCriticalSectionAndSpinCount", 00H
|
||||
kszGetVersion DB "GetVersion", 00H
|
||||
|
||||
; Windows XP and Server 2003 and later have RtlGenRandom, which is exported as SystemFunction036.
|
||||
; If needed, we could fall back to CryptGenRandom(), but that will be much slower
|
||||
; because it has to drag in the entire crypto API.
|
||||
; (See also: https://blogs.msdn.microsoft.com/michael_howard/2005/01/14/cryptographically-secure-random-number-on-windows-without-using-cryptoapi/)
|
||||
; kszSystemFunction036 DB "SystemFunction036", 00H
|
||||
CONST ENDS
|
||||
|
||||
.CODE
|
||||
|
||||
; C++ translation:
|
||||
; extern "C" VOID WINAPI DownlevelInitializeSListHead(PSLIST_HEADER pHead)
|
||||
; {
|
||||
; const HMODULE hmodKernel32 = ::GetModuleHandleW(L"kernel32");
|
||||
; typedef decltype(InitializeSListHead)* pfnInitializeSListHead;
|
||||
; const pfnInitializeSListHead pfn = reinterpret_cast<pfnInitializeSListHead>(::GetProcAddress(hmodKernel32, "InitializeSListHead"));
|
||||
; if (pfn)
|
||||
; {
|
||||
; // call WinAPI function
|
||||
; pfn(pHead);
|
||||
; }
|
||||
; else
|
||||
; {
|
||||
; // fallback implementation for downlevel
|
||||
; pHead->Alignment = 0;
|
||||
; }
|
||||
; }
|
||||
DownlevelInitializeSListHead PROC
|
||||
;; Get a handle to the DLL containing the function of interest.
|
||||
push OFFSET kszKernel32
|
||||
IF USE_W_STRINGS
|
||||
call DWORD PTR _imp__GetModuleHandleW@4 ; Returns the handle to the library in EAX.
|
||||
ELSE
|
||||
call DWORD PTR _imp__GetModuleHandleA@4 ; Returns the handle to the library in EAX.
|
||||
ENDIF
|
||||
|
||||
;; Attempt to obtain a pointer to the function of interest.
|
||||
push OFFSET kszInitializeSListHead ; Push 2nd parameter (string containing function's name).
|
||||
push eax ; Push 1st parameter (handle to the library).
|
||||
call DWORD PTR _imp__GetProcAddress@8 ; Returns the pointer to the function in EAX.
|
||||
|
||||
;; Test for success, and call the function if we succeeded.
|
||||
test eax, eax ; See if we successfully retrieved a pointer to the function.
|
||||
je SHORT FuncNotSupported ; Jump on failure (ptr == 0), or fall through in the most-likely case.
|
||||
jmp eax ; We succeeded (ptr != 0), so tail-call the function.
|
||||
|
||||
;; The dynamic call failed, presumably because the function isn't available.
|
||||
;; So do what _RtlInitializeSListHead@4 (which is what we jump to on uplevel platforms) does,
|
||||
;; which is to set pHead->Alignment to 0. It is a QWORD-sized value, so 32-bit code must
|
||||
;; clear both of the DWORD halves.
|
||||
FuncNotSupported:
|
||||
mov edx, DWORD PTR [esp+4] ; get pHead->Alignment
|
||||
xor eax, eax
|
||||
mov DWORD PTR [edx], eax ; pHead->Alignment = 0
|
||||
mov DWORD PTR [edx+4], eax
|
||||
ret 4
|
||||
DownlevelInitializeSListHead ENDP
|
||||
|
||||
|
||||
; C++ translation:
|
||||
; extern "C" BOOL WINAPI DownlevelGetModuleHandleExW(DWORD dwFlags, LPCTSTR lpModuleName, HMODULE* phModule)
|
||||
; {
|
||||
; const HMODULE hmodKernel32 = ::GetModuleHandleW(L"kernel32");
|
||||
; typedef decltype(GetModuleHandleExW)* pfnGetModuleHandleExW;
|
||||
; const pfnGetModuleHandleExW pfn = reinterpret_cast<pfnGetModuleHandleExW>(::GetProcAddress(hmodKernel32, "GetModuleHandleExW"));
|
||||
; if (pfn)
|
||||
; {
|
||||
; // call WinAPI function
|
||||
; return pfn(dwFlags, lpModuleName, phModule);
|
||||
; }
|
||||
; else
|
||||
; {
|
||||
; // fallback for downlevel: return failure
|
||||
; return FALSE;
|
||||
; }
|
||||
; }
|
||||
DownlevelGetModuleHandleExW PROC
|
||||
;; Get a handle to the DLL containing the function of interest.
|
||||
push OFFSET kszKernel32
|
||||
IF USE_W_STRINGS
|
||||
call DWORD PTR _imp__GetModuleHandleW@4 ; Returns the handle to the library in EAX.
|
||||
ELSE
|
||||
call DWORD PTR _imp__GetModuleHandleA@4 ; Returns the handle to the library in EAX.
|
||||
ENDIF
|
||||
|
||||
;; Attempt to obtain a pointer to the function of interest.
|
||||
push OFFSET kszGetModuleHandleExW ; Push 2nd parameter (string containing function's name).
|
||||
push eax ; Push 1st parameter (handle to the library).
|
||||
call DWORD PTR _imp__GetProcAddress@8 ; Returns the pointer to the function in EAX.
|
||||
|
||||
;; Test for success, and call the function if we succeeded.
|
||||
test eax, eax ; See if we successfully retrieved a pointer to the function.
|
||||
je SHORT FuncNotSupported ; Jump on failure (ptr == 0), or fall through in the most-likely case.
|
||||
jmp eax ; We succeeded (ptr != 0), so tail-call the function.
|
||||
|
||||
;; The dynamic call failed, presumably because the function isn't available.
|
||||
;; The basic VS 2015 CRT (used in a simple Win32 app) only calls this function
|
||||
;; in try_cor_exit_process(), as called from common_exit (both in exit.cpp),
|
||||
;; where it uses it to attempt to get a handle to the module mscoree.dll.
|
||||
;; Since we don't care about managed apps, that attempt should rightfully fail.
|
||||
;; If this turns out to be used in other contexts, we'll need to revisit this
|
||||
;; and implement a proper fallback.
|
||||
FuncNotSupported:
|
||||
jmp ImplementGetModuleHandleExW@12
|
||||
|
||||
DownlevelGetModuleHandleExW ENDP
|
||||
|
||||
DownlevelEncodeDecodePointer proc
|
||||
mov eax, [esp+4]
|
||||
ret 4
|
||||
DownlevelEncodeDecodePointer endp
|
||||
|
||||
; DownlevelHeapSetInformation proc
|
||||
; mov eax, 1
|
||||
; ret 10h
|
||||
; DownlevelHeapSetInformation endp
|
||||
|
||||
; DownlevelSystemFunction036 PROC
|
||||
; int 3 ; break --- stub unimplemented
|
||||
; ret 8
|
||||
; DownlevelSystemFunction036 ENDP
|
||||
|
||||
|
||||
; Win9x section
|
||||
IF USE_WIN9X
|
||||
|
||||
; here we need to return 1 for the crt startup code which checks the return value which on 9x is "none" (throws exception instead)
|
||||
; This section will change the imported function on the first call for NT based OS so that every call doesn't require additional processing.
|
||||
|
||||
DownlevelInitializeCriticalSectionAndSpinCount proc
|
||||
|
||||
push OFFSET kszKernel32
|
||||
IF USE_W_STRINGS
|
||||
call DWORD PTR _imp__GetModuleHandleW@4 ; Returns the handle to the library in EAX.
|
||||
ELSE
|
||||
call DWORD PTR _imp__GetModuleHandleA@4 ; Returns the handle to the library in EAX.
|
||||
ENDIF
|
||||
|
||||
;; Save copy of handle
|
||||
push eax
|
||||
|
||||
;; Attempt to obtain a pointer to the function of interest.
|
||||
push OFFSET kszInitializeCriticalSectionAndSpinCount ; Push 2nd parameter (string containing function's name).
|
||||
push eax ; Push 1st parameter (handle to the library).
|
||||
call DWORD PTR _imp__GetProcAddress@8 ; Returns the pointer to the function in EAX.
|
||||
|
||||
;; Test for success, and call the function if we succeeded.
|
||||
test eax, eax ; See if we successfully retrieved a pointer to the function.
|
||||
jz SHORT FuncNotSupported ; Jump on failure (ptr == 0), or fall through in the most-likely case.
|
||||
|
||||
;; save address and get back kernel32 handle
|
||||
xchg dword ptr [esp],eax
|
||||
|
||||
;; Attempt to obtain a pointer to the function of interest.
|
||||
push OFFSET kszGetVersion ; Push 2nd parameter (string containing function's name).
|
||||
push eax ; Push 1st parameter (handle to the library).
|
||||
call DWORD PTR _imp__GetProcAddress@8 ; Returns the pointer to the function in EAX.
|
||||
|
||||
;; See if function exists
|
||||
test eax,eax
|
||||
jz SHORT FuncNotSupported
|
||||
|
||||
;; call GetVersion
|
||||
call eax
|
||||
|
||||
;; check if win9x
|
||||
test eax,80000000h
|
||||
pop eax ; get back address of InitializeCriticalSectionAndSpinCount function
|
||||
jz WinNT
|
||||
|
||||
;; for Win9x we need to call and then change return code
|
||||
push [esp+8] ; Copy the 1st parameter (+4 for IP return address, +4 for fist param)
|
||||
push [esp+8] ; Copy the 2nd parameter (recall esp moves on push)
|
||||
call eax
|
||||
mov eax,1
|
||||
ret 8
|
||||
|
||||
WinNT:
|
||||
;; Change the call address for next calls and call directly
|
||||
mov __imp__InitializeCriticalSectionAndSpinCount@8,eax
|
||||
jmp eax
|
||||
|
||||
|
||||
;; We should never end up here but if we do, fail the call
|
||||
FuncNotSupported:
|
||||
pop eax
|
||||
xor eax,eax
|
||||
ret 8
|
||||
|
||||
DownlevelInitializeCriticalSectionAndSpinCount endp
|
||||
|
||||
ENDIF
|
||||
|
||||
END
|
||||
@ -1,5 +0,0 @@
|
||||
[1]
|
||||
fat=0
|
||||
name="CE"
|
||||
cmd="DeviceEmulator.exe"
|
||||
para="..\ARMV4\WM65PPC.bin"
|
||||
@ -1,107 +0,0 @@
|
||||
|
||||
// menu2.cpp: 定义应用程序的类行为。
|
||||
//
|
||||
|
||||
#include "pch.h"
|
||||
#include "framework.h"
|
||||
#include "menu2.h"
|
||||
#include "menu2Dlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
|
||||
// Cmenu2App
|
||||
|
||||
BEGIN_MESSAGE_MAP(Cmenu2App, CWinApp)
|
||||
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// Cmenu2App 构造
|
||||
|
||||
Cmenu2App::Cmenu2App()
|
||||
{
|
||||
// 支持重新启动管理器
|
||||
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
|
||||
|
||||
// TODO: 在此处添加构造代码,
|
||||
// 将所有重要的初始化放置在 InitInstance 中
|
||||
}
|
||||
|
||||
|
||||
// 唯一的 Cmenu2App 对象
|
||||
|
||||
Cmenu2App theApp;
|
||||
|
||||
|
||||
// Cmenu2App 初始化
|
||||
|
||||
BOOL Cmenu2App::InitInstance()
|
||||
{
|
||||
// 如果一个运行在 Windows XP 上的应用程序清单指定要
|
||||
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
|
||||
//则需要 InitCommonControlsEx()。 否则,将无法创建窗口。
|
||||
INITCOMMONCONTROLSEX InitCtrls;
|
||||
InitCtrls.dwSize = sizeof(InitCtrls);
|
||||
// 将它设置为包括所有要在应用程序中使用的
|
||||
// 公共控件类。
|
||||
InitCtrls.dwICC = ICC_WIN95_CLASSES;
|
||||
InitCommonControlsEx(&InitCtrls);
|
||||
|
||||
CWinApp::InitInstance();
|
||||
|
||||
|
||||
AfxEnableControlContainer();
|
||||
|
||||
// 创建 shell 管理器,以防对话框包含
|
||||
// 任何 shell 树视图控件或 shell 列表视图控件。
|
||||
CShellManager *pShellManager = new CShellManager;
|
||||
|
||||
// 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题
|
||||
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
|
||||
|
||||
// 标准初始化
|
||||
// 如果未使用这些功能并希望减小
|
||||
// 最终可执行文件的大小,则应移除下列
|
||||
// 不需要的特定初始化例程
|
||||
// 更改用于存储设置的注册表项
|
||||
// TODO: 应适当修改该字符串,
|
||||
// 例如修改为公司或组织名
|
||||
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
|
||||
|
||||
Cmenu2Dlg dlg;
|
||||
m_pMainWnd = &dlg;
|
||||
INT_PTR nResponse = dlg.DoModal();
|
||||
if (nResponse == IDOK)
|
||||
{
|
||||
// TODO: 在此放置处理何时用
|
||||
// “确定”来关闭对话框的代码
|
||||
}
|
||||
else if (nResponse == IDCANCEL)
|
||||
{
|
||||
// TODO: 在此放置处理何时用
|
||||
// “取消”来关闭对话框的代码
|
||||
}
|
||||
else if (nResponse == -1)
|
||||
{
|
||||
TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
|
||||
TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
|
||||
}
|
||||
|
||||
// 删除上面创建的 shell 管理器。
|
||||
if (pShellManager != nullptr)
|
||||
{
|
||||
delete pShellManager;
|
||||
}
|
||||
|
||||
#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS)
|
||||
ControlBarCleanUp();
|
||||
#endif
|
||||
|
||||
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
|
||||
// 而不是启动应用程序的消息泵。
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
|
||||
// menu2.h: PROJECT_NAME 应用程序的主头文件
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __AFXWIN_H__
|
||||
#error "include 'pch.h' before including this file for PCH"
|
||||
#endif
|
||||
|
||||
#include "resource.h" // 主符号
|
||||
|
||||
|
||||
// Cmenu2App:
|
||||
// 有关此类的实现,请参阅 menu2.cpp
|
||||
//
|
||||
|
||||
class Cmenu2App : public CWinApp
|
||||
{
|
||||
public:
|
||||
Cmenu2App();
|
||||
|
||||
// 重写
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
|
||||
// 实现
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
extern Cmenu2App theApp;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user