# 使用 Sunshine、Moonlight 和 Virtual-Display-Driver 将闲置设备变为 Windows 扩展屏


## 🧰 工具简介

### I. **Sunshine**

- **GitHub 地址**: [https://github.com/LizardByte/Sunshine](https://github.com/LizardByte/Sunshine)
- **功能**: Sunshine 是一个开源的游戏串流服务器，允许你将 PC 上的画面串流到其他设备。
- **安装位置**: 安装在你要作为“主控电脑”的 Windows 主机上。

### II. **Moonlight**

### 官方版

- **官网地址**: [https://moonlight-stream.org/](https://moonlight-stream.org/)
- **功能**: Moonlight 是一个支持多平台的串流客户端，可以在 Android、iOS、Linux、macOS 等设备上运行，接收 Sunshine 串流的画面。
- **安装位置**: 安装在你想用作“扩展屏幕”的闲置设备上。

### Fork

- **GitHub 地址**: [https://github.com/ClassicOldSong/moonlight-android/](https://github.com/ClassicOldSong/moonlight-android/)
- **功能**: Moonlight 是一个支持多平台的串流客户端，可以在 Android、iOS、Linux、macOS 等设备上运行，接收 Sunshine 串流的画面，相较于官方版有更多功能、尤其是支持原生 Touch Passthrough。
- **安装位置**: 安装在你想用作“扩展屏幕”的闲置设备上。

### III. **Virtual-Display-Driver (VDD)**

- **GitHub 地址**: [https://github.com/VirtualDrivers/Virtual-Display-Driver](https://github.com/VirtualDrivers/Virtual-Display-Driver)
- **功能**: 创建一个虚拟显示器，让系统认为连接了一个真实的显示器，从而实现软件级的扩展屏功能。
- **安装位置**: 安装在 Windows 主机上，用于创建虚拟显示输出。

---

## 📌 实现原理简述

通过以下方式实现：

1. 使用 **Virtual-Display-Driver** 在 Windows 上创建一个虚拟显示器。
2. 将该虚拟显示器设置为“扩展桌面”。
3. 使用 **Sunshine** 将该虚拟显示器的画面进行编码并串流出去。
4. 在作为扩展屏的设备上使用 **Moonlight** 接收串流画面，并全屏播放。

---

## ✅ 准备工作

- 一台运行 Windows 的主机(建议 Win10 或 Win11)
- 一台作为扩展屏的设备(如 Android 手机、平板、另一台电脑等)
- 同一局域网环境
- 下载上方提到的 3 个工具

---

## 🛠️ 操作步骤

### I. 安装 Virtual-Display-Driver

1. 下载项目 Release 中的 `Virtual.Display.Driver-vxxx-setup-x64.exe` 并安装。
2. 【可选】配置虚拟屏幕的分辨率匹配扩展屏设备
   1. 编辑 `"C:\VirtualDisplayDriver\vdd_settings.xml"`
   2. 在 `<resolutions></resolutions>` 中添加配置，例如

      ```xml
      <resolutions>
        ...
        <resolution>
            <width>2880</width>
            <height>1920</height>
            <refresh_rate>30</refresh_rate>
        </resolution>
      </resolutions>
      ```

   3. 在 `VDD Control` 中重启 Restart Drivers
      ![VDD Control](vdd-control.png)
      **如果 Driver 正确关闭但无法自动重启，可以在系统的设备管理器中手动启动设备**
      ![设备管理器](设备管理器.png)
   4. 在系统屏幕设置中配置虚拟屏幕的分辨率和刷新率

### II. 配置 Sunshine

1. 安装 Sunshine 程序
2. 首次启动会引导你进行初始配置，选择语言后进入配对界面。
3. 进入 Sunshine 的 Web UI(默认地址是 `https://localhost:47990`)
4. 打开 Web UI 的**故障排查**页面
5. 在页面中搜索 `Currently available display devices` 即可找到虚拟屏幕的 `device_id`
6. 在 **Settings > Audio/Video > 输出名称** 中填写找到的 `device_id`
7. 保存后点击应用重启 Sunshine

### III. 配置 Moonlight

1. 在设备上安装 Moonlight 应用
2. 打开应用后，它会自动搜索局域网中的 Sunshine 服务器
3. 如果发现成功，点击配对按钮并输入 PIN 码
4. 开始串流，此时你应该能看到 Windows 主机的扩展桌面画面。


---

> 作者: Nite  
> URL: https://www.nite07.com/zh-cn/posts/extended-screen/  

