Compare commits

..

No commits in common. "484fc1b7380e91f623db50e810a7c0ce64800cfc" and "70f286022107e5e5ef7cf224918f583030fb027c" have entirely different histories.

8 changed files with 10 additions and 80 deletions

View File

@ -10,7 +10,7 @@
--- ---
# ✏️ 什么是 CE Collections # 什么是 CE Collections
CE Collections 集合了几乎所有基于 CE 内核的官方Windows版本例如 Windows CE Core,Windows Mobile,Windows Phone等的镜像和模拟器。 CE Collections 集合了几乎所有基于 CE 内核的官方Windows版本例如 Windows CE Core,Windows Mobile,Windows Phone等的镜像和模拟器。
镜像包括: 镜像包括:
@ -29,11 +29,11 @@ CE Collections 集合了几乎所有基于 CE 内核的官方Windows版本
1. 在插入光盘之前启动宿主操作系统NT4.0-Win11 1. 在插入光盘之前启动宿主操作系统NT4.0-Win11
2. 插入光盘并等待弹出菜单,如果没有,运行[CD(DVD)ROM]\WNT\Menu3.exe。 2. 插入光盘并等待弹出菜单,如果没有,运行[CD(DVD)ROM]\WNT\Menu3.exe。
3. 选择要启动的操作系统(模拟器)。注意,当使用不同的主机操作系统时,会有一些不同的限制。 3. 选择要启动的操作系统(模拟器)。注意,当使用不同的主机操作系统时,会有一些不同的限制。
<img src="./menuwnt.png" width="900px;" alt=""/>
- Windows NT 4.0 可用Shell Emulator这是Shell Emulator的最佳宿主操作系统。 - Windows NT 4.0 可用Shell Emulator这是Shell Emulator的最佳宿主操作系统。
- Windows 2000 - XP 可以Shell Emulatorx64宿主系统上不能运行Auto PC 1.0和ARM DeviceEmulator。 - Windows 2000 - XP 可以Shell Emulatorx64宿主系统上不能运行Auto PC 1.0和ARM DeviceEmulator。
- Windows 7 - 8.1 可用Shell EmulatorPocket PC 2000和x64宿主系统上的Auto PC 1.0除外ARM DeviceEmulator、XDE Emulator和Whitebox Emulator。 - Windows 7 - 8.1 可用Shell EmulatorPocket PC 2000和x64宿主系统上的Auto PC 1.0除外ARM DeviceEmulator、XDE Emulator和Whitebox Emulator。
- Windows 10 - 11 可用Shell EmulatorPocket PC 2000和x64宿主系统上的Auto PC 1.0除外ARM DeviceEmulator和Whitebox Emulator。 - Windows 10 - 11 可用Shell EmulatorPocket PC 2000和x64宿主系统上的Auto PC 1.0除外ARM DeviceEmulator和Whitebox Emulator。
<img src="./menuwnt.png" width="900px;" alt=""/>
4. 完成! 4. 完成!
## CEPC平台使用方法 ## CEPC平台使用方法
@ -50,68 +50,14 @@ CE Collections 集合了几乎所有基于 CE 内核的官方Windows版本
<img src="./menudos.png" width="800px;" alt=""/> <img src="./menudos.png" width="800px;" alt=""/>
3. 选择想使用的分辨率或确认启动。请注意,启动镜像有时存在一些限制。 3. 选择想使用的分辨率或确认启动。请注意,启动镜像有时存在一些限制。
- VGA8BPP显示驱动 - VGA8BPP显示驱动
<img src="./menudos2.png" width="800px;" alt=""/>
- 对于VMware、VBox、Qemu或其他现代虚拟机只能使用低分辨率模式。 - 对于VMware、VBox、Qemu或其他现代虚拟机只能使用低分辨率模式。
- 对于86Box PCem或实体机务必使用S3视频卡WinCE2.0使用S3Trio64其他版本使用S3Virge这样能开启高分辨率否则只能使用低分辨率。 - 对于86Box PCem或实体机务必使用S3视频卡WinCE2.0使用S3Trio64其他版本使用S3Virge这样能开启高分辨率否则只能使用低分辨率。
- Windows Mobile 的VESA显示驱动 - Windows Mobile 的VESA显示驱动
- 由于Windows Mobile显示为竖向有些显卡在遇到此分辨率时会显示错误发生这种情况时请尝试使用另一个分辨率。
<img src="./menudos2.png" width="800px;" alt=""/>
<img src="./menudos3.png" width="800px;" alt=""/> <img src="./menudos3.png" width="800px;" alt=""/>
- 由于Windows Mobile显示为竖向有些显卡在遇到此分辨率时会显示错误发生这种情况时请尝试使用另一个分辨率。
4. 完成! 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配置文件]
- 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 # ❓ QA
Q: 在 86Box 或 PCem 中无法引导光盘 Q: 在 86Box 或 PCem 中无法引导光盘
A: 请使用 7Zip 等压缩软件打开 ISO 文件,解压 [boot] 文件夹中的 img 文件,然后从软盘引导。 A: 请使用 7Zip 等压缩软件打开 ISO 文件,解压 [boot] 文件夹中的 img 文件,然后从软盘引导。
@ -135,7 +81,7 @@ Q: 你能把其他 Windows 系统集成进来吗?
A: 请看项目名称——答案自明。 A: 请看项目名称——答案自明。
# 🔨 本项目集成的 CE 镜像和模拟器 # 本项目集成的 CE 镜像和模拟器
| | | | CE-Collections Supporting | | | | | | | CE-Collections Supporting | | |
|---------------------------|---------|--------------|-----------------------------------|----------------------|----------------------| |---------------------------|---------|--------------|-----------------------------------|----------------------|----------------------|
@ -252,7 +198,7 @@ A: 请看项目名称——答案自明。
- DOS-LOGO: http://retro.timb.us/Documents/Software/DOS-LOGO.html - DOS-LOGO: http://retro.timb.us/Documents/Software/DOS-LOGO.html
- Whitebox: https://github.com/WindowsNT351/Whitebox - Whitebox: https://github.com/WindowsNT351/Whitebox
# ⚒️ SDK及其他相关工具下载 # 📥 SDK及其他相关工具下载
### Windows CE 1.x ### Windows CE 1.x
#### Windows CE 1.0x #### Windows CE 1.0x
[Microsoft Visual C++ For Windows CE Version 1.0](https://archive.org/details/msvcceu.100)<br /> [Microsoft Visual C++ For Windows CE Version 1.0](https://archive.org/details/msvcceu.100)<br />

Binary file not shown.

View File

@ -129,12 +129,12 @@ BEGIN
BEGIN BEGIN
VALUE "CompanyName", "351Workshop" VALUE "CompanyName", "351Workshop"
VALUE "FileDescription", "CE-Collections WinNT platform loader" VALUE "FileDescription", "CE-Collections WinNT platform loader"
VALUE "FileVersion", "2.02.RC1.02" VALUE "FileVersion", "2.02.RC1.01"
VALUE "InternalName", "menu3.exe" VALUE "InternalName", "menu3.exe"
VALUE "LegalCopyright", "Copyright 351Workshop 2022-2025" VALUE "LegalCopyright", "Copyright 351Workshop 2022-2025"
VALUE "OriginalFilename", "menu3.exe" VALUE "OriginalFilename", "menu3.exe"
VALUE "ProductName", "CE-Collections" VALUE "ProductName", "CE-Collections"
VALUE "ProductVersion", "2.02.RC1.02" VALUE "ProductVersion", "2.02.RC1.01"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"
@ -176,13 +176,6 @@ END
IDB_BITMAP1 BITMAP "res\\background.bmp" IDB_BITMAP1 BITMAP "res\\background.bmp"
IDB_BITMAP2 BITMAP "res\\about.bmp" IDB_BITMAP2 BITMAP "res\\about.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// Cursor
//
IDC_CURSOR1 CURSOR "res\\hand.cur"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// String Table // String Table

View File

@ -253,10 +253,6 @@
RelativePath=".\res\background.bmp" RelativePath=".\res\background.bmp"
> >
</File> </File>
<File
RelativePath=".\res\hand.cur"
>
</File>
<File <File
RelativePath=".\res\menu3.ico" RelativePath=".\res\menu3.ico"
> >

View File

@ -135,7 +135,7 @@ BOOL Cmenu3Dlg::OnInitDialog()
GetDlgItem(IDC_STATICBTN3)->GetWindowRect(&m_rectbtn3); GetDlgItem(IDC_STATICBTN3)->GetWindowRect(&m_rectbtn3);
ScreenToClient(&m_rectbtn3); ScreenToClient(&m_rectbtn3);
//SetWindowLong(m_hWnd, GWL_STYLE, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX); SetWindowLong(m_hWnd, GWL_STYLE, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX);
int iNodeNum = GetPrivateProfileInt(L"0", L"nodeNum", 255, lpPath); int iNodeNum = GetPrivateProfileInt(L"0", L"nodeNum", 255, lpPath);
treeStr = new HTREEITEM[iNodeNum](); treeStr = new HTREEITEM[iNodeNum]();
@ -306,10 +306,7 @@ void Cmenu3Dlg::OnMouseMove(UINT nFlags, CPoint point)
{ {
HCURSOR hCursor; HCURSOR hCursor;
hCursor = ::LoadCursor ( NULL, IDC_HAND ); hCursor = ::LoadCursor ( NULL, IDC_HAND );
if(hCursor == NULL)
hCursor = LoadCursor ( AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDC_CURSOR1) );
::SetCursor ( hCursor ); ::SetCursor ( hCursor );
Sleep(10);
} }
CDialog::OnMouseMove(nFlags, point); CDialog::OnMouseMove(nFlags, point);
} }

View File

@ -41,5 +41,4 @@ public:
CRect m_rectbtn2; CRect m_rectbtn2;
CRect m_rectbtn3; CRect m_rectbtn3;
afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
}; };

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

View File

@ -9,7 +9,6 @@
#define IDR_MAINFRAME 128 #define IDR_MAINFRAME 128
#define IDB_BITMAP1 129 #define IDB_BITMAP1 129
#define IDB_BITMAP2 130 #define IDB_BITMAP2 130
#define IDC_CURSOR1 131
#define IDC_TREE1 1000 #define IDC_TREE1 1000
#define IDC_EDIT1 1005 #define IDC_EDIT1 1005
#define IDC_STATICBTN1 1009 #define IDC_STATICBTN1 1009
@ -21,7 +20,7 @@
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 132 #define _APS_NEXT_RESOURCE_VALUE 131
#define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1013 #define _APS_NEXT_CONTROL_VALUE 1013
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101